Merge remote-tracking branch 'origin/distro' into protocol

# Conflicts:
#	cmd/docker/release/builds.go
#	cmd/docker/release/packaging.go
#	cmd/docker/release/sources.go
This commit is contained in:
херетик
2023-02-05 17:59:06 +00:00
16 changed files with 321 additions and 72 deletions

View File

@@ -1,8 +1,7 @@
package main
import (
"git-indra.lan/indra-labs/indra/pkg/docker"
"github.com/docker/docker/api/types"
"github.com/indra-labs/indra/pkg/docker"
)
var (
@@ -10,7 +9,7 @@ var (
)
var buildConfigurations = []docker.BuildConfiguration{
// docker.BuildConfiguration{
//docker.BuildConfiguration{
// Name: defaultRepositoryName + "/" + "btcd-build",
// ContextFilePath: "/tmp/btcd-build.tar",
// BuildOpts: types.ImageBuildOptions{
@@ -30,29 +29,50 @@ var buildConfigurations = []docker.BuildConfiguration{
// ForceRemove: true,
// PullParent: false,
// },
// },
docker.BuildConfiguration{
Name: defaultRepositoryName + "/" + "lnd-build",
ContextFilePath: "/tmp/lnd-build.tar",
BuildOpts: types.ImageBuildOptions{
Dockerfile: "docker/build/build.Dockerfile",
Tags: []string{
"v0.15.5-beta",
},
BuildArgs: map[string]*string{
"source_image": strPtr("indralabs/lnd-source"),
"source_version": strPtr("v0.15.5-beta"),
"builder_image": strPtr(defaultBuilderContainer),
"target_name": strPtr("lnd"),
"target_build_script": strPtr("docker/build/targets/lnd.sh"),
},
SuppressOutput: false,
Remove: true,
ForceRemove: true,
PullParent: false,
},
},
// docker.BuildConfiguration{
//},
//docker.BuildConfiguration{
// Name: defaultRepositoryName + "/" + "btcwallet-build",
// ContextFilePath: "/tmp/btcwallet-build.tar",
// BuildOpts: types.ImageBuildOptions{
// Dockerfile: "docker/build/build.Dockerfile",
// Tags: []string{
// "v0.16.5",
// },
// BuildArgs: map[string]*string{
// "source_image": strPtr("indralabs/btcwallet-source"),
// "source_version": strPtr("v0.16.5"),
// "builder_image": strPtr(defaultBuilderContainer),
// "target_name": strPtr("btcwallet"),
// "target_build_script": strPtr("docker/build/targets/btcwallet.sh"),
// },
// SuppressOutput: false,
// Remove: true,
// ForceRemove: true,
// PullParent: false,
// },
//},
//docker.BuildConfiguration{
// Name: defaultRepositoryName + "/" + "lnd-build",
// ContextFilePath: "/tmp/lnd-build.tar",
// BuildOpts: types.ImageBuildOptions{
// Dockerfile: "docker/build/build.Dockerfile",
// Tags: []string{
// "v0.15.5-beta",
// },
// BuildArgs: map[string]*string{
// "source_image": strPtr("indralabs/lnd-source"),
// "source_version": strPtr("v0.15.5-beta"),
// "builder_image": strPtr(defaultBuilderContainer),
// "target_name": strPtr("lnd"),
// "target_build_script": strPtr("docker/build/targets/lnd.sh"),
// },
// SuppressOutput: false,
// Remove: true,
// ForceRemove: true,
// PullParent: false,
// },
//},
//docker.BuildConfiguration{
// Name: defaultRepositoryName + "/" + "indra-build",
// ContextFilePath: "/tmp/indra-build.tar",
// BuildOpts: types.ImageBuildOptions{
@@ -72,5 +92,5 @@ var buildConfigurations = []docker.BuildConfiguration{
// ForceRemove: true,
// PullParent: false,
// },
// },
//},
}

View File

@@ -1,8 +1,7 @@
package main
import (
"git-indra.lan/indra-labs/indra/pkg/docker"
"github.com/docker/docker/api/types"
"github.com/indra-labs/indra/pkg/docker"
)
var (
@@ -10,7 +9,7 @@ var (
)
var packagingConfigurations = []docker.BuildConfiguration{
// docker.BuildConfiguration{
//docker.BuildConfiguration{
// Name: defaultRepositoryName + "/" + "btcd-package",
// ContextFilePath: "/tmp/btcd-package.tar",
// BuildOpts: types.ImageBuildOptions{
@@ -29,28 +28,48 @@ var packagingConfigurations = []docker.BuildConfiguration{
// ForceRemove: true,
// PullParent: false,
// },
// },
docker.BuildConfiguration{
Name: defaultRepositoryName + "/" + "lnd-package",
ContextFilePath: "/tmp/lnd-package.tar",
BuildOpts: types.ImageBuildOptions{
Dockerfile: "docker/build/package.Dockerfile",
Tags: []string{
"v0.15.5-beta",
},
BuildArgs: map[string]*string{
"binaries_image": strPtr("indralabs/lnd-build"),
"binaries_version": strPtr("v0.15.5-beta"),
"packaging_image": strPtr(defaultPackagingContainer),
"target_name": strPtr("lnd"),
},
SuppressOutput: false,
Remove: true,
ForceRemove: true,
PullParent: false,
},
},
// docker.BuildConfiguration{
//},
//docker.BuildConfiguration{
// Name: defaultRepositoryName + "/" + "btcwallet-package",
// ContextFilePath: "/tmp/btcwallet-package.tar",
// BuildOpts: types.ImageBuildOptions{
// Dockerfile: "docker/build/package.Dockerfile",
// Tags: []string{
// "v0.16.5",
// },
// BuildArgs: map[string]*string{
// "binaries_image": strPtr("indralabs/btcwallet-build"),
// "binaries_version": strPtr("v0.16.5"),
// "packaging_image": strPtr(defaultPackagingContainer),
// "target_name": strPtr("btcwallet"),
// },
// SuppressOutput: false,
// Remove: true,
// ForceRemove: true,
// PullParent: false,
// },
//},
//docker.BuildConfiguration{
// Name: defaultRepositoryName + "/" + "lnd-package",
// ContextFilePath: "/tmp/lnd-package.tar",
// BuildOpts: types.ImageBuildOptions{
// Dockerfile: "docker/build/package.Dockerfile",
// Tags: []string{
// "v0.15.5-beta",
// },
// BuildArgs: map[string]*string{
// "binaries_image": strPtr("indralabs/lnd-build"),
// "binaries_version": strPtr("v0.15.5-beta"),
// "packaging_image": strPtr(defaultPackagingContainer),
// "target_name": strPtr("lnd"),
// },
// SuppressOutput: false,
// Remove: true,
// ForceRemove: true,
// PullParent: false,
// },
//},
//docker.BuildConfiguration{
// Name: defaultRepositoryName + "/" + "indra-package",
// ContextFilePath: "/tmp/indra-package.tar",
// BuildOpts: types.ImageBuildOptions{
@@ -69,5 +88,5 @@ var packagingConfigurations = []docker.BuildConfiguration{
// ForceRemove: true,
// PullParent: false,
// },
// },
//},
}

View File

@@ -1,11 +1,11 @@
package main
import (
"git-indra.lan/indra-labs/indra/pkg/docker"
"github.com/indra-labs/indra/pkg/docker"
)
var sourceConfigurations = []docker.BuildConfiguration{
// docker.BuildConfiguration{
//docker.BuildConfiguration{
// Name: defaultRepositoryName + "/" + "btcd-source",
// ContextFilePath: "/tmp/btcd-source.tar",
// BuildOpts: types.ImageBuildOptions{
@@ -23,8 +23,27 @@ var sourceConfigurations = []docker.BuildConfiguration{
// ForceRemove: true,
// PullParent: false,
// },
// },
// docker.BuildConfiguration{
//},
//docker.BuildConfiguration{
// Name: defaultRepositoryName + "/" + "btcwallet-source",
// ContextFilePath: "/tmp/btcwallet-source.tar",
// BuildOpts: types.ImageBuildOptions{
// Dockerfile: "docker/sources/btcwallet/official.Dockerfile",
// Tags: []string{
// "v0.16.5",
// },
// BuildArgs: map[string]*string{
// "sourcing_image": strPtr(defaultBuilderContainer),
// "source_url": strPtr("https://github.com/btcsuite/btcwallet"),
// "source_version": strPtr("v0.16.5"),
// },
// SuppressOutput: false,
// Remove: true,
// ForceRemove: true,
// PullParent: false,
// },
//},
//docker.BuildConfiguration{
// Name: defaultRepositoryName + "/" + "lnd-source",
// ContextFilePath: "/tmp/lnd-source.tar",
// BuildOpts: types.ImageBuildOptions{
@@ -42,8 +61,8 @@ var sourceConfigurations = []docker.BuildConfiguration{
// ForceRemove: true,
// PullParent: false,
// },
// },
// docker.BuildConfiguration{
//},
//docker.BuildConfiguration{
// Name: defaultRepositoryName + "/" + "indra-source",
// ContextFilePath: "/tmp/indra-source-local.tar",
// BuildOpts: types.ImageBuildOptions{
@@ -59,8 +78,8 @@ var sourceConfigurations = []docker.BuildConfiguration{
// ForceRemove: true,
// PullParent: false,
// },
// },
// docker.BuildConfiguration{
//},
//docker.BuildConfiguration{
// Name: defaultRepositoryName + "/" + "indra-source",
// ContextFilePath: "/tmp/indra-source.tar",
// BuildOpts: types.ImageBuildOptions{
@@ -70,7 +89,7 @@ var sourceConfigurations = []docker.BuildConfiguration{
// },
// BuildArgs: map[string]*string{
// "sourcing_image": strPtr(defaultBuilderContainer),
// "source_release_url_prefix": strPtr("https://git-indra.lan/indra-labs/indra/releases/download"),
// "source_release_url_prefix": strPtr("https://github.com/indra-labs/indra/releases/download"),
// "source_version": strPtr("v0.1.10"),
// },
// SuppressOutput: false,
@@ -78,5 +97,5 @@ var sourceConfigurations = []docker.BuildConfiguration{
// ForceRemove: true,
// PullParent: false,
// },
// },
//},
}

View File

@@ -0,0 +1,51 @@
#!/bin/bash
NAME="btcwallet"
PLATFORMS=(
"linux/386"
"linux/amd64"
"linux/arm/v5"
"linux/arm/v6"
"linux/arm/v7"
"linux/arm64"
# "linux/loong64"
"linux/mips"
"linux/mips64"
"linux/mips64le"
"linux/mipsle"
"linux/ppc64"
"linux/ppc64le"
# "linux/riscv64"
"linux/s390x"
)
#PLATFORMS=(
# "linux/amd64"
# "linux/arm64"
# "linux/arm/v7"
#)
# C bad
export CGO_ENABLED=0
# BUIDL LOOP
for i in "${PLATFORMS[@]}"; do
OS=$(echo $i | cut -f1 -d/)
ARCH=$(echo $i | cut -f2 -d/)
ARM=$(echo $i | cut -f3 -d/)
ARM_VARIANT=""
if [ "$ARM" != "" ]; then
ARM_VARIANT="-${ARM}"
fi
echo "running build for $OS-$ARCH$ARM_VARIANT"
GOOS=$OS GOARCH=$ARCH GOARM=$(echo $ARM | cut -f1 -dv) go build --ldflags '-w -s' \
-o /tmp/$NAME-${source_version}/bin/$OS-$ARCH$ARM_VARIANT/btcwallet .
done

View File

@@ -14,6 +14,14 @@ DOCKERFILES=$(find ./docker/release/targets/$TARGET_NAME -maxdepth 1 -type f -in
PLATFORMS=$(find release/$TARGET_NAME-$TARGET_TAG/bin -type d | grep -oP "(^.*/bin/\K).*" | cut -f1 -d/)
if [ -z "${RELEASE}" ]; then
PLATFORMS=(
"linux-amd64"
"linux-arm64"
"linux-arm-v7"
)
fi
echo "-- assembling images for package ${TARGET_NAME}-${TARGET_TAG}"
for DOCKERFILE in $DOCKERFILES; do

View File

@@ -20,4 +20,4 @@ USER btcd:btcd
#VOLUME ["/etc/btcd"]
#VOLUME ["/var/btcd"]
ENTRYPOINT ["/bin/btcctl", "--configfile=/etc/btcd/btcd.conf"]
ENTRYPOINT ["/bin/btcctl", "--configfile=/dev/null", "--rpccert=/etc/btcd/keys/rpc.cert"]

View File

@@ -25,4 +25,4 @@ USER btcd:btcd
# :8334 btcd RPC port
EXPOSE 8333 8334
ENTRYPOINT ["/bin/btcd", "--configfile=/etc/btcd/btcd.conf"]
ENTRYPOINT ["/bin/btcd", "--configfile=/etc/btcd/btcd.conf", "--datadir=/var/btcd"]

View File

@@ -1,7 +1,7 @@
version: '3'
services:
btcd:
image: indralabs/btcd
image: indralabs/btcd-multi-arch:linux-amd64-dev
volumes:
- config:/etc/btcd
- data:/var/btcd
@@ -9,26 +9,46 @@ services:
indranet:
ipv4_address: 172.16.42.2
command:
- "--listen=0.0.0.0:8333"
- "--rpclisten=0.0.0.0:8334"
- "--rpcuser=simnet"
- "--rpcpass=simnet"
- "--simnet"
- "--txindex"
- "--miningaddr=Sbw7oopnxsVkrJpox4HUrevwYsiFaLgWRW"
btcwallet:
image: indralabs/btcwallet-multi-arch:linux-amd64-dev
volumes:
- config:/etc/btcd:ro
- btcwallet_config:/etc/btcwallet
- btcwallet_data:/var/btcwallet
networks:
indranet:
ipv4_address: 172.16.42.3
command:
- "--simnet"
- "--rpcconnect=172.16.42.2:8334"
- "--username=simnet"
- "--password=simnet"
btcctl:
image: indralabs/btcctl
image: indralabs/btcctl-multi-arch:linux-amd64-dev
volumes:
- config:/etc/btcd:ro
networks:
indranet:
depends_on:
- btcd
- btcwallet
command:
- "--rpcserver=172.16.42.2:8333"
- "--rpcserver=172.16.42.2:8334"
- "--rpcuser=simnet"
- "--rpcpass=simnet"
- "--simnet"
- "getinfo"
- "generate 1"
volumes:
config:
data:
btcwallet_config:
btcwallet_data:
networks:
indranet:
driver: bridge

View File

@@ -0,0 +1,10 @@
#!/bin/bash
docker run --rm -it --network=btcd_indranet \
--volume=btcd_config:/etc/btcd:ro \
--entrypoint="/bin/btcctl" \
indralabs/btcctl:dev \
-C /etc/btcd/btcctl.conf \
--rpcserver=172.16.42.2:8334 \
--rpcuser=simnet --rpcpass=simnet \
--simnet $@

View File

@@ -0,0 +1,10 @@
#!/bin/bash
docker run --rm -it --network=btcd_indranet \  ✔
--volume=btcd_btcwallet_config:/etc/btcwallet:ro \
--volume=btcd_btcwallet_data:/var/btcwallet \
indralabs/btcctl-multi-arch:linux-amd64-dev \
--configfile=/dev/null \
--rpcserver=172.16.42.3:8332 --rpccert=/etc/btcwallet/rpc.cert \
--rpcuser=simnet --rpcpass=simnet \
--simnet --wallet $@

View File

@@ -0,0 +1,26 @@
# ---
# Target Configuration
# ---
ARG scratch_version="latest"
FROM indralabs/scratch-multi-arch:${scratch_version}
ARG platform
ARG version
## We can't use 'COPY --from=...' here. Using ADD will enable multi-architecture releases
ADD ./release/btcwallet-${version}/bin/${platform}/btcwallet /bin
# Enable the btcd user
USER btcwallet:btcwallet
# Set the data volumes
#VOLUME ["/etc/btcd"]
#VOLUME ["/var/btcd"]
# :8332 btcwallet RPC port
EXPOSE 8332
ENTRYPOINT ["/bin/btcwallet", "--configfile=/dev/null", "--appdata=/var/btcwallet", "--logdir=/var/btcwallet", "--cafile=/etc/btcd/keys/rpc.cert", "--rpckey=/etc/btcwallet/rpc.key", "--rpccert=/etc/btcwallet/rpc.cert", "--rpclisten=0.0.0.0:8332"]

View File

@@ -12,7 +12,7 @@
; environment variables are typically %VARIABLE%, but they must be accessed with
; $VARIABLE here. Also, ~ is expanded to $LOCALAPPDATA on Windows.
datadir=/var/btcd
;datadir=/var/btcd
logdir=/var/btcd

View File

@@ -22,8 +22,11 @@ RUN set -ex && echo "checking root filesystem" \
##
RUN set -ex && echo "adding users and groups" \
&& echo "btcwallet:*:::::::" >> /etc/shadow \
&& echo "btcwallet:x:8332:" >> /etc/group \
&& echo "btcwallet:x:8332:8332:btcwallet:/var/btcwallet:/sbin/false" >> /etc/passwd \
&& echo "btcd:*:::::::" >> /etc/shadow \
&& echo "btcd:x:8333:" >> /etc/group \
&& echo "btcd:x:8333:btcwallet" >> /etc/group \
&& echo "btcd:x:8333:8333:btcd:/var/btcd:/sbin/false" >> /etc/passwd \
&& echo "lnd:*:::::::" >> /etc/shadow \
&& echo "lnd:x:9735:" >> /etc/group \
@@ -54,6 +57,7 @@ RUN set -ex && echo "checking users and groups to root filesystem" \
##
RUN set -ex && echo "adding and permissioning /etc directories" \
&& mkdir -pv /etc/btcwallet && chmod 755 /etc/btcwallet && chown btcwallet:btcwallet /etc/btcwallet \
&& mkdir -pv /etc/btcd && chmod 755 /etc/btcd \
&& mkdir -pv /etc/btcd/keys && chmod 750 /etc/btcd/keys && chown btcd:btcd /etc/btcd/keys \
&& mkdir -pv /etc/lnd && chmod 755 /etc/lnd \
@@ -84,6 +88,7 @@ RUN set -ex & echo "adding default .conf files" \
&& chmod 755 lnd.conf && mv lnd.conf /etc/lnd
RUN set -ex && echo "copying /etc directories to root filesystem" \
&& cp -rp /etc/btcwallet /tmp/root-fs/etc/btcwallet \
&& cp -rp /etc/btcd /tmp/root-fs/etc/btcd \
&& cp -rp /etc/lnd /tmp/root-fs/etc/lnd \
&& cp -rp /etc/indra /tmp/root-fs/etc/indra
@@ -91,6 +96,7 @@ RUN set -ex && echo "copying /etc directories to root filesystem" \
# DEBUG
RUN set -ex && echo "checking /etc directories on root filesystem" \
&& ls -hal /tmp/root-fs/etc \
&& ls -hal /tmp/root-fs/etc/btcwallet \
&& ls -hal /tmp/root-fs/etc/btcd \
&& ls -hal /tmp/root-fs/etc/btcd/keys \
&& ls -hal /tmp/root-fs/etc/lnd \
@@ -98,6 +104,8 @@ RUN set -ex && echo "checking /etc directories on root filesystem" \
&& ls -hal /tmp/root-fs/etc/indra
RUN set -ex && echo "adding and permissioning /var directories" \
&& mkdir -pv /var/btcwallet && chmod 750 /var/btcwallet && chown btcwallet:btcwallet /var/btcwallet \
&& mkdir -pv /var/btcwallet/.btcwallet && chmod 750 /var/btcwallet/.btcwallet && chown btcwallet:btcwallet /var/btcwallet/.btcwallet \
&& mkdir -pv /var/btcd && chmod 750 /var/btcd && chown btcd:btcd /var/btcd \
&& mkdir -pv /var/btcd/.btcd && chmod 750 /var/btcd/.btcd && chown btcd:btcd /var/btcd/.btcd \
&& mkdir -pv /var/lnd && chmod 750 /var/lnd && chown lnd:lnd /var/lnd \
@@ -105,6 +113,7 @@ RUN set -ex && echo "adding and permissioning /var directories" \
&& mkdir -pv /var/indra && chmod 750 /var/indra && chown indra:indra /var/indra
RUN set -ex && echo "copying /var directories to root filesystem" \
&& cp -rp /var/btcwallet /tmp/root-fs/var/btcwallet \
&& cp -rp /var/btcd /tmp/root-fs/var/btcd \
&& cp -rp /var/lnd /tmp/root-fs/var/lnd \
&& cp -rp /var/indra /tmp/root-fs/var/indra
@@ -112,6 +121,8 @@ RUN set -ex && echo "copying /var directories to root filesystem" \
# DEBUG
RUN set -ex && echo "checking /var directories on root filesystem" \
&& ls -hal /tmp/root-fs/var \
&& ls -hal /tmp/root-fs/var/btcwallet \
&& ls -hal /tmp/root-fs/var/btcwallet/.btcwallet \
&& ls -hal /tmp/root-fs/var/btcd \
&& ls -hal /tmp/root-fs/var/btcd/.btcd \
&& ls -hal /tmp/root-fs/var/lnd \

View File

@@ -20,6 +20,7 @@ services:
- "--rpcuser=simnet"
- "--rpcpass=simnet"
- "--simnet"
- "--txindex"
seed0:
sysctls:
- "net.ipv6.conf.all.disable_ipv6=0"

View File

@@ -0,0 +1,52 @@
# ---
# Build Process
# ---
ARG sourcing_image="golang"
FROM indralabs/scratch:latest as scratch
FROM ${sourcing_image} as source
ARG source_url="https://github.com/btcsuite/btcwallet"
ARG source_version="v0.16.5"
WORKDIR /tmp
RUN set -ex echo "downloading source" \
&& git clone ${source_url}
# Importing keys from scratch
COPY --from=scratch /etc/btcd/keys/guggero.asc /tmp/guggero.asc
RUN set -ex echo "importing keys" \
&& cat guggero.asc | gpg --import
WORKDIR /tmp/btcwallet
RUN set -ex echo "checking out tag" \
&& git checkout -b ${source_version}
RUN set -ex echo "running signature verification on tag" \
&& git verify-tag ${source_version}
RUN set -ex "archiving indra source files" \
&& git archive --format=tar.gz -o /tmp/btcwallet-source.tar.gz ${source_version}
WORKDIR /tmp
RUN set -ex echo "untarring archived source code" \
&& rm -rf btcwallet \
&& mkdir -pv btcwallet-source \
&& tar -xzvf btcwallet-source.tar.gz --directory btcwallet-source
WORKDIR /tmp/btcwallet-source
RUN set -ex echo "downloading modules" \
&& go mod vendor
FROM scratch
COPY --from=source /tmp/btcwallet-source /source
COPY --from=source /tmp/btcwallet-source.tar.gz /source.tar.gz

2
release/.gitignore vendored
View File

@@ -1,3 +1,5 @@
scratch-*
btcd-*
lnd-*
indra-*
btcwallet-*