.github
muhittincamdali 配下のリポジトリ向けに共有するコミュニティファイルと、7つの再利用可能な GitHub Actions ワークフロー。
ライセンス: MIT
GitHub は、このリポジトリにあるコントリビューションガイド、行動規範、セキュリティポリシー、サポートガイド、issue フォーム、pull request テンプレートを、独自のコピーを持たないすべてのリポジトリに適用します。その横には、他のリポジトリが workflow_call で呼び出す7つの再利用可能なワークフローがあります: 各 Apple プラットフォーム向けの xcodebuild を任意で使った Swift package のビルドとテスト、DocC から GitHub Pages への公開、Flutter、Node.js、lychee によるリンクチェック、README の翻訳チェック、ファイルとコミットメッセージを調べる hygiene スキャンです。すべての action はフルコミット SHA に固定され、各 job は必要な権限のみを要求し、呼び出し側は Dependabot が最新に保つタグ付きコミットにワークフローを固定します。
機能
- swift-ci: swift build --build-tests と swift test に加え、iOS、macOS、Mac Catalyst、tvOS、watchOS、visionOS 向けの任意の xcodebuild マトリクス
- docc-pages: xcodebuild docbuild で DocC をビルドし、複数のモジュールを1つのサイトにまとめて GitHub Pages にデプロイ
- flutter-ci と node-ci: Flutter の format、analyze、test に加え、npm または pnpm によるロックファイルからのインストールと、複数の Node.js バージョンで存在する lint、typecheck、test、build スクリプトの実行
- links: 1日間のキャッシュと共有デフォルト設定による lychee のリンクおよび #anchor チェック
- readme-i18n-sync: 各 README.<lang>.md は翻訳元である英語版 README の git blob を記載し、最新版を翻訳済みと主張する間はコードブロックと URL が一致している必要があります
- hygiene: 追跡対象のファイルおよび push されるコミットに含まれるツール名、検証できない最上級表現、使われなくなったスローガンを拒否します。リポジトリごとの許可リストあり
- フルコミット SHA に固定された action、job ごとの権限、persist-credentials: false、古い pull request の実行をキャンセルする concurrency グループ
- このリポジトリ自体も actionlint (shellcheck 併用)、hygiene、links でチェックしています
クイックスタート
1name: CI2 3on:4 push:5 branches: [main]6 pull_request:7 8permissions: {}9 10jobs:11 swift:12 permissions:13 contents: read14 uses: muhittincamdali/.github/.github/workflows/swift-ci.yml@<sha> # v115 with:16 platforms: '["iOS", "macOS", "tvOS", "watchOS", "visionOS"]'17 18 hygiene:19 permissions:20 contents: read21 uses: muhittincamdali/.github/.github/workflows/hygiene.yml@<sha> # v1インストール
Call a workflow from a repository
1jobs:2 swift:3 permissions:4 contents: read5 uses: muhittincamdali/.github/.github/workflows/swift-ci.yml@<sha> # v16 with:7 platforms: '["iOS", "macOS", "tvOS", "watchOS", "visionOS"]'タイムライン
共有コミュニティファイルと6つの再利用可能なワークフロー(swift-ci、docc-pages、flutter-ci、node-ci、links、hygiene)でリポジトリを公開し、その後 README 翻訳チェックを追加。v1 と v1.0.0 をタグ付け
v1.1.0: docc-pages にオプトインの skip-synthesized-members 入力が追加され、多数の SwiftUI ビューを持つパッケージでも GitHub Pages に収まるように