mirror of
https://github.com/kernelkit/infix.git
synced 2026-07-22 01:13:00 +02:00
92 lines
3.0 KiB
YAML
92 lines
3.0 KiB
YAML
name: CI
|
|
|
|
on:
|
|
pull_request:
|
|
types: [opened, synchronize, reopened, labeled]
|
|
push:
|
|
branches:
|
|
- main
|
|
- ci-work
|
|
workflow_dispatch:
|
|
|
|
concurrency:
|
|
group: ci-${{ github.event.pull_request.number || github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
# Gate all builds through this check to prevent wasted runs. Only run on
|
|
# 'labeled' events when the label is actually 'ci:main'. Concurrency control
|
|
# above handles canceling the 'opened' event when 'labeled' arrives quickly
|
|
# after (e.g., when creating a PR with ci:main already attached). See #1154.
|
|
check-trigger:
|
|
if: |
|
|
startsWith(github.repository, 'kernelkit/') &&
|
|
(github.event_name != 'pull_request' ||
|
|
github.event.action != 'labeled' ||
|
|
github.event.label.name == 'ci:main')
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
x86_64_target: ${{ steps.set-targets.outputs.x86_64_target }}
|
|
aarch64_target: ${{ steps.set-targets.outputs.aarch64_target }}
|
|
arm_target: ${{ steps.set-targets.outputs.arm_target }}
|
|
steps:
|
|
- run: |
|
|
echo "Triggering build, logging meta data ..."
|
|
echo "Event : ${{ github.event_name }}"
|
|
echo "Action : ${{ github.event.action }}"
|
|
echo "Ref : ${{ github.ref }}"
|
|
echo "PR : ${{ github.event.pull_request.number }}"
|
|
echo "Label : ${{ github.event.label.name }}"
|
|
- id: set-targets
|
|
run: |
|
|
if [[ "${{ github.event_name }}" == "pull_request" ]] && \
|
|
! echo '${{ toJSON(github.event.pull_request.labels.*.name) }}' \
|
|
| grep -q "ci:main"; then
|
|
echo "x86_64_target=x86_64_minimal" >> $GITHUB_OUTPUT
|
|
echo "aarch64_target=aarch64_minimal" >> $GITHUB_OUTPUT
|
|
echo "arm_target=arm_minimal" >> $GITHUB_OUTPUT
|
|
else
|
|
echo "x86_64_target=x86_64" >> $GITHUB_OUTPUT
|
|
echo "aarch64_target=aarch64" >> $GITHUB_OUTPUT
|
|
echo "arm_target=arm" >> $GITHUB_OUTPUT
|
|
fi
|
|
unit-test:
|
|
needs: check-trigger
|
|
uses: ./.github/workflows/unit-test.yml
|
|
with:
|
|
name: "infix"
|
|
target: ${{ needs.check-trigger.outputs.x86_64_target }}
|
|
|
|
build-x86_64:
|
|
needs: [check-trigger, unit-test]
|
|
uses: ./.github/workflows/build.yml
|
|
with:
|
|
name: "infix"
|
|
target: ${{ needs.check-trigger.outputs.x86_64_target }}
|
|
|
|
build-aarch64:
|
|
needs: [check-trigger, unit-test]
|
|
uses: ./.github/workflows/build.yml
|
|
with:
|
|
name: "infix"
|
|
target: ${{ needs.check-trigger.outputs.aarch64_target }}
|
|
|
|
build-arm:
|
|
needs: [check-trigger, unit-test]
|
|
uses: ./.github/workflows/build.yml
|
|
with:
|
|
name: "infix"
|
|
target: ${{ needs.check-trigger.outputs.arm_target }}
|
|
|
|
test-run-x86_64:
|
|
needs: [check-trigger, build-x86_64]
|
|
uses: ./.github/workflows/test.yml
|
|
with:
|
|
target: ${{ needs.check-trigger.outputs.x86_64_target }}
|
|
name: "infix"
|
|
|
|
test-publish-x86_64:
|
|
if: ${{ github.repository_owner == 'kernelkit' && github.ref_name == 'main' }}
|
|
needs: test-run-x86_64
|
|
uses: ./.github/workflows/publish.yml
|