Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GitHub Actions活用術

Bf8dccb5b8479c3a589004d3154b6f5f?s=47 Wataru Mizukami
October 28, 2020
390

GitHub Actions活用術

Bf8dccb5b8479c3a589004d3154b6f5f?s=128

Wataru Mizukami

October 28, 2020
Tweet

Transcript

  1. GitHub Actions活用術 Wataru Mizukami(水上 亘) Kotlin愛好会 #25

  2. 自己紹介 - Wataru Mizukami / 水上 亘 -         / @tarumzu

    (たる) - Organization / タクシー配車アプリ作ってる会社
  3. 早速ですがGitHub Actionsのまとめ - GitHub利用している人ならすぐ始められる
 - ジョブは無料枠でも20(macOSは5)まで並列実行ができる(た だし、一月のジョブ実行時間は2000分まで)
 - 自前Botアカウント不要
 -

    無料枠のストレージは500MBなので定期的にファイルを削除 する

  4. 早速ですがGitHub Actionsのまとめ - GitHub利用している人ならすぐ始められる
 - ジョブは無料枠でも20(macOSは5)まで並列実行ができる(た だし、一月のジョブ実行時間は2000分まで)
 - 自前Botアカウント不要
 -

    無料枠のストレージは500MBなので定期的にファイルを削除 する
  5. 自前Botアカウント不要


  6. 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
  7. 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にトークンが設定される。
  8. Pull Requestを作成すると… 無事botが動いた

  9. 無料枠のストレージは500MBなので定期的に ファイルを削除する 


  10. ワークフローの書き方 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 // 略
  11. ワークフローの書き方 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でジョブを指定する ことで直列にすることもできる。
  12. ワークフローの書き方 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アクションが必要。
  13. ワークフローの書き方 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でファイルを受け 取る
  14. 無料枠のストレージは500MBなので定期的に ファイルを削除する 


  15. artifactを削除する設定その1 GitHubのリポジトリ - Settings - Actionsから設定可能。た だし、リポジトリ共通設定なのでArtifact毎に設定したい場 合は使えない


  16. 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を使うし かなかった)


  17. まとめ - GitHub利用している人ならすぐ始められる
 - ジョブは無料枠でも20(macOSは5)まで並列実行ができる(た だし、一月のジョブ実行時間は2000分まで)
 - 自前Botアカウント不要
 - 無料枠のストレージは500MBなので定期的にファイルを削除

    する

  18. 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
  19. ご清聴ありがとうございました!