refactoring btcd
This commit is contained in:
@@ -34,27 +34,45 @@ var (
|
|||||||
func strPtr(str string) *string { return &str }
|
func strPtr(str string) *string { return &str }
|
||||||
|
|
||||||
var buildConfigurations = []docker.BuildConfiguration{
|
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{
|
docker.BuildConfiguration{
|
||||||
Name: defaultRepositoryName + "/" + "btcd",
|
Name: defaultRepositoryName + "/" + "btcd",
|
||||||
ContextFilePath: "/tmp/btcd.tar",
|
ContextFilePath: "/tmp/btcd.tar",
|
||||||
BuildOpts: types.ImageBuildOptions{
|
BuildOpts: types.ImageBuildOptions{
|
||||||
Dockerfile: "docker/btcd/btcd.Dockerfile",
|
Dockerfile: "docker/btcd/btcd.Dockerfile",
|
||||||
Tags: []string{
|
Tags: []string{
|
||||||
"v0.23.4",
|
"v0.23.3",
|
||||||
"latest",
|
"latest",
|
||||||
},
|
},
|
||||||
BuildArgs: map[string]*string{
|
BuildArgs: map[string]*string{
|
||||||
"base_image": strPtr(defaultBuildContainer),
|
"btcd_version": strPtr("v0.23.3"),
|
||||||
"target_image": strPtr("indralabs/scratch:latest"),
|
"scratch_version": strPtr("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"),
|
|
||||||
},
|
},
|
||||||
SuppressOutput: false,
|
SuppressOutput: false,
|
||||||
Remove: true,
|
Remove: false,
|
||||||
ForceRemove: true,
|
ForceRemove: false,
|
||||||
PullParent: true,
|
PullParent: false,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
docker.BuildConfiguration{
|
docker.BuildConfiguration{
|
||||||
@@ -67,11 +85,12 @@ var buildConfigurations = []docker.BuildConfiguration{
|
|||||||
"latest",
|
"latest",
|
||||||
},
|
},
|
||||||
BuildArgs: map[string]*string{
|
BuildArgs: map[string]*string{
|
||||||
"semver": strPtr("v0.23.4"),
|
"btcd_version": strPtr("v0.23.3"),
|
||||||
|
"scratch_version": strPtr("latest"),
|
||||||
},
|
},
|
||||||
SuppressOutput: false,
|
SuppressOutput: false,
|
||||||
Remove: true,
|
Remove: false,
|
||||||
ForceRemove: true,
|
ForceRemove: false,
|
||||||
PullParent: 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"]
|
ENTRYPOINT ["/bin/btcctl", "--configfile=/etc/btcd/btcd.conf"]
|
||||||
|
|||||||
@@ -1,38 +1,22 @@
|
|||||||
|
|
||||||
ARG base_image="golang"
|
|
||||||
ARG target_image="indralabs/scratch"
|
|
||||||
|
|
||||||
# ---
|
# ---
|
||||||
# Build Process
|
# Build Process
|
||||||
# ---
|
# ---
|
||||||
|
|
||||||
FROM ${base_image} AS builder
|
ARG btcd_version="latest"
|
||||||
|
ARG scratch_version="latest"
|
||||||
|
|
||||||
# Get the repo and build
|
FROM indralabs/btcd-base:${btcd_version} as base
|
||||||
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/...
|
|
||||||
|
|
||||||
# ---
|
# ---
|
||||||
# Target Configuration
|
# Target Configuration
|
||||||
# ---
|
# ---
|
||||||
|
|
||||||
FROM indralabs/scratch:latest
|
FROM indralabs/scratch:${scratch_version}
|
||||||
|
|
||||||
## Migrate the binaries and storage folder
|
## 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
|
# Enable the btcd user
|
||||||
USER btcd:btcd
|
USER btcd:btcd
|
||||||
|
|||||||
Reference in New Issue
Block a user