Skip to content

Commit aa71412

Browse files
committed
Revert "Revert GH arm changes (#2107)"
This reverts commit 61cd323.
1 parent 7029dd2 commit aa71412

File tree

6 files changed

+133
-147
lines changed

6 files changed

+133
-147
lines changed

.github/workflows/collector-builder.yml

Lines changed: 105 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,16 @@ on:
88
required: true
99
description: |
1010
The tag used to build the collector image
11+
architectures:
12+
type: string
13+
required: true
14+
description: |
15+
Space-seperated list of architectures to build
16+
1117
outputs:
1218
collector-builder-tag:
1319
description: The builder tag used by the build
14-
value: ${{ jobs.build-builder-image.outputs.collector-builder-tag || 'master' }}
20+
value: ${{ jobs.builder-needs-rebuilding.outputs.collector-builder-tag }}
1521

1622
env:
1723
COLLECTOR_TAG: ${{ inputs.collector-tag }}
@@ -23,7 +29,11 @@ jobs:
2329
name: Determine if builder image needs to be built
2430
runs-on: ubuntu-24.04
2531
outputs:
26-
build-image: ${{ steps.changed.outputs.builder-changed }}
32+
build-image: ${{ steps.builder-tag.outputs.build-image || false }}
33+
collector-builder-tag: ${{ steps.builder-tag.outputs.collector-builder-tag || 'master'}}
34+
35+
env:
36+
DEFAULT_BUILDER_TAG: master
2737

2838
steps:
2939
- uses: actions/checkout@v4
@@ -38,30 +48,46 @@ jobs:
3848
- builder/Dockerfile
3949
- .github/workflows/collector-builder.yml
4050
51+
- name: Check labels and define builder tag
52+
id: builder-tag
53+
if: |
54+
steps.changed.outputs.builder-changed == 'true' ||
55+
(github.event_name == 'push' && (
56+
github.ref_type == 'tag' || startsWith(github.ref_name, 'release-')
57+
)) ||
58+
contains(github.event.pull_request.labels.*.name, 'build-builder-image') ||
59+
github.event_name == 'schedule'
60+
run: |
61+
COLLECTOR_BUILDER_TAG="${DEFAULT_BUILDER_TAG}"
62+
if [[ "${{ github.event_name }}" == 'pull_request' || \
63+
"${{ github.ref_type }}" == 'tag' || \
64+
"${{ github.ref_name }}" =~ ^release- ]]; then
65+
COLLECTOR_BUILDER_TAG="${{ inputs.collector-tag }}"
66+
fi
67+
68+
echo "Rebuild builder image with tag ${COLLECTOR_BUILDER_TAG}"
69+
echo "collector-builder-tag=${COLLECTOR_BUILDER_TAG}" >> "$GITHUB_OUTPUT"
70+
echo "build-image=true" >> "$GITHUB_OUTPUT"
71+
4172
build-builder-image:
42-
name: Build the builder image
43-
runs-on: ubuntu-24.04
73+
name: Local builder image
4474
# Multiarch builds sometimes take for eeeeeeeeeever
4575
timeout-minutes: 480
4676
needs:
4777
- builder-needs-rebuilding
4878
if: |
49-
needs.builder-needs-rebuilding.outputs.build-image == 'true' ||
50-
(github.event_name == 'push' && (
51-
github.ref_type == 'tag' || startsWith(github.ref_name, 'release-')
52-
)) ||
53-
contains(github.event.pull_request.labels.*.name, 'build-builder-image') ||
54-
github.event_name == 'schedule'
55-
outputs:
56-
collector-builder-tag: ${{ steps.builder-tag.outputs.collector-builder-tag }}
79+
needs.builder-needs-rebuilding.outputs.build-image == 'true'
5780
strategy:
58-
fail-fast: false
5981
matrix:
60-
arch: [amd64, ppc64le, s390x, arm64]
82+
arch: [amd64, arm64, ppc64le]
83+
exclude:
84+
- arch: ${{ contains(inputs.architectures, 'ppc64le') && '' || 'ppc64le' }}
85+
runs-on: ${{ (matrix.arch == 'arm64' && 'ubuntu-24.04-arm') || 'ubuntu-24.04' }}
6186

6287
env:
6388
PLATFORM: linux/${{ matrix.arch }}
6489
BUILD_TYPE: ci
90+
COLLECTOR_BUILDER_TAG: ${{ needs.builder-needs-rebuilding.outputs.collector-builder-tag }}
6591

6692
steps:
6793
- uses: actions/checkout@v4
@@ -76,6 +102,54 @@ jobs:
76102
- name: Set up Docker Buildx
77103
uses: docker/setup-buildx-action@v3
78104

