github actions のサンプルをいくつか紹介しています
github actions
のサンプル集です。
github-actions-samples/hello.yml
name: Hello, World! # ワークフローの名前
on: push # イベント、 [push, pull_request] とすると複数指定可能
jobs: # ジョブを定義
build: # ジョブの ID(jobs 内でユニークであればよい)
name: Greeting # ジョブ名
runs-on: ubuntu-latest # ジョブが実行される仮想環境
steps: # ジョブ内で実行されるステップ
- run: echo "Hello, World!" # ステップで実行するコマンド
github-actions-samples/pull_request.yml
参考として、コードを変更せずにプルリクエストを出す方法のリンクを貼っておきます。
github-actions-samples/cron.yml
一分間隔で実行したい場合は以下のように書きます。
on:
schedule:
- cron: "*/1 * * * *"
github-actions-samples/needs.yml
ジョブは並列に実行されますが、 job1
が終わったあとに job2
を実行したいなどの制御が needs で可能になります。
jobs:
job3:
name: Greeting3
needs: [job1, job2]
runs-on: ubuntu-latest
steps:
- run: echo "Hello, World 3"
github-actions-samples/node.js.yml
jobs:
build:
name: Greeting
runs-on: ubuntu-latest
steps:
- run: node -e 'console.log("Hello, World!");'
runs-on
で指定している環境内で使える CLI コマンドや、インストールされているものは以下を参照してください。
TypeScript
や Parcel
なども入っていて、 AWS-CLI
も入っているので、困ることはなさそうです。
Software in virtual environments for GitHub Actions - GitHub Help
github-actions-samples/env.yml
jobs:
build:
name: Greeting
runs-on: ubuntu-latest
steps:
- env:
NAME: hisasann
run: echo "Hello, ${NAME}!"
Virtual environments for GitHub Actions - GitHub Help
github-actions-samples/setup-node.yml
jobs:
build:
name: Greeting
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- uses: actions/setup-node@v1
with:
node-version: '10.x'
- run: npm install
- run: npm test
env:
NAME: hisasann
以下の公開されている setup-node
を使ってみました。
actions/setup-node: Set up your GitHub Actions workflow with a specific version of node.js
また、自分でマーケットプレイスに公開することもできるようなので、作りたいのを見つかったら公開してみたいと思います。
【GitHub Actions】Slack通知用のactionをTypeScriptで開発してみた - Qiita
余談ですが、 env の使い方で、以下のようにハイフンのブロック範囲を間違えて env を指定すると npm test
に渡らないので注意が必要です。
- run: npm install
env:
NAME: hisasann
- run: npm test
こっちが正解🌭
- run: npm install
- run: npm test
env:
NAME: hisasann
github-actions-samples/matrix-build.yml
このあたりになってくると、個人的にかなり使うジャンルに入ってきました。
いろんな環境で npm test
が通るかは、 npm module を開発するときにとても重宝するので、 github 上でこうゆうテストが実行できるのはありがたいです!
jobs:
build:
name: Node.js ${{ matrix.os }} ${{ matrix.node }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
node: [ '10', '8' ]
steps:
- uses: actions/checkout@master
- name: Setup node
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node }}
- run: yarn install
- run: yarn test
env:
NAME: hisasann
余談ですが、普段この手のテストは appveyor
を使っているので、その感じを書いておきます。
version: "{build}"
clone_depth: 10
init:
- git config --global core.autocrlf false
environment:
matrix:
# node.js
- nodejs_version: 8
- nodejs_version: 10
install:
- ps: Install-Product node $env:nodejs_version
- IF %nodejs_version% LSS 8 npm -g install npm@5
- npm install --ignore-scripts
build: off
test_script:
- node --version && npm --version
- npm run test
matrix:
fast_finish: false
typescript-nuxtjs-boilerplate/appveyor.yml