みなさんこんにちは!
オルターブースしんば(@shinbaz)です。
いつの話!?という感じなんですが(振り返ったら8月でした)、GitHub Partner向けに提供されている、GitHub Certification Actionsについて、取得した報告ブログです🖐️
これで現在公開されているAdmin、GitHub Advanced Securityとあわせ3冠を達成できました💯❗️ (最近、FoundamentalsというGitとはなんぞや?みたいなのも追加されたみたい!)
2024年は、このPartner向けのCertificationが一般公開されるということで、眠っていた下書きに肉付けをして公開しておきたいと思います💡
目次
▼過去の記事 Actionsに関してはしっかり検証をしながら勉強することをオススメします! 他の試験ももちろん手を動かすことは必要ですが、Actionsは特に触りやすい機能なので必ず手を動かしましょう! 私も、いちから学ぶつもりで初歩的なworkflowのyamlを書いては実行、、、を繰り返しました🖐️ 教材は公式ドキュメントです。画面分割し、英語版、日本語版でそれぞれ同じページを開き、基本は英語版を読んで、理解のできない文章については日本語を読むようにしました。 やはり英語の壁がそこそこあって、英語で勉強しましたが問題のうち5問くらいは、なにを聞かれているのかわからない・・・みたいな問題がありました。 英語、勉強します😆 Actions試験に向けた勉強は50時間弱したんじゃないかなと記憶してます。 ちなみにGitHub試験、有効期間が2年から3年になりました。 今回、試験のためにMicrosoft Learning Pathやドキュメントを一読しました! 同時に複数のデプロイが実行されてしまうことは、チーム開発では避けたい場面かなと思います。 以下のworkflowで、手動(workflow_dispatch)で このワークフローを連続で3回実行すると、以下のように、最初のふたつのワークフローが自動でキャンセルされます。 実はよく知らなかった、GitHub Actionsにおける色々なTimeout時間! ジョブ実行の順序に関しては、 たとえばこんな感じ ちなみに、beforeとかafterではなく、 GitHubは毎月のように新機能がリリースされているのでほんとにwkwkなプラットフォームです。 GitHub Universe 2023 というサンフランシスコで開催されたイベントでもたくさんの目玉アップデートが発表されました! 11月29日(水)に、振り返りまとめイベント(Recap)を実施しますので、興味のある方はぜひご参加ください! サービス一覧わたしの勉強の仕方
github.com
この試験は更新制ではありません。期限が切れると失効するので、もう一度受け直しましょう💡Actionsを学んでいて知ったこと3選!
その中で、改めて便利だと思った / 初めて知った機能や設定など3選を共有します!その1. concurrency
concurrency
は、同時に実行されるジョブやワークフローの数を制限するためのフィールドです。
主に、デプロイやActionsの競合防止やリソースの制限を目的として使用されます。concurrency
を試せます。
この設定をすると、ひとつのリポジトリに対し、ひとつワークフローのみ実行を許します。
(jobsの中身は適宜変えて問題ありません。)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
その2. GitHub ActionsにおけるTimeout時間
その3. カスタムアクションで、ジョブ実行前、ジョブ実行後のスクリプトを指定する
needs
やif
を使って制御する部分という認識でいたのですが、実はactions.yaml
内で定義できることを知りました!actions.yaml
内の runs
で、pre
やpost
を指定することで定義できます。runs:
using: 'node20'
pre: 'setup.js' # これはアクションが開始される前に実行されるスクリプトです
pre-if: runner.os == 'linux' # この条件が真の場合のみ、preスクリプトが実行されます
main: 'index.js' # これはアクションのメインスクリプトです
post: 'cleanup.js' # これはアクションが完了した後に実行されるスクリプトです
pre``post
なので注意です😆まとめ!サンフランシスコ発のGitHub最新情報に関するイベント情報も!