Open tora-muscle opened 1 year ago
▼ 原因
swift init
をしておらず、Package.swift
が存在しないために、テストフェーズでの依存関係の解決ができていないように思われる。.yml
自体は以下で良さそう
# このワークフローは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: fwal/setup-swift@2040b795e5c453c3a05fcb8316496afc8a74f192
with:
swift-version: ${{ matrix.swift }}
- uses: actions/checkout@v3
- name: Build
run: swift build
- name: Run tests
run: swift test
▼ 参考文献
日付跨いじゃったから明日やろー。。。
▼ ❌ テストが通らなかった原因
.xcodeproj に対してテストを実行しようとしていたから
.xcodeproj に対してテストを実行しようとすると「 Package.swift が無い」と怒られる。これは、 Cocoapods を使ってパッケージ管理をしているのに、 Swift Package Manager を使っている際のテスト方法を指定しているから。
.xcworkspace 向けにテストしているのに、Cocoapods を仮想環境にインストールしなかったから
pod install しないと .xcworcspace ファイルは出力されない。なので「 .xcworkspace なんてファイルないよ」と怒られていた。Github Actions を実行する仮想環境に対しても、ローカルと同じ「環境構築」をしてあげる必要があった。
▼ 🔎 解決法
gem install cocoapods 、 pod install で仮想環境に .xcworcspace を作成させる
前述の通り、ローカルの環境構築で行った手順をワークフロー上でも再現していく。仮想環境上で作成された .xcworkspace に対して xcodebuild をかけていく
ダウンロードした gem 、 Podライブラリをキャッシュする
毎回新しい仮想環境に pod install していると時間がかかって仕方がないので、初回ダウンロード分、更新・追加分をキャッシュするように設定
▼ 👍 追加でやりたいことメモ
タイムアウトを設定する
Github Actions にも無料枠と有料枠がある。具体的には、Actions 利用時間が「2000分 / 月」までが無料枠だ。
1 ワークフローにつき 360 分までのタイムアウトがデフォルトで設定されているが、意図せず水面下で長時間ワークフローが実行され、課金されるのは怖い。。。▼ 📚 参考文献
心折れかけたけど、諦めなくてよかった。。
🎫 関連課題
子課題
13
✨ 実現したいこと
▼ when?
2 、
developブランチ
にマージ後▼ what?・why? 以下の自動化
[x]
コードのビルド
Xcodeがインストールされている仮想マシンを使用して、リポジトリのコードを自動的にビルドすることができる。開発者はXcodeを起動する ▶︎ プロジェクトを開く ▶︎ ターゲットを選択する ▶︎ ビルド設定を構成する ▶︎ ビルドを実行する ▶︎ エラーを修正する ▶︎ もう一度ビルドを実行する
といった作業を踏む手間がなくなり、生産性が向上する。[x]
テストの実行
コードの品質を保証するために、コードに対するユニットテストを自動的に実行することができる。また、UIテストも実行することができる。これらのテストは、GitHub Actionsが自動的に実行するため、開発者は手動でテストする必要がなくなる。[x]
静的解析
コードの品質を向上し、バグの検出と修正を容易にすることができる。↓2次開発以降
ReOpen
対応↓アプリの署名と配布
アプリを自動的に署名し、App Store Connectにアップロードすることができる。これにより、アプリのリリースプロセスが自動化され、開発者は手動でアプリを署名して配布する必要がなくなる。バージョンタグ付けなどもできるらしい!🚩 やらないこと
通知の自動化
アプリのビルド、テスト、静的解析、署名、配布などの各ステップの完了時に、Slack、Microsoft Teamsなどのツールを介して通知を送信することができる。これにより、開発者はすぐに問題に対処し、アプリをリリースするための準備をすることができる。 が。。。個人開発なので割愛。。🔀 達成条件
一次開発
コードのビルド
~静的解析
までを自動化し、ユニット実装毎にテストコードを書く癖をつける二次開発以降
GitHub Actions を使って自動デプロイ、リリースし、保守作業をいい意味でサボれるようにする👀 備考
▼ 参考記事