- Notifications
You must be signed in to change notification settings - Fork6
feat: build and publish multiarch image#46
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Conversation
- name: Echo Go Cache Paths | ||
id: go-cache-paths | ||
run: | | ||
echo "GOCACHE=$(go env GOCACHE)" >> ${{ runner.os == 'Windows' && '$env:' || '$' }}GITHUB_OUTPUT | ||
echo "GOMODCACHE=$(go env GOMODCACHE)" >> ${{ runner.os == 'Windows' && '$env:' || '$' }}GITHUB_OUTPUT | ||
- name: Go Build Cache | ||
uses: actions/cache@v3 | ||
with: | ||
path: ${{ steps.go-cache-paths.outputs.GOCACHE }} | ||
key: ${{ runner.os }}-go-build-${{ hashFiles('**/go.**', '**.go') }} | ||
# Install Go! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
setup-go has a built-in cache that works as expected.
-name:Echo Go Cache Paths | ||
id:go-cache-paths | ||
run:| | ||
echo "GOCACHE=$(go env GOCACHE)" >> ${{ runner.os == 'Windows' && '$env:' || '$' }}GITHUB_OUTPUT | ||
echo "GOMODCACHE=$(go env GOMODCACHE)" >> ${{ runner.os == 'Windows' && '$env:' || '$' }}GITHUB_OUTPUT | ||
-name:Go Build Cache | ||
uses:actions/cache@v3 | ||
with: | ||
path:${{ steps.go-cache-paths.outputs.GOCACHE }} | ||
key:${{ runner.os }}-go-build-${{ hashFiles('**/go.**', '**.go') }} | ||
-uses:actions/setup-go@v5 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
setup-go has a built-in cache that works as expected.
-name:Push Image | ||
run:| | ||
VERSION=$(./scripts/version.sh) | ||
BASE=ghcr.io/coder/coder-logstream-kube | ||
IMAGE=$BASE:$VERSION | ||
docker tag coder-logstream-kube:latest $IMAGE | ||
docker tag coder-logstream-kube:latest $BASE:latest | ||
docker push $IMAGE | ||
docker push $BASE:latest |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
moved pushing and building to the./scripts/build.sh
scripts/build.sh Outdated
# Build | ||
if [ "$CI" = "false" ]; then | ||
docker buildx build --platform linux/$current -t coder-logstream-kube --load . | ||
else | ||
VERSION=$(../scripts/version.sh) | ||
BASE=ghcr.io/coder/coder-logstream-kube | ||
IMAGE=$BASE:$VERSION | ||
docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t $IMAGE -t $BASE:latest --push. | ||
fi |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
--load
only works for single arch images, so it can not be used with a multi arch manifest. As a workaround, I split the local and CI build commands.
Locally, we only build for the current arch; in CI, we create a multi-arch image.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Could do with a run ofshellcheck
onbuild.sh
but I don't need to review again.
ENTRYPOINT ["/coder-logstream-kube"] | ||
FROM --platform=$BUILDPLATFORM scratch AS base | ||
ARG TARGETARCH |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
reviewer note: this comes from--platform
ref:https://docs.docker.com/build/guide/multi-platform/#platform-build-arguments
Uh oh!
There was an error while loading.Please reload this page.
89b4709
intomainUh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
This pull request updates the release workflow to build and push a multi-arch image and simplifies the CI process. The changes include:
Supersedes#44
Closes#29