GitHub Actionsの一言で表現すると
GitHubに組み込まれたCI/CDツール。
![github-actions](/img/Screenshot_2020-05-02 kjj6198 animal-crossing-info.png "github-actions")
概要
以前はCIを行うために、チーム内でCircleCI、DroneCI、Jenkinsなどの解決策について議論(喧嘩)する必要がありました。しかし、チームがコードをGitHubにホストするだけで、GitHubと簡単に統合できます。万能薬や鬼門とは言えませんが、一般的なテストの実行やプッシュとデプロイなどのシナリオでは、比較的簡単に達成できると思います。以下で説明します。
導入方法
プログラムのルートディレクトリに .github/workflows/your-workflow.yml
の記述ファイルを追加するだけです。
関連リソース
始める前に、いくつかのドキュメントリンクを直接提供します。ドキュメントを読み終えてから作業を開始したい場合は、次のリンクを参照してください:
- ツアー:https://github.com/features/actions
- ドキュメント:https://help.github.com/en/actions
- GitHub Actionsパッケージ:https://github.com/marketplace?type=actions
自分のプロジェクトにGitHub Actionsを追加する方法
workflow
には複数のjobs
があります。ジョブ自体は複数のステップで構成され、ステップはGitHubアクション、コマンドの実行などができます。以下は例です:
name: your-name
# 使用できるイベントはドキュメントを参照してください
# https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#on
on:
push:
branches:
- master
paths-ignore: # このignoreを使用すると、ファイルを変更してもGitHub Actionsがトリガーされないことがあります
- 'docs/**'
- 'README.md'
- 'LICENSE'
- 'CONTRIBUTING.md'
branches-ignore:
- 'xxxx'
tags-ignore:
- 'v1.*'
env: # 環境変数を設定
PROJECT_ID: ${{ secrets.PROJECT_ID }}
RUN_REGION: asia-northeast2
SERVICE_ACCOUNT: ${{ secrets.SERVICE_ACCOUNT }}
jobs:
setup-build-and-deploy:
name: Setup gcloud and deploy
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- uses: GoogleCloudPlatform/github-actions/setup-gcloud@master
with:
version: '290.0.1'
project_id: ${{ secrets.PROJECT_ID }}
service_account_email: ${{ secrets.SA_EMAIL }}
server_account_key: ${{ secrets.SA_KEY }}
export_default_credentials: true
- name: Deploy
run: |-
echo $SERVICE_ACCOUNT > /tmp/key.json && \
gcloud auth activate-service-account --key-file /tmp/key.json && \
gcloud app deploy --project "$PROJECT_ID"
より高度な場合、実行時に動的に判断する場合は、次のように記述できます:https://help.github.com/en/actions/reference/context-and-expression-syntax-for-github-actions
env:
my_env_var: ${{ ALPHA ? 'A' : 'B' }}
GitHub Actionsは実行中にいくつかのコンテキストを提供します。
環境変数
環境変数は、プロジェクトのシークレット内で設定できます。デフォルトでは、Collaboratorのみがシークレットを見ることができ、他の人はGitHub Actionsにシークレットをプルリクエストできません。
この記事は、GitHub Actionsの使い方を手軽にメモしたものであり、次回の設定はより迅速に行えるでしょう。