name: CICD on: workflow_dispatch: pull_request: types: - opened - reopened - synchronize - ready_for_review push: branches: - 'master' concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: init: name: Init runs-on: ubuntu-latest steps: - name: Get PR head ref if: ${{ github.event_name == 'pull_request' }} id: pr_head_ref run: | echo "ref=refs/pull/${{ github.event.pull_request.number }}/head" >> $GITHUB_OUTPUT outputs: ref: >- ${{ (github.event_name == 'pull_request' && startsWith(github.head_ref, 'release/v')) && steps.pr_head_ref.outputs.ref || github.ref }} checks: uses: ./.github/workflows/checks.yml sanitize: name: Sanitize needs: [init, checks] uses: ./.github/workflows/sanitize.yml build: name: Build & Test needs: [init, checks] uses: ./.github/workflows/build.yml with: ref: ${{ needs.init.outputs.ref }} release: name: Release needs: [init, checks, build, sanitize] if: > github.event_name == 'pull_request' && startsWith(github.head_ref, 'release/v') && !github.event.pull_request.draft uses: ./.github/workflows/release.yml with: ref: ${{ needs.init.outputs.ref }} publish: name: Publish needs: release uses: ./.github/workflows/publish.yml