feat(tickets): group unticketed sessions by repo #209
Workflow file for this run
This file contains hidden or 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: [main] | |
| pull_request: | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| pr-title: | |
| name: PR title (Conventional Commits) | |
| if: github.event_name == 'pull_request' | |
| runs-on: ubuntu-latest | |
| steps: | |
| # release-please only bumps/releases on a parseable Conventional Commit. | |
| # A malformed title (e.g. an empty scope `fix():`) silently skips the | |
| # release with no error, so gate it here at PR time. Title is read via | |
| # env, never interpolated into the script (avoids title injection). | |
| - name: Validate PR title | |
| env: | |
| TITLE: ${{ github.event.pull_request.title }} | |
| run: | | |
| echo "Title: $TITLE" | |
| pattern='^(feat|fix|docs|chore|refactor|test|build|ci|perf|style|revert)(\([a-z0-9._-]+\))?!?: .+' | |
| if ! printf '%s' "$TITLE" | grep -qE "$pattern"; then | |
| echo "::error::PR title must be a Conventional Commit — 'type: subject' or 'type(scope): subject'. An empty scope like 'fix():' is invalid and silently skips the release." | |
| exit 1 | |
| fi | |
| shell: | |
| name: shell syntax + shellcheck | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 | |
| - name: bash -n on tracked shell scripts | |
| run: | | |
| set -e | |
| mapfile -d '' files < <(git ls-files -z '*.sh') | |
| for f in "${files[@]}"; do | |
| echo "→ bash -n $f" | |
| bash -n "$f" | |
| done | |
| - name: shellcheck | |
| uses: ludeeus/action-shellcheck@00cae500b08a931fb5698e11e79bfbd38e612a38 # v2.0.0 | |
| with: | |
| severity: warning | |
| build-macos: | |
| name: swift build (${{ matrix.arch }}) | |
| runs-on: macos-15 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| arch: [arm64, x86_64] | |
| steps: | |
| - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 | |
| - name: build StackNudge.app | |
| run: ./build.sh ${{ matrix.arch }} | |
| - name: verify executable exists + is correct arch | |
| run: | | |
| set -e | |
| bin=$(ls build/StackNudge.app/Contents/MacOS/) | |
| file "build/StackNudge.app/Contents/MacOS/$bin" | |
| file "build/StackNudge.app/Contents/MacOS/$bin" | grep -q "${{ matrix.arch }}" | |
| - name: verify Info.plist is valid | |
| run: plutil -lint panel/Info.plist | |
| test-macos: | |
| name: swift test | |
| runs-on: macos-15 | |
| steps: | |
| - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 | |
| - name: print toolchain | |
| run: | | |
| xcode-select -p | |
| swift --version | |
| - name: swift test | |
| run: swift test |