refactoring btcd
This commit is contained in:
@@ -34,27 +34,45 @@ var (
|
||||
func strPtr(str string) *string { return &str }
|
||||
|
||||
var buildConfigurations = []docker.BuildConfiguration{
|
||||
//docker.BuildConfiguration{
|
||||
// Name: defaultRepositoryName + "/" + "btcd-base",
|
||||
// ContextFilePath: "/tmp/btcd-base.tar",
|
||||
// BuildOpts: types.ImageBuildOptions{
|
||||
// Dockerfile: "docker/btcd/base.Dockerfile",
|
||||
// Tags: []string{
|
||||
// "v0.23.3",
|
||||
// "latest",
|
||||
// },
|
||||
// BuildArgs: map[string]*string{
|
||||
// "builder_image": strPtr(defaultBuildContainer),
|
||||
// "source_release_url_prefix": strPtr("https://github.com/btcsuite/btcd"),
|
||||
// "target_os": strPtr("linux"),
|
||||
// "target_platform": strPtr("amd64"),
|
||||
// "target_version": strPtr("v0.23.3"),
|
||||
// },
|
||||
// SuppressOutput: false,
|
||||
// Remove: false,
|
||||
// ForceRemove: false,
|
||||
// PullParent: false,
|
||||
// },
|
||||
//},
|
||||
docker.BuildConfiguration{
|
||||
Name: defaultRepositoryName + "/" + "btcd",
|
||||
ContextFilePath: "/tmp/btcd.tar",
|
||||
BuildOpts: types.ImageBuildOptions{
|
||||
Dockerfile: "docker/btcd/btcd.Dockerfile",
|
||||
Tags: []string{
|
||||
"v0.23.4",
|
||||
"v0.23.3",
|
||||
"latest",
|
||||
},
|
||||
BuildArgs: map[string]*string{
|
||||
"base_image": strPtr(defaultBuildContainer),
|
||||
"target_image": strPtr("indralabs/scratch:latest"),
|
||||
// This argument is the tag fetched by git
|
||||
// It MUST be updated alongside the tag above
|
||||
"git_repository": strPtr("github.com/btcsuite/btcd"),
|
||||
"git_tag": strPtr("v0.23.4"),
|
||||
"btcd_version": strPtr("v0.23.3"),
|
||||
"scratch_version": strPtr("latest"),
|
||||
},
|
||||
SuppressOutput: false,
|
||||
Remove: true,
|
||||
ForceRemove: true,
|
||||
PullParent: true,
|
||||
Remove: false,
|
||||
ForceRemove: false,
|
||||
PullParent: false,
|
||||
},
|
||||
},
|
||||
docker.BuildConfiguration{
|
||||
@@ -67,11 +85,12 @@ var buildConfigurations = []docker.BuildConfiguration{
|
||||
"latest",
|
||||
},
|
||||
BuildArgs: map[string]*string{
|
||||
"semver": strPtr("v0.23.4"),
|
||||
"btcd_version": strPtr("v0.23.3"),
|
||||
"scratch_version": strPtr("latest"),
|
||||
},
|
||||
SuppressOutput: false,
|
||||
Remove: true,
|
||||
ForceRemove: true,
|
||||
Remove: false,
|
||||
ForceRemove: false,
|
||||
PullParent: false,
|
||||
},
|
||||
},
|
||||
|
||||
61
docker/btcd/base.Dockerfile
Normal file
61
docker/btcd/base.Dockerfile
Normal file
@@ -0,0 +1,61 @@
|
||||
|
||||
# ---
|
||||
# Build Process
|
||||
# ---
|
||||
|
||||
ARG builder_image="golang"
|
||||
|
||||
FROM indralabs/scratch:latest as config
|
||||
|
||||
FROM ${builder_image} AS builder
|
||||
|
||||
ARG source_release_url_prefix="https://github.com/btcsuite/btcd"
|
||||
|
||||
ARG target_os="linux"
|
||||
ARG target_platform="amd64"
|
||||
ARG target_version="v0.23.3"
|
||||
|
||||
WORKDIR /tmp
|
||||
|
||||
RUN set -ex echo "downloading source and binaries with manifest and signature." \
|
||||
&& wget ${source_release_url_prefix}/releases/download/${target_version}/manifest-${target_version}.txt \
|
||||
&& wget ${source_release_url_prefix}/releases/download/${target_version}/manifest-guggero-${target_version}.sig \
|
||||
&& wget ${source_release_url_prefix}/releases/download/${target_version}/btcd-${target_os}-${target_platform}-${target_version}.tar.gz \
|
||||
&& wget ${source_release_url_prefix}/releases/download/${target_version}/btcd-source-${target_version}.tar.gz
|
||||
|
||||
# Importing keys from scratch
|
||||
COPY --from=config /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-${target_version}.sig manifest-${target_version}.txt
|
||||
|
||||
RUN set -ex echo "verifying checksum on btcd-${target_os}-${target_platform}-${target_version}.tar.gz" \
|
||||
&& cat manifest-${target_version}.txt | grep btcd-${target_os}-${target_platform}-${target_version}.tar.gz | shasum -a 256 -c
|
||||
|
||||
#RUN set -ex echo "DEBUG: verifying a checksum failure stops the build" \
|
||||
# && mv btcd-${target_os}-${target_platform}-${target_version}.tar.gz btcd-source-${target_version}.tar.gz
|
||||
|
||||
RUN set -ex echo "verifying checksum on btcd-source-${target_version}.tar.gz" \
|
||||
&& cat manifest-${target_version}.txt | grep btcd-source-${target_version}.tar.gz | shasum -a 256 -c
|
||||
|
||||
RUN set -ex echo "untarring binaries and source code" \
|
||||
&& mkdir -pv /tmp/btcd-${target_os}-${target_platform}-${target_version} \
|
||||
&& tar -xzvf btcd-${target_os}-${target_platform}-${target_version}.tar.gz --directory /tmp/btcd-${target_os}-${target_platform}-${target_version} \
|
||||
&& mkdir -pv /tmp/btcd-source-${target_version} \
|
||||
&& tar -xzvf btcd-source-${target_version}.tar.gz --directory /tmp/btcd-source-${target_version}
|
||||
|
||||
WORKDIR /tmp/btcd-source-${target_version}
|
||||
|
||||
RUN set -ex ls -hal /tmp
|
||||
|
||||
RUN set -ex echo "building binaries for ${GOOS}/${GOARCH}" \
|
||||
&& mkdir -pv /tmp/bin \
|
||||
&& GO111MODULE=on GOOS=${target_os} CGO_ENABLED=0 go build --ldflags '-w -s' -o /tmp/bin/btcd . \
|
||||
&& GO111MODULE=on GOOS=${target_os} CGO_ENABLED=0 go build --ldflags '-w -s' -o /tmp/bin/ ./cmd/...
|
||||
|
||||
#RUN set -ex echo "moving btcd binary to /tmp/bin" \
|
||||
# && mkdir -pv /tmp/bin \
|
||||
# && cp /tmp/btcd-${target_os}-${target_platform}-${target_version}/btcd /tmp/bin
|
||||
@@ -1,6 +1,26 @@
|
||||
|
||||
ARG semver=master
|
||||
# ---
|
||||
# Build Process
|
||||
# ---
|
||||
|
||||
FROM indralabs/btcd:${semver}
|
||||
ARG btcd_version="latest"
|
||||
ARG scratch_version="latest"
|
||||
|
||||
FROM indralabs/btcd-base:${btcd_version} as base
|
||||
|
||||
# ---
|
||||
# Target Configuration
|
||||
# ---
|
||||
|
||||
FROM indralabs/scratch:${scratch_version}
|
||||
|
||||
## Migrate the binaries and storage folder
|
||||
COPY --from=base /tmp/bin/btcctl /bin
|
||||
|
||||
# Enable the btcd user
|
||||
USER btcd:btcd
|
||||
|
||||
# Set the data volumes. Should be read-only.
|
||||
#VOLUME ["/etc/btcd"]
|
||||
|
||||
ENTRYPOINT ["/bin/btcctl", "--configfile=/etc/btcd/btcd.conf"]
|
||||
|
||||
@@ -1,38 +1,22 @@
|
||||
|
||||
ARG base_image="golang"
|
||||
ARG target_image="indralabs/scratch"
|
||||
|
||||
# ---
|
||||
# Build Process
|
||||
# ---
|
||||
|
||||
FROM ${base_image} AS builder
|
||||
ARG btcd_version="latest"
|
||||
ARG scratch_version="latest"
|
||||
|
||||
# Get the repo and build
|
||||
ARG git_repository="github.com/indra-labs/btcd"
|
||||
ARG git_tag="master"
|
||||
|
||||
# Install dependencies and build the binaries.
|
||||
RUN git clone "https://"${git_repository} /go/src/${git_repository}
|
||||
|
||||
WORKDIR $GOPATH/src/${git_repository}
|
||||
|
||||
RUN git checkout ${git_tag}
|
||||
|
||||
ARG ARCH=amd64
|
||||
ARG GOARCH=amd64
|
||||
RUN set -ex \
|
||||
&& GO111MODULE=on GOOS=linux CGO_ENABLED=0 go build --ldflags '-w -s' -o /tmp/bin/btcd . \
|
||||
&& GO111MODULE=on GOOS=linux CGO_ENABLED=0 go build --ldflags '-w -s' -o /tmp/bin/ ./cmd/...
|
||||
FROM indralabs/btcd-base:${btcd_version} as base
|
||||
|
||||
# ---
|
||||
# Target Configuration
|
||||
# ---
|
||||
|
||||
FROM indralabs/scratch:latest
|
||||
FROM indralabs/scratch:${scratch_version}
|
||||
|
||||
## Migrate the binaries and storage folder
|
||||
COPY --from=builder /tmp/bin /bin
|
||||
COPY --from=base /tmp/bin/btcd /bin
|
||||
COPY --from=base /tmp/bin/gencerts /bin
|
||||
|
||||
# Enable the btcd user
|
||||
USER btcd:btcd
|
||||
|
||||
Reference in New Issue
Block a user