mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-04 10:33:45 +00:00
728ace6f81
Every check was red on every pull request. Upstream declares permissions: {} in its
workflows, which costs nothing on a public repo and is fatal here: the token is
limited to Metadata:read, so actions/checkout cannot read an internal repo and dies
with a misleading "Repository not found". Repo settings cannot fix it — an explicit
permissions block always overrides the default.
Each job now gets the minimum it needs. Danger also reads the pull request through
the issues API, so it needs issues:read alongside pull-requests:write, and zizmor's
SARIF upload needs actions:read on a private repo.
The unit tests move to the org's Mac Studio: GitHub-hosted macos-26 could not finish
inside the hour and bills at 10x. Preview tests are skipped there, using the flag
upstream already uses for its own enterprise tests — they render a snapshot per
preview and never once finished on either runner. The trade is that preview snapshot
regressions are no longer caught in CI.
Workflows that only make sense upstream are gated off rather than deleted, so they
keep rebasing cleanly. The enterprise tests need Element's bot token and their
private submodule. Three nightlies fail at checkout every weeknight — this repo is a
detached copy rather than a network fork, so GitHub never disabled their schedules —
and one of them posts to Element's Codecov on every run.
81 lines
3.1 KiB
YAML
81 lines
3.1 KiB
YAML
# This workflow will build a Swift project
|
|
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-swift
|
|
|
|
name: Compound
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
|
|
push:
|
|
branches: [develop]
|
|
paths:
|
|
- "compound-ios/**"
|
|
|
|
pull_request:
|
|
types: [opened, synchronize, reopened]
|
|
paths:
|
|
- "compound-ios/**"
|
|
|
|
permissions: {}
|
|
|
|
jobs:
|
|
tests:
|
|
# HealthChat: skip in this fork. It only triggers on changes under compound-ios/, which this fork
|
|
# has never edited, so it would only ever fire on an upstream sync and go red at checkout —
|
|
# permissions: {} leaves a metadata-only token that cannot read an INTERNAL repo. Gated rather
|
|
# than deleted so the file keeps rebasing cleanly.
|
|
if: github.repository == 'element-hq/element-x-ios'
|
|
runs-on: macos-26
|
|
timeout-minutes: 15
|
|
|
|
concurrency:
|
|
# When running on develop, use the sha to allow all runs of this workflow to run concurrently.
|
|
# Otherwise only allow a single run of this workflow on each branch, automatically cancelling older runs.
|
|
group: ${{ github.ref == 'refs/heads/develop' && format('compound-develop-{0}', github.sha) || format('compound-{0}', github.ref) }}
|
|
cancel-in-progress: true
|
|
|
|
steps:
|
|
- uses: nschloe/action-cached-lfs-checkout@385a8ecc719e50b8c71af6ab01a624b486b7c3bc # v1.2.5
|
|
with:
|
|
persist-credentials: false
|
|
|
|
- name: Configure Xcode 26
|
|
run: sudo xcode-select -s /Applications/Xcode_26.5.app
|
|
|
|
- name: Install sourcery
|
|
run: brew install sourcery
|
|
|
|
- name: Generate preview tests
|
|
working-directory: compound-ios
|
|
run: sourcery --config Tools/Sourcery/PreviewTestsConfig.yml
|
|
|
|
- name: Create simulator
|
|
run: xcrun simctl create "Snapshots" "iPhone SE (3rd generation)" "com.apple.CoreSimulator.SimRuntime.iOS-26-5"
|
|
|
|
- name: Run tests
|
|
working-directory: compound-ios
|
|
run: set -o pipefail && xcodebuild test -scheme 'Compound' -sdk iphonesimulator -destination 'platform=iOS Simulator,name=Snapshots,OS=26.5' -skipPackagePluginValidation -resultBundlePath Logs/CompoundTests.xcresult | xcbeautify --renderer github-actions
|
|
|
|
- name: Zip artifacts
|
|
if: failure() # We only care about artefacts if the tests fail
|
|
working-directory: compound-ios
|
|
run: zip -r Logs/CompoundTests.xcresult.zip Logs/CompoundTests.xcresult/
|
|
|
|
- name: Archive artifacts
|
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
if: failure() # We only care about artefacts if the tests fail
|
|
with:
|
|
name: test-results
|
|
path: compound-ios/Logs/CompoundTests.xcresult.zip
|
|
retention-days: 1
|
|
if-no-files-found: ignore
|
|
|
|
- name: Upload coverage to Codecov
|
|
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
|
|
with:
|
|
fail_ci_if_error: false
|
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
xcode: true
|
|
xcode_archive_path: compound-ios/Logs/CompoundTests.xcresult
|
|
flags: compound
|