krz/domain-dig

an ios app for DNS & SSL analysis

clone: git clone https://gitbay.org/krz/domain-dig.git

v4.8.2: .github/workflows/build.yml · raw

 1name: Build
 2
 3# Compile gate for the GitHub mirror. builds.sr.ht is the primary remote for
 4# this project but has no macOS images, so xcodebuild cannot run there; this job
 5# compiles the app on a GitHub-hosted macOS runner instead.
 6#
 7# This runs `xcodebuild build`, not `test`: the project has no test target yet
 8# (planned for v5.0.0 in RELEASE_ROADMAP.md). When a test target and test plan
 9# exist, switch the final step to `xcodebuild test -testPlan <name>` and rename
10# this workflow — the rest of the setup already matches a test run.
11#
12# pull_request only, plus manual dispatch. GitHub builds the merge result (PR
13# merged into main), so a green PR validates exactly what will land on main.
14# Note: this repo currently also pushes directly to main for releases, and those
15# pushes are NOT gated here — add a `push: { branches: [main] }` trigger below if
16# you want direct-to-main commits covered too.
17#
18# paths-ignore skips prose-only changes. Both globs are single-star, so they
19# match the repo root and Docs/ but nothing deeper — a .md that ever lands inside
20# a source directory still builds.
21on:
22  pull_request:
23    paths-ignore: ['*.md', 'Docs/*.md']
24  workflow_dispatch:
25
26# The job only reads code; drop the default read-write GITHUB_TOKEN scope.
27permissions:
28  contents: read
29
30concurrency:
31  group: build-${{ github.ref }}
32  cancel-in-progress: true
33
34jobs:
35  build:
36    name: xcodebuild build
37    # macos-latest still points at macOS 15, which lacks the iOS 26 SDK this app
38    # targets (deployment target 26.2).
39    runs-on: macos-26
40
41    steps:
42      - uses: actions/checkout@v7
43
44      - name: Show toolchain
45        run: |
46          xcodebuild -version
47          swift --version
48
49      - name: Select simulator
50        id: sim
51        run: |
52          set -euo pipefail
53          udid=$(xcrun simctl list devices available --json \
54            | jq -r '[.devices[][] | select(.name | startswith("iPhone"))] | first | .udid')
55          if [ -z "$udid" ] || [ "$udid" = "null" ]; then
56            echo "No available iPhone simulator on this image" >&2
57            xcrun simctl list devices available >&2
58            exit 1
59          fi
60          echo "udid=$udid" >> "$GITHUB_OUTPUT"
61
62      - name: Build
63        run: |
64          set -o pipefail
65          xcodebuild build \
66            -project DomainDig.xcodeproj \
67            -scheme DomainDig \
68            -destination "id=${{ steps.sim.outputs.udid }}" \
69            -resultBundlePath BuildResults.xcresult \
70            CODE_SIGNING_ALLOWED=NO
71
72      - name: Upload results
73        if: failure()
74        uses: actions/upload-artifact@v4
75        with:
76          name: build-results
77          path: BuildResults.xcresult
78          retention-days: 7