mirror of
https://github.com/k3s-io/k3s.git
synced 2024-06-07 19:41:36 +00:00
a7fe1aaaa5
`$HOME` refers to `$DAPPER_SOURCE`, which is set in the same expression and is thus not visible at the time of substitution. This problem is not immediately visible with Docker, Inc.'s docker merely because it resets an unset `$HOME` to `/root` (but still breaking the Go cache). Under podman, this problem is immediately visible because an unset `$HOME` remains unset and subsequently breaks the `go generate` invocation. Fixes #9089. Signed-off-by: Ivan Shapovalov <intelfx@intelfx.name>
68 lines
2.4 KiB
Docker
68 lines
2.4 KiB
Docker
ARG GOLANG=golang:1.21.5-alpine3.18
|
|
FROM ${GOLANG}
|
|
|
|
# Set proxy environment variables
|
|
ARG http_proxy
|
|
ARG https_proxy
|
|
ARG no_proxy
|
|
ENV http_proxy=${http_proxy} \
|
|
https_proxy=${https_proxy} \
|
|
no_proxy=${no_proxy}
|
|
|
|
# Install necessary packages
|
|
RUN apk -U --no-cache add \
|
|
bash git gcc musl-dev docker vim less file curl wget ca-certificates jq linux-headers \
|
|
zlib-dev tar zip squashfs-tools npm coreutils python3 py3-pip openssl-dev libffi-dev libseccomp \
|
|
libseccomp-dev libseccomp-static make libuv-static sqlite-dev sqlite-static libselinux \
|
|
libselinux-dev zlib-dev zlib-static zstd pigz alpine-sdk binutils-gold btrfs-progs-dev \
|
|
btrfs-progs-static gawk yq \
|
|
&& [ "$(go env GOARCH)" = "amd64" ] && apk -U --no-cache add mingw-w64-gcc || true
|
|
|
|
# Install AWS CLI
|
|
RUN python3 -m pip install awscli
|
|
|
|
# Install Trivy
|
|
ENV TRIVY_VERSION="0.46.1"
|
|
RUN case "$(go env GOARCH)" in \
|
|
arm64) TRIVY_ARCH="ARM64" ;; \
|
|
amd64) TRIVY_ARCH="64bit" ;; \
|
|
s390x) TRIVY_ARCH="s390x" ;; \
|
|
*) TRIVY_ARCH="" ;; \
|
|
esac
|
|
RUN if [ -n "${TRIVY_ARCH}" ]; then \
|
|
wget --no-verbose "https://github.com/aquasecurity/trivy/releases/download/v${TRIVY_VERSION}/trivy_${TRIVY_VERSION}_Linux-${TRIVY_ARCH}.tar.gz" \
|
|
&& tar -zxvf "trivy_${TRIVY_VERSION}_Linux-${TRIVY_ARCH}.tar.gz" \
|
|
&& mv trivy /usr/local/bin; \
|
|
fi
|
|
|
|
# Install goimports
|
|
RUN GOPROXY=direct go install golang.org/x/tools/cmd/goimports@gopls/v0.11.0
|
|
|
|
# Cleanup
|
|
RUN rm -rf /go/src /go/pkg
|
|
|
|
# Install golangci-lint for amd64
|
|
RUN if [ "$(go env GOARCH)" = "amd64" ]; then \
|
|
curl -sL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s v1.55.2; \
|
|
fi
|
|
|
|
# Set SELINUX environment variable
|
|
ARG SELINUX=true
|
|
ENV SELINUX=${SELINUX}
|
|
|
|
# Set Dapper configuration variables
|
|
ENV DAPPER_RUN_ARGS="--privileged -v k3s-cache:/go/src/github.com/k3s-io/k3s/.cache -v trivy-cache:/root/.cache/trivy" \
|
|
DAPPER_ENV="REPO TAG DRONE_TAG IMAGE_NAME SKIP_VALIDATE SKIP_IMAGE SKIP_AIRGAP AWS_SECRET_ACCESS_KEY AWS_ACCESS_KEY_ID GITHUB_TOKEN GOLANG GOCOVER DEBUG" \
|
|
DAPPER_SOURCE="/go/src/github.com/k3s-io/k3s/" \
|
|
DAPPER_OUTPUT="./bin ./dist ./build/out ./build/static ./pkg/static ./pkg/deploy" \
|
|
DAPPER_DOCKER_SOCKET=true \
|
|
CROSS=true \
|
|
STATIC_BUILD=true
|
|
# Set $HOME separately because it refers to $DAPPER_SOURCE, set above
|
|
ENV HOME=${DAPPER_SOURCE}
|
|
|
|
WORKDIR ${DAPPER_SOURCE}
|
|
|
|
ENTRYPOINT ["./scripts/entry.sh"]
|
|
CMD ["ci"]
|