-
Notifications
You must be signed in to change notification settings - Fork 57
105 lines (85 loc) · 2.7 KB
/
build-bake.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
on:
schedule:
- cron: '0 8 * * 1' # Every Monday at 8:00 UTC for automatic rebuilds (pull in OS updates, security patches, etc.)
push:
branches:
- main
- dev
pull_request:
name: Release - Build, Test, and Push
jobs:
pre:
name: Pre-Run Setup
runs-on: ubuntu-latest-4x
outputs:
buildkit-builder: ${{ steps.setup-buildx.outputs.name }}
concurrency:
group: bake-pre-${{ github.ref }}
cancel-in-progress: true
steps:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
id: setup-buildx
with:
buildkitd-config: ./share/buildkitd.toml
cleanup: false
base:
needs: [pre]
name: Base Images
runs-on: ubuntu-latest-4x
concurrency:
group: bake-base-${{ github.ref }}
cancel-in-progress: true
env:
target: base-images
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Build, Test, and Push
uses: ./.github/actions/bake-test-push
with:
target: ${{ env.target }}
builder: ${{ needs.pre.outputs.buildkit-builder }}
push-image: ${{ github.ref == 'refs/heads/main' }}
ghcr-token: ${{ secrets.GITHUB_TOKEN }}
dockerhub-username: ${{ secrets.DOCKER_HUB_USERNAME }}
dockerhub-token: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
gcp-json: '${{ secrets.GCP_ARTIFACT_REGISTRY_JSON }}'
workbench:
name: Workbench
runs-on: ubuntu-latest-4x
needs: [pre, base]
concurrency:
group: bake-workbench-${{ github.ref }}
cancel-in-progress: true
env:
target: workbench
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Build, Test, and Push
uses: ./.github/actions/bake-test-push
with:
target: ${{ env.target }}
builder: ${{ needs.pre.outputs.buildkit-builder }}
push-image: ${{ github.ref == 'refs/heads/main' }}
ghcr-token: ${{ secrets.GITHUB_TOKEN }}
dockerhub-username: ${{ secrets.DOCKER_HUB_USERNAME }}
dockerhub-token: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
gcp-json: '${{ secrets.GCP_ARTIFACT_REGISTRY_JSON }}'
post:
if: ${{ always() }}
needs: [pre, base, workbench]
name: Post-Run Cleanup
runs-on: ubuntu-latest-4x
concurrency:
group: bake-post-${{ github.ref }}
cancel-in-progress: true
env:
target: post-images
steps:
- name: Cleanup buildx builder
run: |
docker buildx stop ${{ needs.pre.outputs.buildkit-builder }}
docker buildx prune ${{ needs.pre.outputs.buildkit-builder }}
docker buildx rm ${{ needs.pre.outputs.buildkit-builder }}