fix go build and add test
This commit is contained in:
parent
ebf3b47dd8
commit
3a48e413a5
|
@ -1,25 +1,26 @@
|
||||||
ARG REGISTRY=local
|
ARG REGISTRY=local
|
||||||
ARG BUSYBOX_VERSION=latest
|
ARG BUSYBOX_VERSION=latest
|
||||||
FROM ${REGISTRY}/busybox:${BUSYBOX_VERSION} as busybox
|
|
||||||
FROM ${REGISTRY}/bash:latest as bash
|
FROM ${REGISTRY}/bash:latest as bash
|
||||||
FROM ${REGISTRY}/gcc:latest as gcc
|
FROM ${REGISTRY}/gcc:latest as gcc
|
||||||
FROM ${REGISTRY}/binutils:latest as binutils
|
FROM ${REGISTRY}/binutils:latest as binutils
|
||||||
FROM ${REGISTRY}/musl:latest as musl
|
FROM ${REGISTRY}/musl:latest as musl
|
||||||
|
FROM ${REGISTRY}/busybox:${BUSYBOX_VERSION} as base
|
||||||
FROM busybox as stage1
|
ENV GOOS=linux
|
||||||
COPY --from=bash . /bin/
|
ENV CGO_ENABLED=0
|
||||||
COPY --from=gcc . /
|
COPY --from=gcc . /
|
||||||
COPY --from=binutils . /
|
COPY --from=bash . /
|
||||||
COPY --from=musl . /
|
COPY --from=musl . /
|
||||||
|
RUN rm /bin/ar
|
||||||
|
COPY --from=binutils . /
|
||||||
|
|
||||||
|
FROM base as build-stage1
|
||||||
ENV GO_SITE=https://dl.google.com/go
|
ENV GO_SITE=https://dl.google.com/go
|
||||||
ENV GO_VERSION=1.4-bootstrap-20171003
|
ENV GO_VERSION=1.4-bootstrap-20171003
|
||||||
ENV GO_HASH=f4ff5b5eb3a3cae1c993723f3eab519c5bae18866b5e5f96fe1102f0cb5c3e52
|
ENV GO_HASH=f4ff5b5eb3a3cae1c993723f3eab519c5bae18866b5e5f96fe1102f0cb5c3e52
|
||||||
ENV GOOS=linux
|
|
||||||
ENV CGO_ENABLED=0
|
|
||||||
ENV GOROOT_FINAL=/home/user/go-stage1
|
ENV GOROOT_FINAL=/home/user/go-stage1
|
||||||
ENV GOROOT=${GOROOT_FINAL}
|
ENV GOROOT=${GOROOT_FINAL}
|
||||||
ENV GOBIN=${GOROOT_FINAL}/bin
|
|
||||||
ENV DEST=${GOROOT_FINAL}
|
ENV DEST=${GOROOT_FINAL}
|
||||||
|
ENV GOBIN=${GOROOT_FINAL}/bin
|
||||||
RUN wget ${GO_SITE}/go${GO_VERSION}.tar.gz
|
RUN wget ${GO_SITE}/go${GO_VERSION}.tar.gz
|
||||||
RUN echo "${GO_HASH} go${GO_VERSION}.tar.gz" | sha256sum -c
|
RUN echo "${GO_HASH} go${GO_VERSION}.tar.gz" | sha256sum -c
|
||||||
RUN tar -xzf go${GO_VERSION}.tar.gz
|
RUN tar -xzf go${GO_VERSION}.tar.gz
|
||||||
|
@ -31,21 +32,17 @@ RUN set -eux; \
|
||||||
mkdir -p ${DEST}; \
|
mkdir -p ${DEST}; \
|
||||||
cp -R bin lib pkg src ${DEST}
|
cp -R bin lib pkg src ${DEST}
|
||||||
|
|
||||||
FROM busybox as stage2
|
FROM base as build-stage2
|
||||||
COPY --from=stage1 /home/user/go-stage1 go-stage1
|
COPY --from=build-stage1 /home/user/go-stage1 go-stage1
|
||||||
COPY --from=musl . /
|
|
||||||
COPY --from=bash . /bin/
|
|
||||||
ENV GO_VERSION=1.19.11
|
ENV GO_VERSION=1.19.11
|
||||||
ENV GO_HASH=e25c9ab72d811142b7f41ff6da5165fec2d1be5feec3ef2c66bc0bdecb431489
|
ENV GO_HASH=e25c9ab72d811142b7f41ff6da5165fec2d1be5feec3ef2c66bc0bdecb431489
|
||||||
ENV GO_SITE=https://storage.googleapis.com/golang
|
ENV GO_SITE=https://storage.googleapis.com/golang
|
||||||
ENV GOOS=linux
|
|
||||||
ENV GO11MODULE=off
|
ENV GO11MODULE=off
|
||||||
ENV CGO_ENABLED=0
|
|
||||||
ENV GOROOT_BOOTSTRAP=/home/user/go-stage1
|
ENV GOROOT_BOOTSTRAP=/home/user/go-stage1
|
||||||
ENV GOROOT_FINAL=/home/user/go-stage2
|
ENV GOROOT_FINAL=/home/user/go-stage2
|
||||||
ENV GOROOT=${GOROOT_FINAL}
|
ENV GOROOT=${GOROOT_FINAL}
|
||||||
ENV GOBIN=${GOROOT_FINAL}/bin
|
|
||||||
ENV DEST=${GOROOT_FINAL}
|
ENV DEST=${GOROOT_FINAL}
|
||||||
|
ENV GOBIN=${GOROOT_FINAL}/bin
|
||||||
RUN wget ${GO_SITE}/go${GO_VERSION}.src.tar.gz
|
RUN wget ${GO_SITE}/go${GO_VERSION}.src.tar.gz
|
||||||
RUN echo "${GO_HASH} go${GO_VERSION}.src.tar.gz" | sha256sum -c
|
RUN echo "${GO_HASH} go${GO_VERSION}.src.tar.gz" | sha256sum -c
|
||||||
RUN tar -xvzf go${GO_VERSION}.src.tar.gz
|
RUN tar -xvzf go${GO_VERSION}.src.tar.gz
|
||||||
|
@ -57,23 +54,20 @@ RUN set -eux; \
|
||||||
mkdir -p ${DEST}; \
|
mkdir -p ${DEST}; \
|
||||||
cp -R bin lib pkg src ${DEST}
|
cp -R bin lib pkg src ${DEST}
|
||||||
|
|
||||||
FROM busybox as stage3
|
FROM base as build
|
||||||
COPY --from=stage2 /home/user/go-stage2 go-stage2
|
COPY --from=build-stage2 /home/user/go-stage2 go-stage2
|
||||||
COPY --from=bash . /bin/
|
|
||||||
ENV GO_VERSION=1.21.4
|
ENV GO_VERSION=1.21.4
|
||||||
ENV GO_HASH=47b26a83d2b65a3c1c1bcace273b69bee49a7a7b5168a7604ded3d26a37bd787
|
ENV GO_HASH=47b26a83d2b65a3c1c1bcace273b69bee49a7a7b5168a7604ded3d26a37bd787
|
||||||
ENV GO_SITE=https://storage.googleapis.com/golang
|
ENV GO_SITE=https://storage.googleapis.com/golang
|
||||||
ENV GOOS=linux
|
|
||||||
ENV GOPROXY=off
|
ENV GOPROXY=off
|
||||||
ENV GOTOOLCHAIN=local
|
ENV GOTOOLCHAIN=local
|
||||||
ENV GOFLAGS=-mod=vendor
|
ENV GOFLAGS=-mod=vendor
|
||||||
ENV GO11MODULE=on
|
ENV GO11MODULE=on
|
||||||
ENV CGO_ENABLED=0
|
|
||||||
ENV GOROOT_BOOTSTRAP=/home/user/go-stage2
|
ENV GOROOT_BOOTSTRAP=/home/user/go-stage2
|
||||||
ENV GOROOT_FINAL="/lib/go"
|
ENV GOROOT_FINAL="/lib/go"
|
||||||
ENV GOROOT=/home/user/go-stage2
|
|
||||||
ENV GOBIN=${GOROOT_FINAL}/bin
|
ENV GOBIN=${GOROOT_FINAL}/bin
|
||||||
ENV DEST=/home/user/go-stage3
|
ENV GOROOT=/home/user/go-stage2
|
||||||
|
ENV DEST=/home/user/rootfs
|
||||||
RUN wget ${GO_SITE}/go${GO_VERSION}.src.tar.gz
|
RUN wget ${GO_SITE}/go${GO_VERSION}.src.tar.gz
|
||||||
RUN echo "${GO_HASH} go${GO_VERSION}.src.tar.gz" | sha256sum -c
|
RUN echo "${GO_HASH} go${GO_VERSION}.src.tar.gz" | sha256sum -c
|
||||||
RUN tar -xvzf go${GO_VERSION}.src.tar.gz
|
RUN tar -xvzf go${GO_VERSION}.src.tar.gz
|
||||||
|
@ -85,8 +79,15 @@ RUN set -eux; \
|
||||||
mkdir -p ${DEST}; \
|
mkdir -p ${DEST}; \
|
||||||
cp -R bin lib pkg src ${DEST}
|
cp -R bin lib pkg src ${DEST}
|
||||||
|
|
||||||
|
FROM base as test
|
||||||
|
COPY --from=build /home/user/rootfs /
|
||||||
|
ADD test.go .
|
||||||
|
RUN set -eux; \
|
||||||
|
go build test.go; \
|
||||||
|
./test | grep "Success"
|
||||||
|
|
||||||
FROM scratch as package
|
FROM scratch as package
|
||||||
COPY --from=stage3 /home/user/go-stage3 /
|
COPY --from=build /home/user/rootfs /
|
||||||
USER 100:100
|
USER 100:100
|
||||||
ENTRYPOINT ["/bin/go"]
|
ENTRYPOINT ["/bin/go"]
|
||||||
CMD ["version"]
|
CMD ["version"]
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
fmt.Println("Success")
|
||||||
|
}
|
Reference in New Issue