Skip to content

Commit 1decd0f

Browse files
authored
Merge pull request #18 from su2code/feature_tsan_2
Split build-su2-tsan into multiple jobs
2 parents cf09a7a + b269936 commit 1decd0f

File tree

1 file changed

+70
-14
lines changed

1 file changed

+70
-14
lines changed

.github/workflows/docker-image-upload.yml

Lines changed: 70 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,19 @@ on:
99
- 'master'
1010

1111
jobs:
12-
build-su2:
12+
date-tag:
1313
runs-on: ubuntu-latest
1414
outputs:
1515
date_tag: ${{ steps.vars.outputs.date_tag }}
16+
steps:
17+
- name: Set variables
18+
id: vars
19+
run: echo "::set-output name=date_tag::$(date +%y%m%d-%H%M)"
20+
21+
build-su2:
22+
needs: [date-tag]
23+
if: ${{ always() && !(contains(needs.*.result, 'failure')) }}
24+
runs-on: ubuntu-latest
1625
steps:
1726
- name: Checkout
1827
uses: actions/checkout@v2
@@ -32,21 +41,68 @@ jobs:
3241
username: ${{ github.actor }}
3342
password: ${{ secrets.GITHUB_TOKEN }}
3443

35-
- name: Set variables
36-
id: vars
37-
run: echo "::set-output name=date_tag::$(date +%y%m%d-%H%M)"
38-
3944
- name: Docker Buildx Create
4045
run: docker buildx create --use
4146

4247
- name: Build and push build-su2
43-
run: docker buildx build --platform=linux/amd64 --platform=linux/arm64 -t ghcr.io/${{ github.repository_owner }}/su2/build-su2:${{ steps.vars.outputs.date_tag }} --push ./build/
48+
run: docker buildx build --platform=linux/amd64 --platform=linux/arm64 -t ghcr.io/${{ github.repository_owner }}/su2/build-su2:${{ needs.date-tag.outputs.date_tag }} --push ./build/
49+
50+
build-su2-tsan-platforms:
51+
needs: [date-tag]
52+
if: ${{ always() && !(contains(needs.*.result, 'failure')) }}
53+
runs-on: ubuntu-latest
54+
strategy:
55+
fail-fast: false,
56+
matrix:
57+
platform: [amd64, arm64]
58+
steps:
59+
- name: Checkout
60+
uses: actions/checkout@v2
61+
62+
- name: Set up QEMU
63+
uses: docker/setup-qemu-action@v1
64+
with:
65+
platforms: arm64
66+
67+
- name: Set up Docker Buildx
68+
uses: docker/setup-buildx-action@v1
69+
70+
- name: Login to Github Docker Registry
71+
uses: docker/login-action@v1
72+
with:
73+
registry: ghcr.io
74+
username: ${{ github.actor }}
75+
password: ${{ secrets.GITHUB_TOKEN }}
76+
77+
- name: Docker Buildx Create
78+
run: docker buildx create --use
79+
80+
- name: Build and push single-platform build-su2-tsan
81+
run: docker buildx build --platform=linux/${{ matrix.platform }} -t ghcr.io/${{ github.repository_owner }}/su2/build-su2-tsan-${{ matrix.platform }}:${{ needs.date-tag.outputs.date_tag }} --push --file ./build/Dockerfile.tsan ./build/
82+
83+
build-su2-tsan:
84+
needs: [date-tag, build-su2-tsan-platforms]
85+
if: ${{ always() && !(contains(needs.*.result, 'failure')) }}
86+
runs-on: ubuntu-latest
87+
steps:
88+
- name: Set up Docker Buildx
89+
uses: docker/setup-buildx-action@v1
90+
91+
- name: Login to Github Docker Registry
92+
uses: docker/login-action@v1
93+
with:
94+
registry: ghcr.io
95+
username: ${{ github.actor }}
96+
password: ${{ secrets.GITHUB_TOKEN }}
97+
98+
- name: Docker Buildx Create
99+
run: docker buildx create --use
44100

45-
- name: Build and push build-su2-tsan
46-
run: docker buildx build --platform=linux/amd64 --platform=linux/arm64 -t ghcr.io/${{ github.repository_owner }}/su2/build-su2-tsan:${{ steps.vars.outputs.date_tag }} --push --file ./build/Dockerfile.tsan ./build/
101+
- name: Merge single-platform build-su2-tsan images
102+
run: docker buildx imagetools create -t ghcr.io/${{ github.repository_owner }}/su2/build-su2-tsan:${{ needs.date-tag.outputs.date_tag }} ghcr.io/${{ github.repository_owner }}/su2/build-su2-tsan-amd64:${{ needs.date-tag.outputs.date_tag }} ghcr.io/${{ github.repository_owner }}/su2/build-su2-tsan-arm64:${{ needs.date-tag.outputs.date_tag }}
47103

