2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitHub Actionsの処理の流れと基本的な使い方を理解する

Posted at

GitHub Actionsの処理の流れと基本的な使い方を理解するための項目をまとめました。

概要

  • GitHub ActionsとはGitHub上でpushやmerge、PR作成をトリガにして処理を走らせる機能です
    • テスト、ビルド、デプロイなどができます
  • .github/workflows/*.ymlで記載されたファイルを実行します
  • 料金はpublicリポジトリであれば無料になります

動作環境

  • Apple M1
  • macOS 13.4

処理の構成

GitHub Actionsは下記の項目から構成されます。

用語 意味
workflow 一連の処理
job workflow内の個々の実行タスク。1つ以上存在して専用のコンテナ内で順次・並列実行される。
step job内での作業単位
script/action step内での作業単位


(参照:GitHub Actions のコンポーネント)

GitHub Actionsの設定と実行

まずは試して流れを把握します。

  • 任意のリポジトリを用意します。
  • ローカルで.github/workflows/github-actions-demo.ymlを作成します
    • 補足:.github/workflows/*.ymlが検出されて処理が走ります
  • 下記の内容を記載します
    • github-actions-demo.yml
      name: GitHub Actions Demo
      run-name: ${{ github.actor }} is testing out GitHub Actions 🚀
      on: [push]
      jobs:
        Explore-GitHub-Actions:
          runs-on: ubuntu-latest
          steps:
            - run: echo "🎉 The job was automatically triggered by a ${{ github.event_name }} event."
            - run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by GitHub!"
            - run: echo "🔎 The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}."
            - name: Check out repository code
              uses: actions/checkout@v4
            - run: echo "💡 The ${{ github.repository }} repository has been cloned to the runner."
            - run: echo "🖥️ The workflow is now ready to test your code on the runner."
            - name: List files in the repository
              run: |
                ls ${{ github.workspace }}
            - run: echo "🍏 This job's status is ${{ job.status }}."
      
  • commitしてpushすると処理が走ります
  • 結果はリポジトリの actions > All workflows > GitHub Actions Demo から確認できます
  • Explore-GitHub-Actionsで詳細な結果を確認できます

yml構文の理解

GitHub Actionsの実行結果とymlを比較しながらymlの構文を理解します。

構文 意味
name workflowの名前。コンソール上ではアクションタブに表示される
run-name workflowから生成されたworkflow実行の名前。コンソール上では実行リストに表示される
on workflowを実行するトリガ。主なものにpush, pull_request, schedule, issuesなどがある。その他の選択肢はこちら
jobs 以降に1つ以上のjobを記載する
jobs.<job_id> jobへの一意な識別子。ここではExplore-GitHub-Actionsとした
jobs.<job_id>.runs-on jobを実行するマシンの種類。選択例はこちら
jobs.<job_id>.steps 以降にscript/actionを記載する
jobs.<job_id>.steps[*].run OSのシェルを実行。コンソール上ではコマンドが表示されるが、後述するnameで上書き可能
jobs.<job_id>.steps[*].name GitHubコンソールで実行結果のフローに表示させるstep名。
jobs.<job_id>.steps[*].uses 同リポジトリ、公開リポジトリ、またはコンテナで定義されているコマンド。詳細はこちら
env 環境変数

よく使われる構文

onのフィルターと複数イベント

on:
  # 実行タイミングをdevelopブランチ、release/ブランチ配下にPR作成された時に限定する(フィルター)
  pull_request:
    branches:
      - develop
      - 'release/**'
    # 除外ブランチ
    branches-ignore:
      - 'mona/octocat'
      - 'releases/**-alpha'
  # push時のイベントとして加える(複数化)
  push:
    branches:
      - staging:
      - 'release/**'

workflowと同じリポジトリ内にあるアクションの使用

前提として下記のフォルダ構成の場合

|-- hello-world (repository)
|   |__ .github
|       └── workflows
|           └── my-first-workflow.yml
|       └── actions
|           |__ hello-world-action
|               └── action.yml # 実行したいファイル
jobs:
  my_first_job:
    runs-on: ubuntu-latest
    steps:
      # リポジトリのcheckout
      - name: My first step - check out repository
        uses: actions/checkout@v4
      # アクションの呼び出し
      - name: Use local hello-world-action
        uses: ./.github/actions/hello-world-action

node環境の構築

ゼロから環境構築するのは大変なので既存のパッケージ化されたactionを使用します。参考

jobs:
  my_first_job:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
          with:
            # node-version: 18
            node-version-file: '.nvmrc'
            check-latest: false
            architecture: 'x64'
      - run: npm ci
      - run: npm test

参考

下記を参考にさせていただきした!

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?