You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ocrd-galley/.github/workflows/build.yml

108 lines
2.8 KiB
YAML

name: build
on:
workflow_dispatch:
push:
branches:
- 'master'
- 'fix/*'
jobs:
matrix:
runs-on: ubuntu-latest
outputs:
core: ${{ steps.step1.outputs.core }}
rest: ${{ steps.step1.outputs.rest }}
all: ${{ steps.step1.outputs.all }}
steps:
-
name: Checkout
uses: actions/checkout@v3
-
name: Generate outputs
id: step1
run: |
echo "core=$(./.github/list-subimages --core --json)" >>$GITHUB_OUTPUT
echo "rest=$(./.github/list-subimages --rest --json)" >>$GITHUB_OUTPUT
echo "all=$(./.github/list-subimages --json)" >>$GITHUB_OUTPUT
echo "GITHUB_OUTPUT:"
cat $GITHUB_OUTPUT
build-core:
needs: matrix
strategy:
fail-fast: false
matrix:
subimage: ${{ fromJson(needs.matrix.outputs.core) }}
uses: ./.github/workflows/build-subimage.yml
with:
subimage: ${{ matrix.subimage }}
tags: |
type=sha,format=long
# Here: NOT the full tags, just the sha! (they get added below)
secrets: inherit
build-rest:
needs: [matrix, build-core]
strategy:
fail-fast: false
matrix:
subimage: ${{ fromJson(needs.matrix.outputs.rest) }}
uses: ./.github/workflows/build-subimage.yml
with:
subimage: ${{ matrix.subimage }}
tags: |
type=sha,format=long
secrets: inherit
test:
needs: [matrix, build-rest]
strategy:
fail-fast: false
matrix:
subimage: ${{ fromJson(needs.matrix.outputs.all) }}
runs-on: ubuntu-latest
env:
DOCKER_IMAGE_TAG: sha-${{ github.sha }} # needed to run the correct version through the wrapper
steps:
-
name: Checkout
uses: actions/checkout@v3
-
name: Install wrapper
run: |
sudo apt-get install -y python3-pip
cd wrapper && pip install .
-
name: Test
run: |
./test-${{ matrix.subimage }}.sh
# At this point, we have successfully built, uploaded and tested the images. We now just need to add
# tags. We do this by building again, but using the formerly built images to
# cache from.
push-with-tags:
needs: [matrix, test]
strategy:
matrix:
subimage: ${{ fromJson(needs.matrix.outputs.all) }}
uses: ./.github/workflows/build-subimage.yml
with:
subimage: ${{ matrix.subimage }}
tags: |
type=sha,format=long
type=edge,branch=master
type=ref,event=branch
type=semver,pattern={{version}}
# Here: full tags
# Note: Do NOT use event=tag here, unless re-configuring the "latest"
# behavior too as that triggers on event=tag by default. By default,
# "latest" triggers on type=semver here, too (which is wanted).
secrets: inherit