Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

自己紹介 - Wataru Mizukami / 水上 亘 -         / @tarumzu (たる) - Organization / タクシー配車アプリ作ってる会社

Slide 3

Slide 3 text

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


Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

自前Botアカウント不要


Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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にトークンが設定される。

Slide 8

Slide 8 text

Pull Requestを作成すると… 無事botが動いた

Slide 9

Slide 9 text

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


Slide 10

Slide 10 text

ワークフローの書き方 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 // 略

Slide 11

Slide 11 text

ワークフローの書き方 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でジョブを指定する ことで直列にすることもできる。

Slide 12

Slide 12 text

ワークフローの書き方 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アクションが必要。

Slide 13

Slide 13 text

ワークフローの書き方 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でファイルを受け 取る

Slide 14

Slide 14 text

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


Slide 15

Slide 15 text

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


Slide 16

Slide 16 text

artifactを削除する設定その2 https://github.blog/changelog/2020-10-08-github-actions-ability-to-change-retention-days-for-artifacts-and-logs/ なんと!10/1リリースの[email protected]から公式で retention-daysが設定できるように!
 (今までは非公式のc-hive/gha-remove-artifactsを使うし かなかった)


Slide 17

Slide 17 text

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


Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

ご清聴ありがとうございました!