Skip to content

Commit a76bc5f

Browse files
authored
Build statically linked runner images (#145)
1 parent 65f3165 commit a76bc5f

1 file changed

Lines changed: 35 additions & 15 deletions

File tree

.github/workflows/release.yml

Lines changed: 35 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -83,10 +83,14 @@ jobs:
8383
-tags=static \
8484
github.com/omegaup/quark/cmd/omegaup-broadcaster
8585
go build -o artifacts/runner/usr/bin/omegaup-runner \
86-
-ldflags "-X main.ProgramVersion=${VERSION}" \
86+
-ldflags "-linkmode external -extldflags '-static' -X main.ProgramVersion=${VERSION}" \
8787
-tags=static \
8888
github.com/omegaup/quark/cmd/omegaup-runner
8989
90+
if ldd artifacts/runner/usr/bin/omegaup-runner; then
91+
echo 'omegaup-runner must be statically linked' >&2
92+
exit 1
93+
fi
9094
cp artifacts/runner/usr/bin/omegaup-runner docker/bin/omegaup-runner
9195
test "$(artifacts/runner/usr/bin/omegaup-runner -version)" = \
9296
"omegaup-runner ${VERSION}"
@@ -131,35 +135,27 @@ jobs:
131135
username: ${{ secrets.DOCKER_USERNAME }}
132136
password: ${{ secrets.DOCKER_PASSWORD }}
133137

134-
- name: Build and publish runner sandbox image
138+
- name: Build runner sandbox image
135139
uses: docker/build-push-action@v7
136140
with:
137141
context: docker
138142
file: docker/Dockerfile
139143
platforms: ${{ env.PLATFORM }}
140-
push: true
141-
tags: |
142-
ghcr.io/${{ github.repository_owner }}/runner-ci:${{ steps.version.outputs.version }}
143-
ghcr.io/${{ github.repository_owner }}/runner-ci:sha-${{ steps.version.outputs.revision }}
144-
omegaup/runner-ci:${{ steps.version.outputs.version }}
145-
omegaup/runner-ci:sha-${{ steps.version.outputs.revision }}
144+
load: true
145+
tags: omegaup/runner-ci:${{ steps.version.outputs.version }}
146146
labels: |
147147
org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }}
148148
org.opencontainers.image.revision=${{ steps.version.outputs.revision }}
149149
org.opencontainers.image.version=${{ steps.version.outputs.version }}
150150
151-
- name: Build and publish runner image
151+
- name: Build runner image
152152
uses: docker/build-push-action@v7
153153
with:
154154
context: docker
155155
file: docker/Dockerfile.runner
156156
platforms: ${{ env.PLATFORM }}
157-
push: true
158-
tags: |
159-
ghcr.io/${{ github.repository_owner }}/runner:${{ steps.version.outputs.version }}
160-
ghcr.io/${{ github.repository_owner }}/runner:sha-${{ steps.version.outputs.revision }}
161-
omegaup/runner:${{ steps.version.outputs.version }}
162-
omegaup/runner:sha-${{ steps.version.outputs.revision }}
157+
load: true
158+
tags: omegaup/runner:${{ steps.version.outputs.version }}
163159
labels: |
164160
org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }}
165161
org.opencontainers.image.revision=${{ steps.version.outputs.revision }}
@@ -176,6 +172,30 @@ jobs:
176172
/usr/bin/omegaup-runner -version)" = \
177173
"omegaup-runner ${VERSION}"
178174
test "$(docker image inspect "${image}" --format '{{.Architecture}}')" = amd64
175+
test "$(docker run --rm --platform linux/amd64 \
176+
"omegaup/runner-ci:${VERSION}" -version)" = \
177+
"omegaup-runner ${VERSION}"
178+
test "$(docker image inspect "omegaup/runner-ci:${VERSION}" \
179+
--format '{{.Architecture}}')" = amd64
180+
181+
- name: Publish verified runner images
182+
env:
183+
VERSION: ${{ steps.version.outputs.version }}
184+
REVISION: ${{ steps.version.outputs.revision }}
185+
shell: bash
186+
run: |
187+
set -euo pipefail
188+
for image in runner runner-ci; do
189+
source_image="omegaup/${image}:${VERSION}"
190+
docker push "${source_image}"
191+
for target_image in \
192+
"omegaup/${image}:sha-${REVISION}" \
193+
"ghcr.io/${{ github.repository_owner }}/${image}:${VERSION}" \
194+
"ghcr.io/${{ github.repository_owner }}/${image}:sha-${REVISION}"; do
195+
docker tag "${source_image}" "${target_image}"
196+
docker push "${target_image}"
197+
done
198+
done
179199
180200
- name: Create or update GitHub release
181201
env:

0 commit comments

Comments
 (0)