Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up
for free
GitHub Actions活用術
Wataru Mizukami
October 28, 2020
1
240
GitHub Actions活用術
Wataru Mizukami
October 28, 2020
Tweet
Share
More Decks by Wataru Mizukami
See All by Wataru Mizukami
tarumzu
1
430
tarumzu
2
430
tarumzu
2
500
tarumzu
0
310
tarumzu
2
610
Featured
See All Featured
sachag
446
36k
eileencodes
113
25k
gr2m
83
11k
phodgson
87
3.9k
lemiorhan
627
43k
maggiecrowley
10
500
brettharned
93
3k
reverentgeek
27
2k
denniskardys
219
120k
ddemaree
273
31k
sstephenson
145
12k
morganepeng
93
14k
Transcript
GitHub Actions活用術 Wataru Mizukami(水上 亘) Kotlin愛好会 #25
自己紹介 - Wataru Mizukami / 水上 亘 - / @tarumzu
(たる) - Organization / タクシー配車アプリ作ってる会社
早速ですがGitHub Actionsのまとめ - GitHub利用している人ならすぐ始められる - ジョブは無料枠でも20(macOSは5)まで並列実行ができる(た だし、一月のジョブ実行時間は2000分まで) - 自前Botアカウント不要 -
無料枠のストレージは500MBなので定期的にファイルを削除 する
早速ですがGitHub Actionsのまとめ - GitHub利用している人ならすぐ始められる - ジョブは無料枠でも20(macOSは5)まで並列実行ができる(た だし、一月のジョブ実行時間は2000分まで) - 自前Botアカウント不要 -
無料枠のストレージは500MBなので定期的にファイルを削除 する
自前Botアカウント不要
GitHub Actionsの設定 name: danger on: pull_request: branches: - master jobs:
build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - name: Setup ruby uses: actions/setup-ruby@v1 with: ruby-version: '2.6' architecture: 'x64' - name: install danger run: | gem install bundler bundle install - name: run ktlintCheck run: ./gradlew ktlintCheck - name: run danger env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: danger
GitHub Actionsの設定 name: danger on: pull_request: branches: - master jobs:
build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - name: Setup ruby uses: actions/setup-ruby@v1 with: ruby-version: '2.6' architecture: 'x64' - name: install danger run: | gem install bundler bundle install - name: run ktlintCheck run: ./gradlew ktlintCheck - name: run danger env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: danger - name: run danger env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: danger DangerはGitHub Actionsに対応しているので、 GitHubのアクセストークンを環境変数 `GITHUB_TOKEN` として設定してあげるだけで OK! GitHub ActionsはCI実行ごとにデフォルトで secretsにトークンが設定される。
Pull Requestを作成すると… 無事botが動いた
無料枠のストレージは500MBなので定期的に ファイルを削除する
ワークフローの書き方 name: publish // 略 jobs: build: runs-on: ubuntu-latest steps:
- uses: actions/checkout@v2 // 略 - name: Build with Gradle run: ./gradlew :app:assembleDebug - name: Upload apk uses: actions/upload-artifact@v2 with: name: apk path: app/build/outputs/apk publish: needs: build runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Download apk uses: actions/download-artifact@v2 with: name: apk // 略
ワークフローの書き方 name: publish // 略 jobs: build: runs-on: ubuntu-latest steps:
- uses: actions/checkout@v2 // 略 - name: Build with Gradle run: ./gradlew :app:assembleDebug - name: Upload apk uses: actions/upload-artifact@v2 with: name: apk path: app/build/outputs/apk publish: needs: build runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Download apk uses: actions/download-artifact@v2 with: name: apk // 略 publish: needs: build タスクごとにJobを分けるとワークフローが見やす い。この例だとbuild, publishと分けている(実際に は他にtestやdangerなども)。 jobは基本的に並列で動きますが、特定のジョブ の結果を待ちたい場合、needsでジョブを指定する ことで直列にすることもできる。
ワークフローの書き方 name: publish // 略 jobs: build: runs-on: ubuntu-latest steps:
- uses: actions/checkout@v2 // 略 - name: Build with Gradle run: ./gradlew :app:assembleDebug - name: Upload apk uses: actions/upload-artifact@v2 with: name: apk path: app/build/outputs/apk publish: needs: build runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Download apk uses: actions/download-artifact@v2 with: name: apk // 略 - name: Upload apk uses: actions/upload-artifact@v2 with: name: apk path: app/build/outputs/apk ジョブ間でファイルの受け渡しをする場合、 upload-artifactアクションが必要。
ワークフローの書き方 name: publish // 略 jobs: build: runs-on: ubuntu-latest steps:
- uses: actions/checkout@v2 // 略 - name: Build with Gradle run: ./gradlew :app:assembleDebug - name: Upload apk uses: actions/upload-artifact@v2 with: name: apk path: app/build/outputs/apk publish: needs: build runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Download apk uses: actions/download-artifact@v2 with: name: apk // 略 - name: Download apk uses: actions/download-artifact@v2 with: name: apk 受け取り側はdownload-artifactでファイルを受け 取る
無料枠のストレージは500MBなので定期的に ファイルを削除する
artifactを削除する設定その1 GitHubのリポジトリ - Settings - Actionsから設定可能。た だし、リポジトリ共通設定なのでArtifact毎に設定したい場 合は使えない
artifactを削除する設定その2 https://github.blog/changelog/2020-10-08-github-actions-ability-to-change-retention-days-for-artifacts-and-logs/ なんと!10/1リリースのupload-artifact@v2.2.0から公式で retention-daysが設定できるように! (今までは非公式のc-hive/gha-remove-artifactsを使うし かなかった)
まとめ - GitHub利用している人ならすぐ始められる - ジョブは無料枠でも20(macOSは5)まで並列実行ができる(た だし、一月のジョブ実行時間は2000分まで) - 自前Botアカウント不要 - 無料枠のストレージは500MBなので定期的にファイルを削除
する
Github Actions (v2) でDanger + ktlintを実行させる https://qiita.com/tarumzu/items/43 2fc356580ebfab77d4 GitHub Actionsを使ってAndroidア
プリをFirebase App Distributionへ 配信するまでのベストプラクティス https://qiita.com/tarumzu/items/43 2fc356580ebfab77d4
ご清聴ありがとうございました!