-
Notifications
You must be signed in to change notification settings - Fork 14
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 our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Refactor CI workflow #439
Refactor CI workflow #439
Changes from 146 commits
bfebed8
eb7f22a
dce9a38
50b9f16
ce8b97d
94d05d6
4dd865e
589ee67
ea59188
9e6d443
59259c1
056f859
fd36101
303cc27
bd5200c
ff0efa9
076e9b2
8f090b7
daecefc
2db11cc
b9fe7d6
dabc273
7dccaf0
7369fc8
4a5da9a
7978b1e
c256c9c
05909e9
510dca6
cb77324
df94b22
64a47f8
04cba11
9142e30
877edbd
8913922
f4beeae
c3fbf55
d3b3da1
62b1d77
8332a67
f05761b
5994487
202128d
0305af3
418bb21
87cc98b
75ce6b0
84e274b
8ceb3de
d2ceb23
711efe1
aa675c8
4072d67
260d261
9f1a5ad
dd51bf5
19a3ee2
df2f440
ed07958
e8b31d7
ecbe747
cfab33b
cbfa736
eeb1eea
0d68dd5
58febf1
f728526
b61ee7d
da8f350
2b74605
30431aa
28c0050
6746037
ce6e5d4
fa4e6e5
887f94a
4934e44
837b11e
66ee2e1
f9c5ef2
8dee62a
e341bfd
033dff3
f4cc6c5
b63da11
656f2b2
ac46f76
a0cd2be
d6c2f54
bcbe78c
493c72f
0b1f1bf
004eb16
fb23e00
4805724
6d403f8
40bdfc9
1e28616
a76bbfd
23130e2
ae5b70c
3368377
658a2dd
b8153c3
6a1b4da
7a76a9a
2fddb79
2022330
b68e1ff
87ffc4f
7e3cb1a
366fa34
dcda994
8bdf705
c6ecf2c
faebcc0
961a6d2
eb9ec70
a161008
861b444
7ee4c96
a37f7f5
cfc094f
69aeae2
cdbd9a9
6feb9a5
32f2a82
30eba26
b9ca67d
fad7527
e538e73
30eb7c9
83b1975
cf014d9
3979fb4
6a4f8fe
0f647b0
fb44554
263b7c6
9190d81
57f04ac
1cc9837
8f8a30e
c555da0
eb4d201
aa7f2e5
85b011e
d5f8b9a
569bb8c
00bd176
d896289
251e6ba
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
This file was deleted.
This file was deleted.
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,77 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||
--- | ||||||||||||||||||||||||||||||||||||||||||||||||
name: Build images and upload them to ghcr.io | ||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
env: | ||||||||||||||||||||||||||||||||||||||||||||||||
BUILDKIT_PROGRESS: plain | ||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
on: | ||||||||||||||||||||||||||||||||||||||||||||||||
workflow_call: | ||||||||||||||||||||||||||||||||||||||||||||||||
inputs: | ||||||||||||||||||||||||||||||||||||||||||||||||
runsOn: | ||||||||||||||||||||||||||||||||||||||||||||||||
description: GitHub Actions Runner image | ||||||||||||||||||||||||||||||||||||||||||||||||
required: true | ||||||||||||||||||||||||||||||||||||||||||||||||
type: string | ||||||||||||||||||||||||||||||||||||||||||||||||
platforms: | ||||||||||||||||||||||||||||||||||||||||||||||||
description: Target platforms for the build (linux/amd64 and/or linux/arm64) | ||||||||||||||||||||||||||||||||||||||||||||||||
required: true | ||||||||||||||||||||||||||||||||||||||||||||||||
type: string | ||||||||||||||||||||||||||||||||||||||||||||||||
outputs: | ||||||||||||||||||||||||||||||||||||||||||||||||
images: | ||||||||||||||||||||||||||||||||||||||||||||||||
description: Images identified by digests | ||||||||||||||||||||||||||||||||||||||||||||||||
value: ${{ jobs.build.outputs.images }} | ||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
jobs: | ||||||||||||||||||||||||||||||||||||||||||||||||
build: | ||||||||||||||||||||||||||||||||||||||||||||||||
name: ${{ inputs.platforms }} | ||||||||||||||||||||||||||||||||||||||||||||||||
runs-on: ${{ inputs.runsOn }} | ||||||||||||||||||||||||||||||||||||||||||||||||
timeout-minutes: 120 | ||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
outputs: | ||||||||||||||||||||||||||||||||||||||||||||||||
images: ${{ steps.bake_metadata.outputs.images }} | ||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
# Make sure we fail if any command in a piped command sequence fails | ||||||||||||||||||||||||||||||||||||||||||||||||
defaults: | ||||||||||||||||||||||||||||||||||||||||||||||||
run: | ||||||||||||||||||||||||||||||||||||||||||||||||
shell: bash -e -o pipefail {0} | ||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
steps: | ||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
- name: Checkout Repo ⚡️ | ||||||||||||||||||||||||||||||||||||||||||||||||
uses: actions/checkout@v4 | ||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
- name: Set up QEMU | ||||||||||||||||||||||||||||||||||||||||||||||||
if: ${{ inputs.platforms != 'linux/amd64' }} | ||||||||||||||||||||||||||||||||||||||||||||||||
uses: docker/setup-qemu-action@v3 | ||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
- name: Set up Docker Buildx | ||||||||||||||||||||||||||||||||||||||||||||||||
uses: docker/setup-buildx-action@v3 | ||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
- name: Login to GitHub Container Registry 🔑 | ||||||||||||||||||||||||||||||||||||||||||||||||
uses: docker/login-action@v3 | ||||||||||||||||||||||||||||||||||||||||||||||||
with: | ||||||||||||||||||||||||||||||||||||||||||||||||
registry: ghcr.io | ||||||||||||||||||||||||||||||||||||||||||||||||
username: ${{ github.actor }} | ||||||||||||||||||||||||||||||||||||||||||||||||
password: ${{ secrets.GITHUB_TOKEN }} | ||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
- name: Build and upload to ghcr.io 📤 | ||||||||||||||||||||||||||||||||||||||||||||||||
id: build-upload | ||||||||||||||||||||||||||||||||||||||||||||||||
uses: docker/bake-action@v4 | ||||||||||||||||||||||||||||||||||||||||||||||||
with: | ||||||||||||||||||||||||||||||||||||||||||||||||
push: true | ||||||||||||||||||||||||||||||||||||||||||||||||
# Using provenance to disable default attestation so it will build only desired images: | ||||||||||||||||||||||||||||||||||||||||||||||||
# https://github.com/orgs/community/discussions/45969 | ||||||||||||||||||||||||||||||||||||||||||||||||
provenance: false | ||||||||||||||||||||||||||||||||||||||||||||||||
set: | | ||||||||||||||||||||||||||||||||||||||||||||||||
*.platform=${{ inputs.platforms }} | ||||||||||||||||||||||||||||||||||||||||||||||||
*.output=type=registry,push-by-digest=true,name-canonical=true | ||||||||||||||||||||||||||||||||||||||||||||||||
danielhollas marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||||||||||||||||||||||||||||||||||||
files: | | ||||||||||||||||||||||||||||||||||||||||||||||||
docker-bake.hcl | ||||||||||||||||||||||||||||||||||||||||||||||||
build.json | ||||||||||||||||||||||||||||||||||||||||||||||||
.github/workflows/env.hcl | ||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+64
to
+70
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
Could you give it a try on caching? This may further speed the build? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Oh, interesting find, thanks! I would like to keep this PR as simple as possible so that we have a simple reference that we can always go back to. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Sure! |
||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
- name: Set output variables | ||||||||||||||||||||||||||||||||||||||||||||||||
id: bake_metadata | ||||||||||||||||||||||||||||||||||||||||||||||||
run: | | ||||||||||||||||||||||||||||||||||||||||||||||||
.github/workflows/extract-image-names.sh | tee -a "${GITHUB_OUTPUT}" | ||||||||||||||||||||||||||||||||||||||||||||||||
env: | ||||||||||||||||||||||||||||||||||||||||||||||||
BAKE_METADATA: ${{ steps.build-upload.outputs.metadata }} |
This file was deleted.
This file was deleted.
This file was deleted.
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.
I don't understand why the
push-by-digest
is used for? From https://docs.docker.com/build/exporters/image-registry/ it says push without name. I assume with using this option, in the build phase the image should not tagged (see also my comment on<image>-meta
, which give the tag for the 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.
I checked again, and it is needed, because without it a
latest
tag will be automatically added since we didn't specify any tags. See e.g. here: https://github.com/aiidalab/aiidalab-docker-stack/pkgs/container/baseThis is a quite important trick that makes everything work by using digests instead of tags.