GitHub Actions version matching is weird #1146
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
jobs: | |
build: | |
name: Build and Test | |
runs-on: macos-15 | |
permissions: | |
contents: read | |
checks: write | |
pull-requests: write | |
env: | |
IS_CI: 1 | |
steps: | |
- uses: maxim-lobanov/setup-xcode@v1 | |
with: | |
xcode-version: 16.1.0 | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Prepare CI environment | |
run: ./scripts/github-ci-pre.sh | |
- name: Generate and lint docs | |
run: ./scripts/github-ci-docs.sh | |
- name: Build for testing | |
run: ./scripts/github-ci-testbuild.sh | |
- name: Run tests | |
id: test | |
run: ./scripts/github-ci-test.sh | |
- name: Report test results | |
uses: slidoapp/[email protected] | |
with: | |
path: build/TestResults.xcresult | |
upload-bundles: never | |
if: always() | |
- name: Report test coverage to Codecov | |
if: always() | |
uses: codecov/codecov-action@v4 | |
with: | |
verbose: false | |
token: ${{ secrets.CODECOV_TOKEN }} | |
plugin: xcode | |
files: artifacts/coverage.xml | |
- name: Upload artifacts (build log) | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: build.log | |
path: artifacts/build.log | |
- name: Upload artifacts (test log) | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: test.log | |
path: artifacts/test.log | |
- name: Upload artifacts (test results) | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: TestResults.xcresult | |
path: artifacts/TestResults.xcresult | |
- name: Upload artifacts (docstrings lint annotations) | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: docstrings-lint-annotations.json | |
path: artifacts/annotations.json | |
- name: Upload artifacts (coverage) | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: coverage.xml | |
path: artifacts/coverage.xml | |
- name: Send notification (Push) | |
if: ${{ always() && github.event_name == 'push' && github.repository == 'hammerspoon/hammerspoon' }} | |
run: | | |
/usr/bin/curl -H "X-CI-WebHook: true" -H "Content-Type: application/json" -d '{"secret": "${{ secrets.CI_WEBHOOK_SECRET }}", "repository": "hammerspoon", "workflow": "CI (Push)", "message": "CI for ${{ github.event.compare }} (${{ github.event.head_commit.author.name }}):\n * ${{ toJSON(github.event.head_commit.message)}}\n * ${{ steps.test.outputs.test_result }}"}' "${{ secrets.CI_WEBHOOK_URL }}" | |
- name: Send notification (PR) | |
if: ${{ always() && github.event_name == 'pull_request' && github.repository == 'hammerspoon/hammerspoon' && env.CI_WEBHOOK_URL != '' }} | |
env: | |
CI_WEBHOOK_URL: ${{ secrets.CI_WEBHOOK_URL }} | |
run: | | |
/usr/bin/curl -H "X-CI-WebHook: true" -H "Content-Type: application/json" -d '{"secret": "${{ secrets.CI_WEBHOOK_SECRET }}", "repository": "hammerspoon", "workflow": "CI (PR)", "message": "CI for ${{ github.event.pull_request.html_url }} (${{ github.actor }})\n * ${{ github.event.pull_request.title }}\n * ${{ steps.test.outputs.test_result }}"}' "${{ secrets.CI_WEBHOOK_URL }}" |