Skip to content

Commit

Permalink
Merge pull request #18 from su2code/feature_tsan_2
Browse files Browse the repository at this point in the history
Split build-su2-tsan into multiple jobs
  • Loading branch information
jblueh committed Jun 26, 2023
2 parents cf09a7a + b269936 commit 1decd0f
Showing 1 changed file with 70 additions and 14 deletions.
84 changes: 70 additions & 14 deletions .github/workflows/docker-image-upload.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,19 @@ on:
- 'master'

jobs:
build-su2:
date-tag:
runs-on: ubuntu-latest
outputs:
date_tag: ${{ steps.vars.outputs.date_tag }}
steps:
- name: Set variables
id: vars
run: echo "::set-output name=date_tag::$(date +%y%m%d-%H%M)"

build-su2:
needs: [date-tag]
if: ${{ always() && !(contains(needs.*.result, 'failure')) }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
Expand All @@ -32,21 +41,68 @@ jobs:
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Set variables
id: vars
run: echo "::set-output name=date_tag::$(date +%y%m%d-%H%M)"

- name: Docker Buildx Create
run: docker buildx create --use

- name: Build and push build-su2
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/
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/

build-su2-tsan-platforms:
needs: [date-tag]
if: ${{ always() && !(contains(needs.*.result, 'failure')) }}
runs-on: ubuntu-latest
strategy:
fail-fast: false,
matrix:
platform: [amd64, arm64]
steps:
- name: Checkout
uses: actions/checkout@v2

- name: Set up QEMU
uses: docker/setup-qemu-action@v1
with:
platforms: arm64

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1

- name: Login to Github Docker Registry
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Docker Buildx Create
run: docker buildx create --use

- name: Build and push single-platform build-su2-tsan
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/

build-su2-tsan:
needs: [date-tag, build-su2-tsan-platforms]
if: ${{ always() && !(contains(needs.*.result, 'failure')) }}
runs-on: ubuntu-latest
steps:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1

- name: Login to Github Docker Registry
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Docker Buildx Create
run: docker buildx create --use

- name: Build and push build-su2-tsan
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/
- name: Merge single-platform build-su2-tsan images
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 }}

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

- name: Build and push test-su2
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/
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/

- name: Build and push test-su2-tsan
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/
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/

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

- name: Build and push build-su2-cross
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/
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/

cross-build-su2-linux:
needs: [build-su2, cross-build-su2-mac]
Expand Down Expand Up @@ -133,4 +189,4 @@ jobs:
run: docker buildx create --use

- name: Build and push build-su2-cross
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/
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 comments on commit 1decd0f

Please sign in to comment.