-
Notifications
You must be signed in to change notification settings - Fork 88
120 lines (111 loc) · 3.81 KB
/
docker-build.yml
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
name: Docker
# Trigger on pushes to master branch, new semantic version tags, and pull request updates
on:
workflow_dispatch:
inputs:
tag:
description: Git branch, or tag to build from.
required: false
target:
description: Target to build.
required: false
type: choice
options:
- composer
- conductor
- sequencer
- sequencer-relayer
merge_group:
push:
branches:
- "main"
tags:
- "**-v[0-9]+.[0-9]+.[0-9]+"
- "**-v[0-9]+.[0-9]+.[0-9]+-alpha.[0-9]+"
- "**-v[0-9]+.[0-9]+.[0-9]+-beta.[0-9]+"
- "**-v[0-9]+.[0-9]+.[0-9]+-rc[0-9]+"
# trigger on pull request updates when target is `main` branch
pull_request:
types:
- opened
- synchronize
- reopened
- labeled
branches:
- "main"
jobs:
run_checker:
uses: ./.github/workflows/reusable-run-checker.yml
composer:
needs: run_checker
if: needs.run_checker.outputs.run_docker == 'true' || (github.event_name == 'workflow_dispatch' && github.event.inputs.target == 'composer')
uses: './.github/workflows/reusable-docker-build.yml'
with:
package-name: composer
target-binary: astria-composer
tag: ${{ inputs.tag }}
secrets: inherit
conductor:
needs: run_checker
if: needs.run_checker.outputs.run_docker == 'true' || (github.event_name == 'workflow_dispatch' && github.event.inputs.target == 'conductor')
uses: './.github/workflows/reusable-docker-build.yml'
with:
package-name: conductor
target-binary: astria-conductor
tag: ${{ inputs.tag }}
secrets: inherit
sequencer:
needs: run_checker
if: needs.run_checker.outputs.run_docker == 'true' || (github.event_name == 'workflow_dispatch' && github.event.inputs.target == 'sequencer')
uses: './.github/workflows/reusable-docker-build.yml'
with:
package-name: sequencer
target-binary: astria-sequencer
tag: ${{ inputs.tag }}
secrets: inherit
sequencer-relayer:
needs: run_checker
if: needs.run_checker.outputs.run_docker == 'true' || (github.event_name == 'workflow_dispatch' && github.event.inputs.target == 'sequencer-relayer')
uses: './.github/workflows/reusable-docker-build.yml'
with:
package-name: sequencer-relayer
target-binary: astria-sequencer-relayer
tag: ${{ inputs.tag }}
secrets: inherit
smoke-test:
needs: [run_checker, composer, conductor, sequencer, sequencer-relayer]
if: github.event_name == 'merge_group' || needs.run_checker.outputs.run_docker == 'true'
runs-on: buildjet-8vcpu-ubuntu-2204
steps:
- uses: actions/checkout@v4
- name: Install just
uses: taiki-e/install-action@just
- name: Install kind
uses: helm/kind-action@v1
with:
install_only: true
- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
- name: Log in to GHCR
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Smoke Test Environment
timeout-minutes: 5
run: |
TAG=sha-$(git rev-parse --short HEAD)
just deploy cluster
kubectl create secret generic regcred --from-file=.dockerconfigjson=$HOME/.docker/config.json --type=kubernetes.io/dockerconfigjson
echo "Deploying with astria images tagged $TAG"
just deploy smoke-test $TAG
- name: Run Smoke test
timeout-minutes: 1
run: just run-smoke-test
docker:
if: ${{ always() && !cancelled() }}
needs: [composer, conductor, sequencer, sequencer-relayer, smoke-test]
uses: ./.github/workflows/reusable-success.yml
with:
success: ${{ !contains(needs.*.result, 'failure') }}