Upgrade to Pro — share decks privately, control downloads, hide ads and more …

【解説】第3章 速習GitHub Actions 〜 明日からの充実GitHub自動化ライフのための凝縮ポイント 〜 / zozotechbook1-ch03-githubactions

【解説】第3章 速習GitHub Actions 〜 明日からの充実GitHub自動化ライフのための凝縮ポイント 〜 / zozotechbook1-ch03-githubactions

Title
【解説】第3章 速習GitHub Actions 〜 明日からの充実GitHub自動化ライフのための凝縮ポイント 〜

Speaker
川崎 庸市 Yoichi Kawasaki (株式会社ZOZOテクノロジーズ SRE部)

2020/04/28 【オンライン】#技術書典 頒布本「ZOZO TECH BOOK」解説会 Vol.1
https://zozotech-inc.connpass.com/event/173309/
Session Video: https://www.youtube.com/watch?v=kmE1q5wh3r4

Yoichi Kawasaki

April 28, 2020
Tweet

More Decks by Yoichi Kawasaki

Other Decks in Technology

Transcript

  1. 【解説】第3章 速習GitHub Actions
    〜 明日からの充実GitHub自動化ライフのための
    凝縮ポイント 〜

    #技術書典 頒布本「ZOZO TECH BOOK」解説会 Vol.1

    株式会社ZOZOテクノロジーズ

    SRE部 

    川崎庸市 @yokawasa
    Copyright © ZOZO Technologies, Inc.

    View Slide

  2. © ZOZO Technologies, Inc.
    株式会社ZOZOテクノロジーズ
    SRE部
    川崎 庸市 Yoichi Kawasaki
    株式会社ZOZOテクノロジーズ所属のエンジニア。過去に国内モバイルベンチャー
    や大手インターネット企業にて大規模サービスの基盤プラットフォーム開発に従
    事、外資系ソフトウェアベンダーにて自社エンタープライズ検索製品やクラウドサー
    ビスの技術コンサルやアーキテクチャ策定支援に従事。現在はインフラ運用の自
    動化・効率化が目下の関心事。業務外ではNoOps Japanコミュニティーの運営に
    従事。趣味はサウナ。

    2
    https://www.amazon.co.jp/dp/4839970920/
    プログラマーのための
    Visual Studio Codeの教科書
    共同著者本 4/30発売予定
    Twitter / GitHub: @yokawasa

    View Slide

  3. © ZOZO Technologies, Inc.
    3
    アジェンダ

    技術書典 応援祭で頒布された
    「ZOZO TECH BOOK VOL.1」の
    第3章「速習GitHub Actions 〜 明日からの充実
    GitHub自動化ライフのための凝縮ポイント」
    の凝縮ポイントを解説します。
    発表後Q&Aタイムあります。

    View Slide

  4. © ZOZO Technologies, Inc.
    4
    https://docs.google.com/presentation/d/1Ez4wURim60oG49KDZ0W25GEGfiEeUrG5-3Hw6fNbh2A/edit?usp=sharing

    View Slide

  5. © ZOZO Technologies, Inc.
    5
    GitHub Actions概要

    View Slide

  6. © ZOZO Technologies, Inc.
    GitHub Actionsとは?

    ソフトウェア開発のライフサイクルにおけるワークフローを自動化する
    サービス
    6
    ● 2018年 β版 GitHub Universeで発表
    ○ 実行環境:Linux版のみ
    ○ ワークフロー記述形式:HCL
    ● 2019年 11月正式版
    ○ 実行環境:Linux、macOS、Windows
    ○ ワークフロー記述形式:YAML
    {repository}/.github/workflows/{action}.yml

    View Slide

  7. © ZOZO Technologies, Inc.
    7
    name: Sample Node.js CI
    on: [push]
    jobs:
    test:
    name: Test on node ${{ matrix.node_version }} and ${{
    matrix.os }}
    runs-on: ${{ matrix.os }}
    strategy:
    matrix:
    node_version: [8, 10, 12]
    os: [ubuntu-latest, windows-latest, macos-latest]
    steps:
    - uses: actions/checkout@v1
    - name: Use Node.js ${{ matrix.node_version }}
    uses: actions/setup-node@v1
    with:
    version: ${{ matrix.node_version }}
    - run: npm ci
    - run: npm test
    env:
    CI: true
    {repository}/.github/workflows/{action}.yml
    ワークフローをYAMLで記述 GitHub Actionsが自動実行
    イベント (push)をトリガーにGitHub Actionsがワークフローを自動実行
    GitHub Actionsのライブログ UI

    View Slide

  8. © ZOZO Technologies, Inc.
    GitHub Actionsの特徴

    ● GitHubとの親和性

    ○ 自動化ワークフローを直接GitHubリポジトリに作成可能

    ● 豊富なジョブ実行環境の選択肢

    ○ Linux, macOS, Windows

    ● 豊富なワークフロー実行トリガー

    ○ リポジトリで発生する全ての操作イベントや外部イベントのトリガー、スケジュール実行

    ● 充実した基本機能

    ○ シークレット情報管理、Artifactの保存・取得、依存データのキャッシュ、etc.

    ● 豊富なアクションの選択肢と充実したエコシステム

    ○ GitHub公式+コミュニティ提供アクションとそれらを流通させるためのマーケットプレイス

    8

    View Slide

  9. © ZOZO Technologies, Inc.
    豊富なテンプレート&スニペットを使って簡単に開始

    9
    select template
    アクション利用のための YAML
    スニペット
    ● リポジトリに何もActionがない場合はスターター用テン
    プレート選択ページが表示
    ● キーワード検索でマーケットプレイスに公開されている
    アクション利用のためのスニペットを簡単に取得可能

    View Slide

  10. step1
    step2
    step3
    stepN
    Job1

    ワークフロー
    イベント
    • push
    • pull requests
    • pull request review
    • issues
    • issue comment
    • fork
    • release
    • label
    • public
    • status
    • watch
    • deployment
    • …
    Triggers
    name: My Workflow
    on:
    push:
    branches:
    - 'releases/*’
    - '!releases/**-alpha'
    jobs:
    job_one:
    name: Job_1
    runs-on: ubuntu-latest
    steps:
    - name: step 1
    run: echo "1"
    - name: step 2
    run: echo "2"
    - name: step 3
    run: echo ”3"
    job_two:
    name: Job 2
    runs-on: windows-latest
    steps:
    ...
    ワークフローYAML
    Job1定義
    Job2定義
    Trigger定義
    各step定義
    実行環境
    イベント、トリガー、ワークフローの基本

    アクションはステップとして実行されます

    View Slide

  11. © ZOZO Technologies, Inc.
    代表的なGitHubアクション

    11
    主要GitHub公式アクション
    name: Go Release Project
    on:
    push:
    tags:
    - 'v*' # v0.01やv1.0のようなタグv*にマッチするpushイベント
    jobs:
    build:
    name: Upload Release Asset
    runs-on: ubuntu-latest
    steps:
    - name: Check out code into the Go module directory
    uses: actions/checkout@v2
    - name: Build Project
    run: |
    GOOS=linux GOARCH=amd64 go build -o dist/hello .
    zip --junk-paths -r myartifact dist
    - name: Create Release # リリースの作成
    id: create_release
    uses: actions/create-release@v1
    env:
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
    with:
    tag_name: ${{ github.ref }}
    release_name: Release ${{ github.ref }}
    draft: false
    prerelease: false
    - name: Upload Release Asset # リリースファイルのアップロード
    id: upload-release-asset
    uses: actions/upload-release-asset@v1
    env:
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
    with:
    upload_url: ${{ steps.create_release.outputs.upload_url }}
    asset_path: ./myartifact.zip
    asset_name: myartifact.zip
    asset_content_type: application/zip

    View Slide

  12. © ZOZO Technologies, Inc.
    12
    ジョブの実行パターン

    View Slide

  13. © ZOZO Technologies, Inc.
    ジョブ実行パターン - 並列実行(デフォルト)

    13
    Job C
    Job A
    Job B
    Events
    jobs:
    job_a:
    runs-on: ubuntu-latest
    steps:
    - run: echo "A step in job A"
    job_b:
    runs-on: ubuntu-latest
    steps:
    - run: echo "A step in job B"
    job_c:
    runs-on: ubuntu-latest
    steps:
    - run: echo "A step in job C"
    Jobs in Workflow YAML
    複数ジョブが定義されている場合、ジョブはデフォルトで並行実行される

    View Slide

  14. © ZOZO Technologies, Inc.
    ジョブ実行パターン - Matrix実行

    14
    ● Matrix実行 = ジョブの設定オプションをリストで指定できる
    ● 複数のOS、プラットフォーム、言語バージョンなどの設定オプション別のジョブを
    実行する場合、Matrixでリスト指定することで簡潔な記述が可能
    Job (macos-latest)
    Events
    jobs:
    build:
    strategy:
    matrix:
    os: [macos-latest, windows-latest, ubuntu-latest]
    runs-on: ${{ matrix.os }}
    steps:
    - name: Build Project
    run: echo "Build on ${{ matrix.os }}
    Jobs in Workflow YAML
    Job (windows-latest)
    Job (ubuntu-latest)

    View Slide

  15. © ZOZO Technologies, Inc.
    ジョブ実行パターン - 直列実行

    15
    複数ジョブをシーケンシャルに実行するには、jobs..needsを使って他の
    ジョブに対する依存関係を定義する
    Job C
    Job A
    Job B
    Events
    jobs:
    job_a:
    runs-on: ubuntu-latest
    steps:
    - run: echo "A step in job A"
    job_b:
    needs: job_a
    runs-on: ubuntu-latest
    steps:
    - run: echo "A step in job B"
    job_c:
    needs: job_b
    runs-on: ubuntu-latest
    steps:
    - run: echo "A step in job C"
    Jobs in Workflow YAML

    View Slide

  16. © ZOZO Technologies, Inc.
    ジョブ実行パターン - Fan-in Fan-out実行

    16
    直列実行と並列実行の組み合わせによる
    Fan-in Fan-outパターンのジョブ実行
    jobs:
    job_a:
    runs-on: ubuntu-latest
    steps:
    - run: echo "A step in job A"
    job_b:
    needs: job_a
    runs-on: ubuntu-latest
    steps:
    - run: echo "A step in job B"
    job_c:
    needs: job_a
    runs-on: ubuntu-latest
    steps:
    - run: echo "A step in job C"
    job_d:
    needs: job_a
    runs-on: ubuntu-latest
    steps:
    - run: echo "A step in job D"
    job_e:
    needs: [job_b, job_c, job_d]
    runs-on: ubuntu-latest
    steps:
    - run: echo "A step in job E"
    Jobs in Workflow YAML

    View Slide

  17. © ZOZO Technologies, Inc.
    17
    さまざまなジョブ実行環境

    View Slide

  18. © ZOZO Technologies, Inc.
    ジョブ実行環境 - GitHubホスト仮想マシン

    ● GitHubが提供するGitHubホスト型の仮想マシン
    ● マルチプラットフォーム(Linux、macOS、Windows)で提供
    ● ジョブは仮想マシン上のGitHubホスト型Runnerインスタンスで実行される
    18
    jobs:
    build:
    runs-on: ubuntu-16.04
    ジョブ実行の仮想マシン指定
    利用可能なGitHubホスト仮想マシン
    Supported runners and hardware resources
    https://help.github.com/en/actions/reference/virtual-environments-for-github-hosted-runners#supported-runners-and-hardware-resources

    View Slide

  19. © ZOZO Technologies, Inc.
    ジョブ実行環境 - Dockerコンテナー

    ● ジョブを仮想マシン上のDockerコンテナー内で実行可能

    ● jobs..steps.usesシンタックスでコンテナーを指定

    ● メリット:ワークフローの単純化、利用ソフトウェアや環境の自由度

    19
    jobs:
    build:
    name: Build on centos:6 (Alternateive)
    runs-on: ubuntu-latest
    steps:
    - name: Run on centos:6 (step level)
    uses: docker://centos:6
    with:
    args: /bin/sh -c "cat /etc/*release
    ジョブ実行のコンテナー指定(ステップレベル)

    View Slide

  20. © ZOZO Technologies, Inc.
    ジョブ実行環境 - セルフホスト型Runner

    セルフホスト型Runnerを独自環境にホストすることで独自環境でジョブを実行できる。
    独自環境でのジョブ実行の主なモチベーションに次の点がある。
    ● 自由度の高さ: GitHubホスト環境では利用できないソフトウェアやライセンスを要するソフトウェアを
    使いたい
    ● セキュリティ要件: ファイアウォール内のマシンと通信したい。また、クレデンシャル情報を含んだ処理
    を他社環境で実行したくない

    20
    Runner
    GitHub
    Port 443
    Your Machine
    独自環境はOutbound 443 portの穴あけ設定が必要
    セルフホスト型Runnerのセキュリティ的懸念
    Runnerが動く環境で悪意あるコードが実行されてしまうリスクが
    あるため、パブリックに公開されたリポジトリでの利用は推奨さ
    れていません。なお、 GitHubホスト型Runnerの場合は、Runner
    インスタンスで実行されるジョブは、実行毎でクリーンな隔離さ
    れた仮想マシンから実行され、処理が終わると全て破棄される
    ためこの心配はありません。

    View Slide

  21. セルフホスト型Runner実行イメージ

    ① セルフホスト型Runner認証・起動
    jobs:
    build:
    runs-on: self-hosted
    ④ セルフホスト型Runnerでジョブ実行
    ③ リポジトリにイベント発生
    ② セルフホスト型Runnerが登録される
    ワークフローで実行環境に”self-hosted”を指定
    独自環境(macOS上) GitHub リポジトリ(Private)

    View Slide

  22. © ZOZO Technologies, Inc.
    22
    実行環境、イベント& シークレット情報

    View Slide

  23. © ZOZO Technologies, Inc.
    実行環境、イベント情報へのアクセス

    GitHub Actionsで発生したイベント情報、リポジトリ情報やワークスペース情報などは
    GitHub側で規定にセットされる環境変数やコンテキストから取得可能

    23
    echo "GITHUB_WORKSPACE ${GITHUB_WORKSPACE}"
    echo "GITHUB_EVENT_PATH ${GITHUB_EVENT_PATH}
    規定の環境変数の出力
    コンテキスト情報(${{ expression }}でアクセス可能)
    steps:
    - name: Dump GitHub Context
    env:
    GITHUB_CONTEXT: ${{ toJson(github) }}
    run: echo "$GITHUB_CONTEXT
    GitHubコンテキストのダンプ例
    ● 規定の環境変数: https://help.github.com/en/actions/configuring-and-managing-workflows/using-environment-variables
    ● コンテキスト情報: https://help.github.com/ja/actions/reference/contexts-and-expression-syntax-for-github-actions

    View Slide

  24. © ZOZO Technologies, Inc.
    シークレット情報とGITHUB_TOKEN

    ● GitHub Actionsはシークレット情報を管理・アクセスするための仕組みを提供。設定し
    た変数は${{ secrets.シークレット変数名 }}でアクセス可能
    ● GitHub APIの利用に必要となるトークン情報は規定でsecrets.GITHUB_TOKENで
    アクセス可能
    24
    シークレット情報設定UI
    name: Create issue on commit
    on:
    - push
    jobs:
    create_commit:
    runs-on: ubuntu-latest
    steps:
    - name: Create issue using REST API
    run: |
    curl --request POST \
    --url https://api.github.com/repos/${{ github.repository }}/issues \
    --header 'authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' \
    --header 'content-type: application/json' \
    --data '{
    "title": "Automated issue for commit: ${{ github.sha }}",
    "body": "This issue was automatically created by the GitHub Action workflow **${{ github.workflow }}**"
    }'
    トークン情報を利用したGitHub REST API利用例

    View Slide

  25. © ZOZO Technologies, Inc.
    25
    ワークフロー内のデータ共有パターン

    View Slide

  26. © ZOZO Technologies, Inc.
    複数ジョブと複数ステップの実行空有間イメージ

    ● ワークフローの各ジョブは別々のGitHubホスト型Runnerインスタンスで実行
    ● ジョブ中の各ステップはRunner環境の別々のプロセスで実行
    26
    jobs:
    job_a:
    name: Job_A
    runs-on: ubuntu-latest
    steps:
    - name: step A1
    run: echo "A1"
    - name: step A2
    run: echo "A2"
    job_b:
    name: Job B
    runs-on: ubuntu-latest
    steps:
    - name: step B1
    run: echo ”B1"
    複数ジョブ+ステップのワークフロー
    step A1 step A2
    step B1
    ジョブAのRunnerインスタンス
    ジョブBのRunnerインスタンス
    プロセス
    プロセス プロセス

    View Slide

  27. © ZOZO Technologies, Inc.
    データ共有方法 - ステップ間

    ステップはジョブが実行されるRunner環境におけるプロセスとして実行される
    27
    方法① 共通のファイルシステムを通じた
    データ共有
    方法② set-envやset-outputを使った後続
    ステップへの共有
    steps:
    - name: Dump Env Variables
    run: |
    echo "HOME: ${HOME}"
    echo "GITHUB_WORKSPACE: ${GITHUB_WORKSPACE}"
    - name: Write Data in a Job
    run: echo "Hello" > ${GITHUB_WORKSPACE}/myoutput.txt
    - name: Read Data in a Job
    run: |
    value=$(cat ${GITHUB_WORKSPACE}/myoutput.txt)
    echo "Read Data: ${value}"
    環境変数 GITHUB_WORKSPACEやHOMEの活用
    steps:
    - run: echo "::set-env name=TEST_VAR::Hello"
    - run: echo "TEST_VAR ${TEST_VAR}"
    steps:
    - run: echo "::set-output name=action_fruit::strawberry"
    id: fruit
    - uses: actions/hello-world-javascript-action@master
    with:
    who-to-greet: ${{ steps.fruit.outputs.action_fruit }}
    ::set-envで環境変数を後続ステップに共有
    ::set-outputであるステップのoutputとして登録
    GitHub Actionsワークフローコマンド: https://help.github.com/en/actions/reference/workflow-commands-for-github-actions

    View Slide

  28. © ZOZO Technologies, Inc.
    データ共有方法 - ジョブ間

    複数ジョブ間でのデータの共有にはArtifact(成果物)用ストレージを活用する

    28
    jobs:
    first_job:
    name: First Job
    runs-on: ubuntu-latest
    steps:
    - shell: bash
    run: |
    echo "First Job Success!!" > first-job.txt
    - name: Upload First Job Output
    uses: actions/upload-artifact@v1
    with:
    name: job-output
    path: first-job.txt
    second_job:
    name: Second Job
    needs: first_job
    runs-on: ubuntu-latest
    steps:
    - name: Download First Job Output
    uses: actions/download-artifact@v1
    with:
    name: job-output
    - shell: bash
    run: |
    value=$(cat job-output/first-job.txt)
    echo "First Job Output: ${value}
    ジョブが異なると異なるランナー環境で実行される。
    よって、ステップ間の共有ように共通のワークスペース、ファイ
    ルシステムでのデータ共有ができず、また、複数ジョブ間で共有
    可能な変数も提供されていない。
    次のアクションを活用してArtifact用ストレージを通じ
    てジョブ間でデータを共有
    ● Artifactアップロード用アクション:
    actions/upload-artifact
    ● Artifactダウンロード用のアクション
    actions/download-artifact
    Artifactアクションを活用したfirst_jobとsecond_jobのジョブ間でのデータ共有例

    View Slide

  29. © ZOZO Technologies, Inc.
    29
    その他実用的機能の紹介

    ● 依存データのキャッシュ

    ● github-script

    ● カスタムアクション


    View Slide

  30. © ZOZO Technologies, Inc.
    依存データのキャッシュ

    ● ワークフロー内で依存データをキャッシュする 仕組み
    ○ GitHub ホスト型 Runner インスタンスで実行されるジョブは、実行毎でクリーンな隔離さ れた仮想マシンから実行され、
    ジョブの実行が終わると破棄されるため、依存ファイルを毎回ダウンロードする必要がある
    ● 依存 データのキャッシュは actions/cacheアクションを利用
    ● さまざまな言語の依存パッケージに活用可能
    30
    - uses: actions/cache@v1
    with:
    # npm cache files are stored in `~/.npm` on Linux/macOS
    path: ~/.npm
    key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
    restore-keys: |
    ${{ runner.os }}-build-${{ env.cache-name }}-
    ${{ runner.os }}-build-
    ${{ runner.os }}-
    npmのキャッシュ設定例(Linux/macOS)
    ワークフローデータのキャッシングと保存 https://help.github.com/ja/actions/configuring-and-managing-workflows/caching-dependencies-to-speed-up-workflows

    View Slide

  31. © ZOZO Technologies, Inc.
    キャッシュの制限

    ● 7日間以上アクセスされていないキャッシュファイルは自動的に削
    除される
    ● リポジトリあたりの最大キャッシュサイズは5GB。この制限を超えた
    場合、合計サイズが5GB以下になるまでキャッシュが退去される
    31

    View Slide

  32. © ZOZO Technologies, Inc.
    github-scriptsで簡単GitHub API連携

    github-script アクションはインプットに JavaScript が記述でき、
    ワークフローで簡単に GitHub API を使った処理が追加できる
    32
    on:
    issues:
    types: [opened]
    jobs:
    comment:
    runs-on: ubuntu-latest
    steps:
    - name: Comment on an issue
    uses: actions/[email protected]
    with:
    github-token: ${{secrets.GITHUB_TOKEN}}
    script: |
    const commentBody = `Hi @${context.actor}! Thanks for the feedback! We'll
    assign the issue to the content author to evaluate and update as appropriate.`;
    github.issues.createComment({
    issue_number: context.issue.number,
    owner: context.repo.owner,
    repo: context.repo.repo,
    body: commentBody
    })
    Issueへのコメント例
    Script シンタックスの中で既に API 認証済み
    の octokit/rest.js のクライアントであるgithub
    オブジェクトが利用可能
    ● gitHub-script: https://github.com/actions/github-script
    ● Octokit/rest.js: https://octokit.github.io/rest.js/

    View Slide

  33. © ZOZO Technologies, Inc.
    CI/CDだけじゃない、共通タスクの自動化

    ● GitHub Actions はリポジトリのコードのビルド、テスト、リリースといった単なる
    CI/CD のためのワークフロー構築だけのための自動化ツールではない。リポジトリ
    で発生するすべての操作イベントのトリガーを提供し、さまざまな共通処理に活用可

    ○ Wiki のページ作成・更新(gollum)、Issue の作成(issues)や Issue へのコメン ト
    (issue_comment)、リポジトリへのラベル作成(label)、プロジェクトの作成(project)
    ○ ワークフローをスケジュール実行
    ○ 外部イベント(repository_dispatch)をトリガーにワークフローを実行
    ● 共通タスク例
    ○ GitHub Issueコメントの内容に応じたChatOps的な処理
    ○ Pushされたコードに対する静的解析、セキュリティスキャンの実行
    33

    View Slide

  34. © ZOZO Technologies, Inc.
    カスタムアクション

    ● 独自のアクションを作成してワークフローで実行可能
    ● 他のユーザーと共有が可能(マーケットプレイスへの公開)
    ● JavaScript と Docker コンテナーアクションの2種類の作り方がある
    34
    用意するもの
    ● action.yml - inputs/outputsなどメタデータ定義
    ● JavaScript or Dockerコンテナーアクション
    公開方法
    ● 直接パスの公開
    ● マーケットプレイスへの登録
    https://github.com/marketplace?type=actions
    GitHub Actionパスの指定: {owner}/{repo}@{ref}
    Publicレポジトリの特定のbranch, ref, またはSHAを指定可

    steps:
    - uses: {owner}/{actionname}@74bc508 # 特定コミット
    - uses: {owner}/{actionname}@v1 # メジャーリリースバージョン
    - uses: {owner}/{actionname}@v1.2 # マイナーリリースバージョン
    - uses: {owner}/{actionname}@master # ブランチ

    View Slide

  35. © ZOZO Technologies, Inc.
    カスタムアクション例

    35
    Dockerコンテナーカスタムアクション例
    name: 'Container Action Template'
    description: 'Get started with Container actions'
    author: 'GitHub'
    inputs:
    myInput:
    description: 'Input to use'
    default: 'world'
    runs:
    using: 'docker'
    image: 'Dockerfile'
    args:
    - ${{ inputs.myInput }}
    #!/bin/sh -l
    echo "hello $1"
    action.yml - アクションのinput/outputを定義
    entrypoint.sh - コンテナーのエントリーポイントファイル
    公開アクションパス (例 ownerがyokawasaの場合)
    yokawasa/container-action@v1
    https://github.com/yokawasa/container-action
    uses: yokawasa/container-action@v1
    with:
    myInput: 'world'
    カスタムアクションを使うワークフローYAML

    View Slide

  36. © ZOZO Technologies, Inc.
    さいごに

    36
    ● GitHub Actionsを使うことで、CI/CDはもちろん、さまざまなGitHubベースの作業を
    自動化でき、より効率的なソフトウェア開発が可能になります
    ● まだはじめていない方、何でもいいのでご自身のリポジトリでワークフローを作成し
    てみるところからはじめてみてください。手を動かしてみることでその便利さが理解
    できます。
    Have a happy automation life
    with GitHub Actions!

    View Slide

  37. View Slide