(2019/12/9現在)
- Githubが提供するCI/CD
- CircleCIとほぼ同じ事が出来るが2019/11/14に正式版になったことを発表したばかりでCacheなどBeta機能もある
- Linux/MacOS/Windowsの実行を提供
- 各OS共、2core CPU / 7GB RAM / 14GB SSD
- 同時ジョブ実行数はアカウント・OS毎に異なる
アカウント種別 | 同時ジョブ数 | 同時macOSジョブ数 |
---|---|---|
Github Free | 20 | 5 |
Github Pro | 40 | 5 |
Github Team | 60 | 5 |
Github Enterprise Cloud | 180 | 15 |
- かなり十分な無料枠がある。publicリポジトリは無料、privateリポジトリは分単位・ストレージ(多分Github Packagesのデータ量)単位で実行時間をカウントする。月毎に時間はリセットされる:
アカウント種別 | ストレージ | 無料枠(分) |
---|---|---|
Github Free | 500MB | 2,000(約33時間) |
Github Pro | 1GB | 3,000(約50時間) |
Github Team | 2GB | 10,000(約166時間) |
Github Enterprise Cloud | 50GB | 50,000(約833時間) |
- 無料枠でmacOSも使える。但しLinuxよりも10倍実行時間を消費
OS | 消費実行時間(分) |
---|---|
Linux | 1 |
macOS | 10 |
Windows | 2 |
- アカウントの課金上限(spending limit)はデフォルトで0$になっているので上限を設定しない限り課金されない。
- 無料枠上限を超えた場合の料金は以下の通り:
OS | 実行料金(分あたり) |
---|---|
Linux | $0.008 |
macOS | $0.08 |
Windows | $0.016 |
test.yml
はGithub Actions提供には入ってないMySQL5.6.34を利用したRailsアプリでのRSpecテストの例。
.github/workflows
フォルダにtest.yml
など任意の名称で設定ファイルを置くと実行トリガ(on
)のタイミングで実行される- push時(
push
)、PR時(pull_request
)等ある。複数指定[push, pull_request]
もできる - ブランチ・タグ・リリース・定期実行などのイベントトリガもある。詳しくはGitHub Actionsのワークフロー構文 - GitHub ヘルプ
- push時(
runs-on
で実行するOS環境を選択。DBやRuby等開発環境で想定されるアプリがインストール済み仮想環境が用意されている。詳しくはGitHubホストランナーの仮想環境 - GitHub ヘルプ- 今回はUbuntu 18.04(
ubuntu-latest
)を利用した。LTSを用意する臭い
- 今回はUbuntu 18.04(
services
で追加Dockerコンテナを用意できる。詳しくはjobs.<job_id>.services - GitHub Actionsのワークフロー構文 - GitHub ヘルプ- キャッシュが利用出来る(Beta)。bundleに時間かかる(2分くらい)のでこちらに適用した
- あとは単純にコマンドを実行する記述を行う。
step
を分けておけば個別に実行時間と結果がセクションで表示される
- rubyのパッチバージョンを指定しても指定のもので実行されない
- マイナーバージョンの最新あたりしかデフォルトインストールされてないのでターゲットアプリ側を揃える
- mysql2 gemを利用する時にNative Buildで失敗
- デフォルトのOSで入っていなかった
sudo apt-get install libmysqlclient-dev
を追加
- デフォルトのOSで入っていなかった
bundle install
でキャッシュされない- キャッシュするパスを
vendor/bundle
で揃える
- キャッシュするパスを