Add early CI before location and transport development, with stable SwiftLint, Build (primary) and Build (macOS 15) checks. Build jobs compile Debug and Release using Xcode 27.1 on xcode-27 and Xcode 26.3 on macos-15, verify the toolchain, and check arm64 binaries, deployment target 15.0 and ad hoc signatures. The preview runner image is accepted for this stage; Xcode 27.1 itself is a final release.
Provide scripts/check-local.sh to run the same checks locally, with shared binary verification and README instructions. Pin Actions by full SHA and SwiftLint 0.65.1 by version and download checksum. Use read-only permissions, bounded timeouts, cancellation of superseded runs and seven-day failure diagnostics with local paths replaced.
Validation: the complete primary-profile check passed locally, including lint, Debug/Release and binary/signature checks. Isolated lint and compilation failures were rejected, and the original sources passed again. Workflow structure and shell syntax were checked. Hosted CI passed all three checks. Logs confirm Xcode 27.1/SDK 27.0 on macOS 27.0.1 and Xcode 26.3/SDK 26.2 on macOS 15.7.9; both compiled Debug/Release and verified binaries/signatures. All three checks are required by the active main ruleset, with the branch required to be up to date and no bypass.
Hosted validation covers the first four of the six original acceptance criteria:
Restoration returned all checks to green. The restored tree matches the initial implementation.
Real fork PR #23 required first-time contributor approval; its own run then passed all checks. Job logs confirm read-only Contents/Metadata permissions and Secret source: None.
The original six-item acceptance checklist is retained unchanged in #2: five criteria are verified, and the future-test criterion remains an ongoing obligation. Each subsequent feature PR must include meaningful tests and run them in CI, starting with #3. Keep #2 open until the first push run on main passes after integration; close it explicitly after verification.
There is no test target yet; configuration tests start in #3. CI does not replace manual permission, sleep or Gatekeeper checks. Dependency-Track is deferred until external application dependencies exist.
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.
## 📋 Pull Request Information
**Original PR:** https://github.com/jayanezj/traccar-client-macos/pull/22
**Author:** [@jayanezj](https://github.com/jayanezj)
**Created:** 10/23/2026
**Status:** ✅ Merged
**Merged:** 10/23/2026
**Merged by:** [@jayanezj](https://github.com/jayanezj)
**Base:** `main` ← **Head:** `feature/2-github-actions-ci`
---
### 📝 Commits (3)
- [`744e349`](https://github.com/jayanezj/traccar-client-macos/commit/744e3494d9e89ec08581bb92610077f1ceb5ffe0) ci: add early arm64 builds and SwiftLint checks (#2)
- [`86a6dd5`](https://github.com/jayanezj/traccar-client-macos/commit/86a6dd52bec4959d279d0edee96ff4b98c6a931b) test(ci): verify hosted lint and build failures (#2)
- [`a7435b4`](https://github.com/jayanezj/traccar-client-macos/commit/a7435b48e85802888c686f1a989dc088152b727e) Revert "test(ci): verify hosted lint and build failures (#2)"
### 📊 Changes
**7 files changed** (+312 additions, -1 deletions)
<details>
<summary>View changed files</summary>
➕ `.github/workflows/ci.yml` (+109 -0)
➕ `.swiftlint.yml` (+6 -0)
📝 `README.md` (+60 -1)
➕ `scripts/check-local.sh` (+55 -0)
➕ `scripts/lint.sh` (+38 -0)
➕ `scripts/verify-build.sh` (+17 -0)
➕ `scripts/verify-toolchain.sh` (+27 -0)
</details>
### 📄 Description
Refs #2.
Add early CI before location and transport development, with stable `SwiftLint`, `Build (primary)` and `Build (macOS 15)` checks. Build jobs compile Debug and Release using Xcode 27.1 on `xcode-27` and Xcode 26.3 on `macos-15`, verify the toolchain, and check arm64 binaries, deployment target 15.0 and ad hoc signatures. The preview runner image is accepted for this stage; Xcode 27.1 itself is a final release.
Provide `scripts/check-local.sh` to run the same checks locally, with shared binary verification and README instructions. Pin Actions by full SHA and SwiftLint 0.65.1 by version and download checksum. Use read-only permissions, bounded timeouts, cancellation of superseded runs and seven-day failure diagnostics with local paths replaced.
Validation: the complete primary-profile check passed locally, including lint, Debug/Release and binary/signature checks. Isolated lint and compilation failures were rejected, and the original sources passed again. Workflow structure and shell syntax were checked. [Hosted CI](https://github.com/jayanezj/traccar-client-macos/actions/runs/40003762893) passed all three checks. Logs confirm Xcode 27.1/SDK 27.0 on macOS 27.0.1 and Xcode 26.3/SDK 26.2 on macOS 15.7.9; both compiled Debug/Release and verified binaries/signatures. All three checks are required by the active main ruleset, with the branch required to be up to date and no bypass.
Hosted validation covers the first four of the six original acceptance criteria:
- [Deliberate lint/build failure](https://github.com/jayanezj/traccar-client-macos/actions/runs/40004871786) blocked merging and uploaded sanitized diagnostics.
- [Restoration](https://github.com/jayanezj/traccar-client-macos/actions/runs/40005084222) returned all checks to green. The restored tree matches the initial implementation.
- [Real fork PR #23](https://github.com/jayanezj/traccar-client-macos/pull/23) required first-time contributor approval; [its own run](https://github.com/jayanezj/traccar-client-macos/actions/runs/40005555955) then passed all checks. Job logs confirm read-only Contents/Metadata permissions and `Secret source: None`.
The original six-item acceptance checklist is retained unchanged in #2: five criteria are verified, and the future-test criterion remains an ongoing obligation. Each subsequent feature PR must include meaningful tests and run them in CI, starting with #3. Keep #2 open until the first `push` run on `main` passes after integration; close it explicitly after verification.
There is no test target yet; configuration tests start in #3. CI does not replace manual permission, sleep or Gatekeeper checks. Dependency-Track is deferred until external application dependencies exist.
---
<sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
jayanezj
added this to the M1 - Foundation and CI milestone 2026-10-23 23:01:12 +02:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
📋 Pull Request Information
Original PR: https://github.com/jayanezj/traccar-client-macos/pull/22
Author: @jayanezj
Created: 10/23/2026
Status: ✅ Merged
Merged: 10/23/2026
Merged by: @jayanezj
Base:
main← Head:feature/2-github-actions-ci📝 Commits (3)
744e349ci: add early arm64 builds and SwiftLint checks (#2)86a6dd5test(ci): verify hosted lint and build failures (#2)a7435b4Revert "test(ci): verify hosted lint and build failures (#2)"📊 Changes
7 files changed (+312 additions, -1 deletions)
View changed files
➕
.github/workflows/ci.yml(+109 -0)➕
.swiftlint.yml(+6 -0)📝
README.md(+60 -1)➕
scripts/check-local.sh(+55 -0)➕
scripts/lint.sh(+38 -0)➕
scripts/verify-build.sh(+17 -0)➕
scripts/verify-toolchain.sh(+27 -0)📄 Description
Refs #2.
Add early CI before location and transport development, with stable
SwiftLint,Build (primary)andBuild (macOS 15)checks. Build jobs compile Debug and Release using Xcode 27.1 onxcode-27and Xcode 26.3 onmacos-15, verify the toolchain, and check arm64 binaries, deployment target 15.0 and ad hoc signatures. The preview runner image is accepted for this stage; Xcode 27.1 itself is a final release.Provide
scripts/check-local.shto run the same checks locally, with shared binary verification and README instructions. Pin Actions by full SHA and SwiftLint 0.65.1 by version and download checksum. Use read-only permissions, bounded timeouts, cancellation of superseded runs and seven-day failure diagnostics with local paths replaced.Validation: the complete primary-profile check passed locally, including lint, Debug/Release and binary/signature checks. Isolated lint and compilation failures were rejected, and the original sources passed again. Workflow structure and shell syntax were checked. Hosted CI passed all three checks. Logs confirm Xcode 27.1/SDK 27.0 on macOS 27.0.1 and Xcode 26.3/SDK 26.2 on macOS 15.7.9; both compiled Debug/Release and verified binaries/signatures. All three checks are required by the active main ruleset, with the branch required to be up to date and no bypass.
Hosted validation covers the first four of the six original acceptance criteria:
Secret source: None.The original six-item acceptance checklist is retained unchanged in #2: five criteria are verified, and the future-test criterion remains an ongoing obligation. Each subsequent feature PR must include meaningful tests and run them in CI, starting with #3. Keep #2 open until the first
pushrun onmainpasses after integration; close it explicitly after verification.There is no test target yet; configuration tests start in #3. CI does not replace manual permission, sleep or Gatekeeper checks. Dependency-Track is deferred until external application dependencies exist.
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.