Alternative Architecture DOJO

オルターブースのクラウドネイティブ特化型ブログです。

GitHub Actionsっておもしろ!GitHub Certification Actionsを、取得してました報告🖐️

みなさんこんにちは!  
オルターブースしんば(@shinbaz)です。

いつの話!?という感じなんですが(振り返ったら8月でした)、GitHub Partner向けに提供されている、GitHub Certification Actionsについて、取得した報告ブログです🖐️

これで現在公開されているAdmin、GitHub Advanced Securityとあわせ3冠を達成できました💯❗️ (最近、FoundamentalsというGitとはなんぞや?みたいなのも追加されたみたい!)

2024年は、このPartner向けのCertificationが一般公開されるということで、眠っていた下書きに肉付けをして公開しておきたいと思います💡

目次

GitHub Actions 認定バッジ

▼過去の記事

aadojo.alterbooth.com

aadojo.alterbooth.com

わたしの勉強の仕方

Actionsに関してはしっかり検証をしながら勉強することをオススメします!

他の試験ももちろん手を動かすことは必要ですが、Actionsは特に触りやすい機能なので必ず手を動かしましょう!

私も、いちから学ぶつもりで初歩的なworkflowのyamlを書いては実行、、、を繰り返しました🖐️
github.com

教材は公式ドキュメントです。画面分割し、英語版、日本語版でそれぞれ同じページを開き、基本は英語版を読んで、理解のできない文章については日本語を読むようにしました。

やはり英語の壁がそこそこあって、英語で勉強しましたが問題のうち5問くらいは、なにを聞かれているのかわからない・・・みたいな問題がありました。

英語、勉強します😆

Actions試験に向けた勉強は50時間弱したんじゃないかなと記憶してます。

ちなみにGitHub試験、有効期間が2年から3年になりました。
この試験は更新制ではありません。期限が切れると失効するので、もう一度受け直しましょう💡

Actionsを学んでいて知ったこと3選!

今回、試験のためにMicrosoft Learning Pathやドキュメントを一読しました!
その中で、改めて便利だと思った / 初めて知った機能や設定など3選を共有します!

その1. concurrency

concurrency は、同時に実行されるジョブやワークフローの数を制限するためのフィールドです。 主に、デプロイやActionsの競合防止やリソースの制限を目的として使用されます。

同時に複数のデプロイが実行されてしまうことは、チーム開発では避けたい場面かなと思います。

以下のworkflowで、手動(workflow_dispatch)でconcurrencyを試せます。 この設定をすると、ひとつのリポジトリに対し、ひとつワークフローのみ実行を許します。 (jobsの中身は適宜変えて問題ありません。)

github.com

name: workflow_dispatch5 concurrency

on:
  workflow_dispatch

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  job1:
    runs-on: ubuntu-latest
    steps:
      - run: |
          echo "sleep10中..."
          sleep 10
  
  job2:
    runs-on: ubuntu-latest
    steps:
      - run: |
          echo "sleep20中..."
          sleep 20

  job3:
    runs-on: ubuntu-latest
    needs: job1
    steps:
      - run: |
          echo "sleep10中..."
          sleep 10

このワークフローを連続で3回実行すると、以下のように、最初のふたつのワークフローが自動でキャンセルされます。

concurrencyを設定したことにより最初のふたつのワークフローがキャンセルされている

その2. GitHub ActionsにおけるTimeout時間

実はよく知らなかった、GitHub Actionsにおける色々なTimeout時間!

  • job6時間
    • stepsも6時間!(stepsはjobに内包されているので、当然ですね)
    • timeout-minutes を使い、カスタマイズ可能!デフォ6時間と長いので、リソースの節約をするためにも短くしても良いかもしれませんね〜。
      • workflow全体に効かすことも可能
  • Cache7日
  • ActionsのApprove30日
  • Artifact保存期間90日
    • 変更可能
      • workflowでretention-days を設定する
      • リポジトリ、組織、またはエンタープライズによって設定された保存制限を超えることはできない!

その3. カスタムアクションで、ジョブ実行前、ジョブ実行後のスクリプトを指定する

ジョブ実行の順序に関しては、needsifを使って制御する部分という認識でいたのですが、実はactions.yaml内で定義できることを知りました!

actions.yaml 内の runs で、prepostを指定することで定義できます。

たとえばこんな感じ

runs:
  using: 'node20'
  pre: 'setup.js'      # これはアクションが開始される前に実行されるスクリプトです
  pre-if: runner.os == 'linux'  # この条件が真の場合のみ、preスクリプトが実行されます
  main: 'index.js'     # これはアクションのメインスクリプトです
  post: 'cleanup.js'   # これはアクションが完了した後に実行されるスクリプトです

ちなみに、beforeとかafterではなく、pre``postなので注意です😆

まとめ!サンフランシスコ発のGitHub最新情報に関するイベント情報も!

GitHubは毎月のように新機能がリリースされているのでほんとにwkwkなプラットフォームです。

GitHub Universe 2023 というサンフランシスコで開催されたイベントでもたくさんの目玉アップデートが発表されました!

11月29日(水)に、振り返りまとめイベント(Recap)を実施しますので、興味のある方はぜひご参加ください!

alterbooth.connpass.com


サービス一覧

www.alterbooth.com

cloudpointer.tech

www.alterbooth.com