48104
test-su2:
49-
needs: [build-su2]
105+
needs: [date-tag, build-su2, build-su2-tsan]
50106
if: ${{ always() && !(contains(needs.*.result, 'failure')) }}
51107
runs-on: ubuntu-latest
52108
steps:
@@ -72,13 +128,13 @@ jobs:
72128
run: docker buildx create --use
73129

74130
- name: Build and push test-su2
75-
run: docker buildx build --platform=linux/amd64 --platform=linux/arm64 --build-arg BASE_IMAGE=ghcr.io/${{ github.repository_owner }}/su2/build-su2:${{ needs.build-su2.outputs.date_tag }} -t ghcr.io/${{ github.repository_owner }}/su2/test-su2:${{ needs.build-su2.outputs.date_tag }} --push ./test/
131+
run: docker buildx build --platform=linux/amd64 --platform=linux/arm64 --build-arg BASE_IMAGE=ghcr.io/${{ github.repository_owner }}/su2/build-su2:${{ needs.date-tag.outputs.date_tag }} -t ghcr.io/${{ github.repository_owner }}/su2/test-su2:${{ needs.date-tag.outputs.date_tag }} --push ./test/
76132

77133
- name: Build and push test-su2-tsan
78-
run: docker buildx build --platform=linux/amd64 --platform=linux/arm64 --build-arg BASE_IMAGE=ghcr.io/${{ github.repository_owner }}/su2/build-su2-tsan:${{ needs.build-su2.outputs.date_tag }} -t ghcr.io/${{ github.repository_owner }}/su2/test-su2-tsan:${{ needs.build-su2.outputs.date_tag }} --push ./test/
134+
run: docker buildx build --platform=linux/amd64 --platform=linux/arm64 --build-arg BASE_IMAGE=ghcr.io/${{ github.repository_owner }}/su2/build-su2-tsan:${{ needs.date-tag.outputs.date_tag }} -t ghcr.io/${{ github.repository_owner }}/su2/test-su2-tsan:${{ needs.date-tag.outputs.date_tag }} --push ./test/
79135

80136
cross-build-su2-mac:
81-
needs: [build-su2]
137+
needs: [date-tag, build-su2]
82138
if: ${{ always() && !(contains(needs.*.result, 'failure')) }}
83139
runs-on: ubuntu-latest
84140
steps:
@@ -104,7 +160,7 @@ jobs:
104160
run: docker buildx create --use
105161

106162
- name: Build and push build-su2-cross
107-
run: docker buildx build --platform=linux/amd64 --platform=linux/arm64 --build-arg BASE_IMAGE=ghcr.io/${{ github.repository_owner }}/su2/build-su2:${{ needs.build-su2.outputs.date_tag }} -t ghcr.io/${{ github.repository_owner }}/su2/build-su2-cross-stage1:${{ needs.build-su2.outputs.date_tag }} --push --file ./build_cross/Dockerfile.stage1 ./build_cross/
163+
run: docker buildx build --platform=linux/amd64 --platform=linux/arm64 --build-arg BASE_IMAGE=ghcr.io/${{ github.repository_owner }}/su2/build-su2:${{ needs.date-tag.outputs.date_tag }} -t ghcr.io/${{ github.repository_owner }}/su2/build-su2-cross-stage1:${{ needs.date-tag.outputs.date_tag }} --push --file ./build_cross/Dockerfile.stage1 ./build_cross/
108164

109165
cross-build-su2-linux:
110166
needs: [build-su2, cross-build-su2-mac]
@@ -133,4 +189,4 @@ jobs:
133189
run: docker buildx create --use
134190

135191
- name: Build and push build-su2-cross
136-
run: docker buildx build --platform=linux/amd64 --platform=linux/arm64 --build-arg BASE_IMAGE=ghcr.io/${{ github.repository_owner }}/su2/build-su2-cross-stage1:${{ needs.build-su2.outputs.date_tag }} -t ghcr.io/${{ github.repository_owner }}/su2/build-su2-cross:${{ needs.build-su2.outputs.date_tag }} --push --file ./build_cross/Dockerfile.stage2 ./build_cross/
192+
run: docker buildx build --platform=linux/amd64 --platform=linux/arm64 --build-arg BASE_IMAGE=ghcr.io/${{ github.repository_owner }}/su2/build-su2-cross-stage1:${{ needs.date-tag.outputs.date_tag }} -t ghcr.io/${{ github.repository_owner }}/su2/build-su2-cross:${{ needs.date-tag.outputs.date_tag }} --push --file ./build_cross/Dockerfile.stage2 ./build_cross/

0 commit comments

Comments
 (0)