adding build and packaging for btcwallet.

This commit is contained in:
greg stone
2023-02-03 18:05:23 +00:00
parent fea895a11b
commit 2da6987140
7 changed files with 203 additions and 61 deletions

View File

@@ -1,7 +1,6 @@
package main
import (
"github.com/docker/docker/api/types"
"github.com/indra-labs/indra/pkg/docker"
)
@@ -31,27 +30,48 @@ var buildConfigurations = []docker.BuildConfiguration{
// 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 + "/" + "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",

View File

@@ -1,7 +1,6 @@
package main
import (
"github.com/docker/docker/api/types"
"github.com/indra-labs/indra/pkg/docker"
)
@@ -30,26 +29,46 @@ var packagingConfigurations = []docker.BuildConfiguration{
// 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 + "/" + "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",

View File

@@ -25,6 +25,25 @@ var sourceConfigurations = []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{

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

@@ -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 btcd:btcd
# Set the data volumes
#VOLUME ["/etc/btcd"]
#VOLUME ["/var/btcd"]
# :8332 btcwallet RPC port
EXPOSE 8332
ENTRYPOINT ["/bin/btcwallet"]

View File

@@ -1,3 +1,4 @@
# ---
# Build Process
# ---
@@ -8,15 +9,13 @@ FROM indralabs/scratch:latest as scratch
FROM ${sourcing_image} as source
ARG source_url="https://github.com/btcsuite/btcd/releases/download"
ARG source_version="v0.23.3"
ARG source_url="https://github.com/btcsuite/btcwallet"
ARG source_version="v0.16.5"
WORKDIR /tmp
RUN set -ex echo "downloading source and binaries with manifest and signature." \
&& wget ${source_url}/${source_version}/manifest-${source_version}.txt \
&& wget ${source_url}/${source_version}/manifest-guggero-${source_version}.sig \
&& wget ${source_url}/${source_version}/btcd-source-${source_version}.tar.gz
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
@@ -24,23 +23,30 @@ COPY --from=scratch /etc/btcd/keys/guggero.asc /tmp/guggero.asc
RUN set -ex echo "importing keys" \
&& cat guggero.asc | gpg --import
RUN set -ex echo "running signature verification on manifest" \
&& gpg --verify manifest-guggero-${source_version}.sig manifest-${source_version}.txt
WORKDIR /tmp/btcwallet
RUN set -ex echo "verifying checksum on btcd-source-${source_version}.tar.gz" \
&& cat manifest-${source_version}.txt | grep btcd-source-${source_version}.tar.gz | shasum -a 256 -c
RUN set -ex echo "checking out tag" \
&& git checkout -b ${source_version}
RUN set -ex echo "untarring binaries and source code" \
&& mv btcd-source-${source_version}.tar.gz /tmp/btcd-source.tar.gz \
&& mkdir -pv /tmp/btcd-source \
&& tar -xzvf btcd-source.tar.gz --directory /tmp/btcd-source
RUN set -ex echo "running signature verification on tag" \
&& git verify-tag ${source_version}
WORKDIR /tmp/btcd-source
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/btcd-source /source
COPY --from=source /tmp/btcd-source.tar.gz /source.tar.gz
COPY --from=source /tmp/btcwallet-source /source
COPY --from=source /tmp/btcwallet-source.tar.gz /source.tar.gz

3
release/.gitignore vendored
View File

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