19
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

20%の確率で「熱盛」が出て失敗するGitHub Action

Posted at

GitHub Actions Advent Calendar 2020 4日目の記事です。

リリースから1年が経過したGitHub Actions、皆さんは活用なさっているでしょうか?
この1年間にも色々と機能が追加され、ついには湯婆婆を実装できる段階まで進化しております。
今回は、続々と進化を遂げているGitHub Actionsの機能について
熱盛

失礼しました。熱盛と出てしまいました。

実行例

正常終了

実行ログ
並盛なので大丈夫です。
並盛

異常終了

実行ログ
失礼しました。ワークフローに熱盛と出てしまいました。(放送事故)
アツモリッ!

実行ログに警告/エラーメッセージを出す

::warning::メッセージ または ::error::メッセージ を標準出力することで、警告/エラーメッセージを残せます。
(メッセージを出すだけで、__実際にActionを失敗させているわけではない__点に注意!)

- name: 警告
  run: echo "::warning::なんかおかしい"
- name: エラー
  run: echo "::error::エラー!"
- name: その後の処理
  run: echo "その後の処理" # ここも実行されるし、Actionの実行結果もsuccess

::error file=ファイル名,line=行,col=列::メッセージのように出力することで、「特定ファイルの特定箇所」に対する警告/エラーメッセージを表現できます。

- name: 熱盛
  run: echo "::error file=.github/workflows/atsumori.yml,line=17,col=10::失礼しました。熱盛と出てしまいました。"

image.png

Actionを失敗させる

終了コードを0以外にすればOKです。

- name: 私、絶対失敗するので
  run: exit 1

ランダムに値を選択するaction

「CI/CDでランダムな値を取得したい」という需要がないのか、(作成当時)Marketplaceに似たようなものがなかったので自分で作りました。

Choose Random Action · Actions · GitHub Marketplace

使用例

steps:
  - uses: ddradar/choose-random-action@v1
    id: act # 選択された値を後から参照するために必要
    with:
      # 選択肢(必須) "|" の後に続けて1行ごとに記述する
      contents: |
        foo
        bar
        baz
      # 確率(オプション,デフォルト時は全項目同じ確率) 整数値で割合を指定
      weights: |
        2
        3
        5
  - name: Echo outputs
    # foo: 20%, bar: 30%, baz: 50% の確率で選ばれる
    run: echo ${{ steps.act.outputs.selected }}

完成形

name: 熱盛

on: workflow_dispatch

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
    - uses: ddradar/choose-random-action@v1
      id: act
      with:
        contents: |
          並盛
          中盛
          大盛
          特盛
          熱盛
    - name: ${{ steps.act.outputs.selected }}
      if: steps.act.outputs.selected == '熱盛'
      run: |
        echo "::error file=.github/workflows/atsumori.yml,line=17,col=10::失礼しました。熱盛と出てしまいました。"
        exit 1

おわりに

自作のAction、自動テストには向きませんが「ランダムに処理を振り分けたい」用途にご利用ください。
リポジトリでは自作のLGTMコメントに反応するActionとの利用例も紹介しています。

19
3
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
19
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?