Closed11

GitHub Actionsことはじめ

nus3nus3

今までcircleci教だったけど、この度、GitHub Actionsに入信したので内容をざっくりまとめる

nus3nus3

GITHUB ACTIONSについて学ぶをざっくり読んでみて

nus3nus3

依存ジョブの作成

jobs.<job_id>.needs で依存ジョブの指定ができる
下記の場合 setup→build→testの順で実行される

jobs:
  setup:
    runs-on: ubuntu-latest
    steps:
      - run: ./setup_server.sh
  build:
    needs: setup
    runs-on: ubuntu-latest
    steps:
      - run: ./build_server.sh
  test:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - run: ./test_server.sh

needsは配列でもいい
job1→job2→job3

jobs:
  job1:
  job2:
    needs: job1
  job3:
    needs: [job1, job2]
nus3nus3

依存関係のキャッシング

node modulesのchache例
name: Caching with npm

on: push

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2

      - name: Cache node modules
        uses: actions/cache@v2
        env:
          cache-name: cache-node-modules
        with:
          # npm キャッシュファイルは Linux/macOS の `~/.npm` に保存される
          path: ~/.npm
          key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
          restore-keys: |
            ${{ runner.os }}-build-${{ env.cache-name }}-
            ${{ runner.os }}-build-
            ${{ runner.os }}-

      - name: Install Dependencies
        run: npm install

      - name: Build
        run: npm build

      - name: Test
        run: npm test

https://docs.github.com/ja/actions/guides/caching-dependencies-to-speed-up-workflows

nus3nus3

GitHub Actionsのワークフロー構文をざっくり読んでみて

nus3nus3

on

トリガになるイベントを指定する

on: push
on: [push, pull_request]
指定できるイベント一覧
スケジュールしたイベント
schedule

手動イベント
workflow_dispatch
repository_dispatch

webhook イベント
check_run
check_suite
create
delete
deployment
deployment_status
fork
gollum
issue_comment
issues
label
milestone
page_build
project
project_card
project_column
public
pull_request
pull_request_review
pull_request_review_comment
pull_request_target
push
registry_package
release
status
Watch
workflow_run

https://docs.github.com/ja/actions/reference/events-that-trigger-workflows#workflow_dispatch

ブランチやtagの指定や、タイミングをtypesで指定できる

on:
  # プッシュもしくはPull Requestでワークフローをトリガーする
  # ただしメインブランチの場合のみ
  push:
    branches:
      - main
  pull_request:
    branches:
      - main
  # page_buildとリリース作成イベントでもトリガーする
  page_build:
  release:
    types: # この設定は上記のpage_buildイベントには影響しない
      - created

※branchesとbranches-ignoreは同じworkflow内では書けない

nus3nus3

jobs.<job_id>.steps[*].with

アクションで定義されている入力パラメータのmap

jobs:
  my_first_job:
    steps:
      - name: My first step
        uses: actions/hello_world@main
        with:
          first_name: Mona
          middle_name: The
          last_name: Octocat      

INPUT_FIRST_NAME、INPUT_MIDDLE_NAME、INPUT_LAST_NAMEという環境変数としてアクセスできる

nus3nus3

branchesとbrances-ignoreしたくなったらbranchesで!を使う

on:
  pull_request:
    branches:
      - staging
      - '!renovate/**'
    types: [opened, synchronize]
nus3nus3

その他

コンテキストに何があるかとかはここ見ればバチコロよ

https://docs.github.com/ja/actions/reference/context-and-expression-syntax-for-github-actions

github actionsで使える環境変数

https://docs.github.com/ja/actions/reference/environment-variables

ワークフローコマンド

::構文使ったらワークフローコマンド実行できる
https://docs.github.com/ja/actions/reference/workflow-commands-for-github-actions

  • 出力パラメータの設定 echo "::set-output name=action_fruit::strawberry"
  • デバッグメッセージ設定 echo "::debug::Set the Octocat variable"
  • 警告メッセージ echo "::warning file=app.js,line=1,col=5::Missing semicolon"

環境変数の設定

steps:
  - name: Set the value
    id: step_one
    run: |
      echo "action_state=yellow" >> $GITHUB_ENV
  - name: Use the value
    id: step_two
    run: |
      echo "${{ env.action_state }}" # This will output 'yellow'
このスクラップは2021/09/22にクローズされました