name: CICD on: workflow_dispatch: pull_request: types: - opened - reopened - synchronize - ready_for_review push: branches-ignore: - release/v* concurrency: group: > ${{ github.workflow }} @ ${{ github.ref == 'refs/heads/master' && github.ref_name || '' }}${{ github.ref == 'refs/heads/master' && github.sha || github.event.pull_request.head.label || github.head_ref || 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