105+
- name: Create ansible vars
106+
run: |
107+
cat << EOF > ${{ github.workspace }}/ansible/secrets.yml
108+
---
109+
stackrox_io_username: ${{ secrets.QUAY_STACKROX_IO_RW_USERNAME }}
110+
stackrox_io_password: ${{ secrets.QUAY_STACKROX_IO_RW_PASSWORD }}
111+
rhacs_eng_username: ${{ secrets.QUAY_RHACS_ENG_RW_USERNAME }}
112+
rhacs_eng_password: ${{ secrets.QUAY_RHACS_ENG_RW_PASSWORD }}
113+
collector_git_ref: ${{ github.ref }}
114+
collector_builder_tag: ${{ env.COLLECTOR_BUILDER_TAG }}
115+
EOF
116+
117+
- name: Build images
118+
timeout-minutes: 480
119+
run: |
120+
ansible-galaxy install -r ansible/requirements.yml
121+
ansible-playbook \
122+
--connection local \
123+
-i localhost, \
124+
--limit localhost \
125+
-e arch='${{ matrix.arch }}' \
126+
-e @'${{ github.workspace }}/ansible/secrets.yml' \
127+
ansible/ci-build-builder.yml
128+
129+
build-builder-image-remote-vm:
130+
name: Remote builder image
131+
# Multiarch builds sometimes take for eeeeeeeeeever
132+
timeout-minutes: 480
133+
needs:
134+
- builder-needs-rebuilding
135+
if: |
136+
needs.builder-needs-rebuilding.outputs.build-image == 'true' &&
137+
contains(inputs.architectures, 's390x')
138+
strategy:
139+
matrix:
140+
arch: [s390x]
141+
runs-on: ubuntu-24.04
142+
143+
env:
144+
PLATFORM: linux/${{ matrix.arch }}
145+
BUILD_TYPE: ci
146+
COLLECTOR_BUILDER_TAG: ${{ needs.builder-needs-rebuilding.outputs.collector-builder-tag }}
147+
148+
steps:
149+
- uses: actions/checkout@v4
150+
with:
151+
submodules: true
152+
79153
- uses: actions/setup-python@v5
80154
with:
81155
python-version: "3.10"
@@ -101,57 +175,22 @@ jobs:
101175
job-tag: builder
102176

103177
- name: Create Build VMs
104-
if: |
105-
matrix.arch == 's390x' &&
106-
(github.event_name != 'pull_request' || contains(github.event.pull_request.labels.*.name, 'run-multiarch-builds'))
107178
run: |
108179
make -C "${{ github.workspace }}/ansible" create-build-vms
109180
110-
- name: Define builder tag
111-
id: builder-tag
112-
run: |
113-
COLLECTOR_BUILDER_TAG="${DEFAULT_BUILDER_TAG}"
114-
if [[ "${{ github.event_name }}" == 'pull_request' || \
115-
"${{ github.ref_type }}" == 'tag' || \
116-
"${{ github.ref_name }}" =~ ^release- ]]; then
117-
COLLECTOR_BUILDER_TAG="${{ inputs.collector-tag }}"
118-
fi
119-
120-
echo "COLLECTOR_BUILDER_TAG=${COLLECTOR_BUILDER_TAG}" >> "$GITHUB_ENV"
121-
echo "collector-builder-tag=${COLLECTOR_BUILDER_TAG}" >> "$GITHUB_OUTPUT"
122-
123181
- name: Create ansible vars
124182
run: |
125-
{
126-
echo "---"
127-
echo "stackrox_io_username: ${{ secrets.QUAY_STACKROX_IO_RW_USERNAME }}"
128-
echo "stackrox_io_password: ${{ secrets.QUAY_STACKROX_IO_RW_PASSWORD }}"
129-
echo "rhacs_eng_username: ${{ secrets.QUAY_RHACS_ENG_RW_USERNAME }}"
130-
echo "rhacs_eng_password: ${{ secrets.QUAY_RHACS_ENG_RW_PASSWORD }}"
131-
echo "collector_git_ref: ${{ github.ref }}"
132-
echo "collector_builder_tag: ${{ env.COLLECTOR_BUILDER_TAG }}"
133-
} > ${{ github.workspace }}/ansible/secrets.yml
183+
cat << EOF > ${{ github.workspace }}/ansible/secrets.yml
184+
---
185+
stackrox_io_username: ${{ secrets.QUAY_STACKROX_IO_RW_USERNAME }}
186+
stackrox_io_password: ${{ secrets.QUAY_STACKROX_IO_RW_PASSWORD }}
187+
rhacs_eng_username: ${{ secrets.QUAY_RHACS_ENG_RW_USERNAME }}
188+
rhacs_eng_password: ${{ secrets.QUAY_RHACS_ENG_RW_PASSWORD }}
189+
collector_git_ref: ${{ github.ref }}
190+
collector_builder_tag: ${{ needs.builder-needs-rebuilding.outputs.collector-builder-tag }}
191+
EOF
134192
135193
- name: Build images
136-
if: |
137-
(github.event_name != 'pull_request' && matrix.arch != 's390x') ||
138-
matrix.arch == 'amd64' ||
139-
(contains(github.event.pull_request.labels.*.name, 'run-multiarch-builds') && matrix.arch != 's390x')
140-
timeout-minutes: 480
141-
run: |
142-
ansible-galaxy install -r ansible/requirements.yml
143-
ansible-playbook \
144-
--connection local \
145-
-i localhost, \
146-
--limit localhost \
147-
-e arch='${{ matrix.arch }}' \
148-
-e @'${{ github.workspace }}/ansible/secrets.yml' \
149-
ansible/ci-build-builder.yml
150-
151-
- name: Build s390x images
152-
if: |
153-
(github.event_name != 'pull_request' && matrix.arch == 's390x') ||
154-
(contains(github.event.pull_request.labels.*.name, 'run-multiarch-builds') && matrix.arch == 's390x')
155194
timeout-minutes: 480
156195
run: |
157196
ansible-playbook \
@@ -162,22 +201,23 @@ jobs:
162201
ansible/ci-build-builder.yml
163202
164203
- name: Destroy VMs
165-
if: always() && matrix.arch == 's390x'
204+
if: always()
166205
run: |
167206
make -C ansible destroy-vms
168207
169208
create-multiarch-manifest:
170209
needs:
210+
- builder-needs-rebuilding
171211
- build-builder-image
212+
- build-builder-image-remote-vm
172213
name: Create Multiarch manifest
173214
runs-on: ubuntu-24.04
174215
if: |
175-
github.event_name != 'pull_request' ||
176-
(needs.build-builder-image.outputs.collector-builder-tag != 'cache' &&
177-
contains(github.event.pull_request.labels.*.name, 'run-multiarch-builds'))
216+
always() && !contains(join(needs.*.result, ','), 'failure') &&
217+
needs.builder-needs-rebuilding.outputs.build-image == 'true'
178218
env:
179-
COLLECTOR_BUILDER_TAG: ${{ needs.build-builder-image.outputs.collector-builder-tag }}
180-
ARCHS: amd64 ppc64le s390x arm64
219+
COLLECTOR_BUILDER_TAG: ${{ needs.builder-needs-rebuilding.outputs.collector-builder-tag }}
220+
ARCHS: ${{ inputs.architectures }}
181221

