注: GitHub ホステッド ランナーは、現在 GitHub Enterprise Server でサポートされていません。 GitHub public roadmap で、今後の計画的なサポートの詳細を確認できます。
はじめに
このガイドでは、Swift パッケージをビルドしてテストする方法を説明します。
GitHub ホステッド ランナーにはプリインストールされたソフトウェアのあるツール キャッシュがあり、Ubuntu と macOS ランナーには、Swift パッケージをビルドするための依存関係が含まれています。 Swift と Xcode の最新のソフトウェアおよびプレインストールされるバージョンの完全な一覧については、「GitHub ホステッド ランナーの使用」をご覧ください。
前提条件
YAMLの構文と、GitHub ActionsでのYAMLの使われ方に馴染んでいる必要があります。 詳しくは、「ギットハブ アクション のワークフロー構文」を参照してください。
Swift パッケージの基本を理解しておくことをお勧めします。 詳細については、Apple 開発者向けドキュメントの「Swift パッケージ」を参照してください。
Swift スターター ワークフローの使用
すぐに開始するには、リポジトリの .github/workflows
ディレクトリにスターター ワークフローを追加します。
GitHub では、ほとんどの Swift プロジェクトで使える Swift 用のスターター ワークフローが提供されています。 このガイドの以降のセクションでは、このスターター ワークフローをカスタマイズする方法の例を示します。
-
お使いの GitHub Enterprise Server インスタンス で、リポジトリのメイン ページへ移動します。
-
リポジトリ名の下にある [アクション] をクリックします。
-
ワークフローが既にリポジトリ内にある場合は、 [新しいワークフロー] をクリックします。
-
[ワークフローの選択] ページには、推奨されるスターター ワークフローの選択が表示されます。 「swift」を検索します。
-
[継続的インテグレーション] をクリックして、ワークフローの選択をフィルター処理します。
-
[Swift] ワークフローで、[構成] をクリックします。
「Swift」スターター ワークフローが見つからない場合は、次のワークフロー コードをリポジトリの
.github/workflows
ディレクトリでswift.yml
を呼び出した新しいファイルにコピーします。YAML name: Swift on: push: branches: [ "main" ] pull_request: branches: [ "main" ] jobs: build: runs-on: macos-latest steps: - uses: actions/checkout@v4 - name: Build run: swift build -v - name: Run tests run: swift test -v
name: Swift on: push: branches: [ "main" ] pull_request: branches: [ "main" ] jobs: build: runs-on: macos-latest steps: - uses: actions/checkout@v4 - name: Build run: swift build -v - name: Run tests run: swift test -v
-
必要に応じてワークフローを編集します。 たとえば、ワークフローを実行するブランチを変更します。
-
[変更をコミットする] をクリックします。
Swift バージョンの指定
GitHub ホスト型ランナーでプリインストールされた特定のバージョンの Swift を使用するには、swift-actions/setup-swift
アクションを使用します。 このアクションでは、ランナーのツール キャッシュから特定のバージョンの Swift を見つけ、必要なバイナリを PATH
に追加します。 これらの変更は、ジョブの残りの部分で保持されます。 詳細については、「swift-actions/setup-swift
アクション」を参照してください。
セルフホスト型ランナーを使用している場合、目的の Swift バージョンをインストールして PATH
に追加する必要があります。
次の例では、swift-actions/setup-swift
アクションの使用を示します。
複数の Swift バージョンを使用する
マトリックスで Swift の複数のバージョンを使用するようにジョブを設定できます。
# このワークフローはGitHubによって認定されていないアクションを使用します。 # それらはサードパーティによって提供され、 # 別個の利用規約、プライバシーポリシー、 # ドキュメントを参照してください。 # GitHub では、コミット SHA にアクションをピン留めすることが推奨されます。 # 新しいバージョンを取得するには、SHA を更新する必要があります。 # タグまたはブランチを参照することもできますが、アクションは警告なしに変更される可能性があります。 name: Swift on: [push] jobs: build: name: Swift ${{ matrix.swift }} on ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, macos-latest] swift: ["5.2", "5.3"] runs-on: ${{ matrix.os }} steps: - uses: swift-actions/setup-swift@65540b95f51493d65f5e59e97dcef9629ddf11bf with: swift-version: ${{ matrix.swift }} - uses: actions/checkout@v4 - name: Build run: swift build - name: Run tests run: swift test
# このワークフローはGitHubによって認定されていないアクションを使用します。
# それらはサードパーティによって提供され、
# 別個の利用規約、プライバシーポリシー、
# ドキュメントを参照してください。
# GitHub では、コミット SHA にアクションをピン留めすることが推奨されます。
# 新しいバージョンを取得するには、SHA を更新する必要があります。
# タグまたはブランチを参照することもできますが、アクションは警告なしに変更される可能性があります。
name: Swift
on: [push]
jobs:
build:
name: Swift ${{ matrix.swift }} on ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
swift: ["5.2", "5.3"]
runs-on: ${{ matrix.os }}
steps:
- uses: swift-actions/setup-swift@65540b95f51493d65f5e59e97dcef9629ddf11bf
with:
swift-version: ${{ matrix.swift }}
- uses: actions/checkout@v4
- name: Build
run: swift build
- name: Run tests
run: swift test
単一の特定の Swift バージョンを使用する
5.3.3
などの特定のバージョンの Swift を使用するようにジョブを設定できます。
steps: - uses: swift-actions/setup-swift@65540b95f51493d65f5e59e97dcef9629ddf11bf with: swift-version: "5.3.3" - name: Get swift version run: swift --version # Swift 5.3.3
steps:
- uses: swift-actions/setup-swift@65540b95f51493d65f5e59e97dcef9629ddf11bf
with:
swift-version: "5.3.3"
- name: Get swift version
run: swift --version # Swift 5.3.3
コードのビルドとテスト
ローカルで使うのと同じコマンドを使用して、Swift でコードをビルドおよびテストできます。 この例では、ジョブで swift build
と swift test
を使用する方法を示します。
steps: - uses: actions/checkout@v4 - uses: swift-actions/setup-swift@65540b95f51493d65f5e59e97dcef9629ddf11bf with: swift-version: "5.3.3" - name: Build run: swift build - name: Run tests run: swift test
steps:
- uses: actions/checkout@v4
- uses: swift-actions/setup-swift@65540b95f51493d65f5e59e97dcef9629ddf11bf
with:
swift-version: "5.3.3"
- name: Build
run: swift build
- name: Run tests
run: swift test