182222
steps:
183223
- uses: actions/checkout@v4
@@ -208,45 +248,13 @@ jobs:
208248
base-image: quay.io/rhacs-eng/collector-builder:${{ env.COLLECTOR_BUILDER_TAG }}
209249
archs: ${{ env.ARCHS }}
210250

211-
retag-x86-image:
212-
needs:
213-
- build-builder-image
214-
name: Retag x86 builder image
215-
runs-on: ubuntu-24.04
216-
if: |
217-
github.event_name == 'pull_request' &&
218-
needs.build-builder-image.outputs.collector-builder-tag != 'cache' &&
219-
!contains(github.event.pull_request.labels.*.name, 'run-multiarch-builds')
220-
env:
221-
COLLECTOR_BUILDER_TAG: ${{ needs.build-builder-image.outputs.collector-builder-tag }}
222-
steps:
223-
- name: Pull image to retag
224-
run: |
225-
docker pull "quay.io/stackrox-io/collector-builder:${COLLECTOR_BUILDER_TAG}-amd64"
226-
227-
- name: Retag and push stackrox-io
228-
uses: stackrox/actions/images/retag-and-push@v1
229-
with:
230-
src-image: quay.io/stackrox-io/collector-builder:${{ env.COLLECTOR_BUILDER_TAG }}-amd64
231-
dst-image: quay.io/stackrox-io/collector-builder:${{ env.COLLECTOR_BUILDER_TAG }}
232-
username: ${{ secrets.QUAY_STACKROX_IO_RW_USERNAME }}
233-
password: ${{ secrets.QUAY_STACKROX_IO_RW_PASSWORD }}
234-
235-
- name: Retag and push rhacs-eng
236-
uses: stackrox/actions/images/retag-and-push@v1
237-
with:
238-
src-image: quay.io/stackrox-io/collector-builder:${{ env.COLLECTOR_BUILDER_TAG }}-amd64
239-
dst-image: quay.io/rhacs-eng/collector-builder:${{ env.COLLECTOR_BUILDER_TAG }}
240-
username: ${{ secrets.QUAY_RHACS_ENG_RW_USERNAME }}
241-
password: ${{ secrets.QUAY_RHACS_ENG_RW_PASSWORD }}
242-
243251
notify:
244252
runs-on: ubuntu-24.04
245253
if: always() && contains(join(needs.*.result, ','), 'failure') && github.event_name != 'pull_request'
246254
needs:
247255
- build-builder-image
256+
- build-builder-image-remote-vm
248257
- create-multiarch-manifest
249-
- retag-x86-image
250258
steps:
251259
- name: Slack notification
252260
uses: rtCamp/action-slack-notify@v2

0 commit comments

Comments
 (0)