LoginSignup
2
1

More than 1 year has passed since last update.

GitHub Actions ${{expression}} 評価

Last updated at Posted at 2021-09-08

GitHub Actionsの式の評価がドキュメントからいまいち分からなかったので検証しました。

true、falseの評価

  • 環境変数に対するtrue, falseは文字列型として扱われる
  - name: bool test
        env:
          false-value1: false # falseの代わりに${{ false }} としても も同様の結果になる
        run: |
          # falseはbool
          echo 12 ${{ (false && 'result: true') || 'result: false' }} # result: false

          # 'false'は文字列
          echo 13 ${{ ('false' && 'result: true') || 'result: false' }} # result: true

          # env.false-value1 == 'false'
          echo 14 ${{ env.false-value1 && format('result: true {0}', env.false-value1) }}# result: true false
          echo 21 ${{ env.false-value1 == false }} # false
          echo 22 ${{ env.false-value1 == 'false' }} # true
  • 0, 1と true, falseは互換性がある
  - name: bool test-2
        env:
          one: 1
          zero: 0
        run: |
          echo 7 ${{ 1 == true }} # true
          echo 8 ${{ env.one == true }} # true
          echo 9 ${{ 1 == 'true' }} # false
          echo 10 ${{ env.one == 1 }} # true
          echo 11 ${{ env.one == '1' }} # true

          echo 16 ${{ 0 == false }} # true
          echo 17 ${{ 0 == 'false' }} # false
          echo 18 ${{ env.zero == false }} # true
          echo 19 ${{ env.zero == 0 }} # true
          echo 20 ${{ env.zero == '0' }} # true

          echo 24 ${{ 0 && 'result: true' }} # 0 (falseではなく0が返る)
          echo 25 ${{ '0' && 'result: true' }} # result: true
          echo 26 ${{ env.zero && 'result: true' }} # result: true

以下は検証した内容

  - name: bool test-2
        env:
          true-value1: true
          true-value2: ${{ true }}
          false-value1: false
          false-value2: ${{ false }}
          one: 1
          zero: 0
        run: |
          # trueに対してtest
          echo 1 ${{ (true && 'result: true') || 'result: false' }} # result: true
          echo 2 ${{ env.true-value1 && format('result: true {0}', env.true-value1) }} # result: true true
          echo 3 ${{ env.true-value1 == true }} # false
          echo 4 ${{ env.true-value1 == 'true' }} # true
          echo 5 ${{ env.true-value1 == env.true-value2 }} # true
          echo 6 ${{ env.true-value2 && format('result: true {0}', env.true-value1) }} # result: true true

          echo 7 ${{ 1 == true }} # true
          echo 8 ${{ env.one == true }} # true
          echo 9 ${{ 1 == 'true' }} # false
          echo 10 ${{ env.one == 1 }} # true
          echo 11 ${{ env.one == '1' }} # true

          echo 11-2 ${{ 1 && 'result: true' }} # result: true
          # falseに対してtest   
          echo 12 ${{ (false && 'result: true') || 'result: false' }} # result: false
          echo 13 ${{ ('false' && 'result: true') || 'result: false' }} # result: true
          echo 14 ${{ env.false-value1 && format('result: true {0}', env.false-value1) }}# result: true false
          echo 15 ${{ env.false-value2 && format('result: true {0}', env.false-value1) }}# result: true false
          echo 16 ${{ 0 == false }} # true
          echo 17 ${{ 0 == 'false' }} # false
          echo 18 ${{ env.zero == false }} # true
          echo 19 ${{ env.zero == 0 }} # true
          echo 20 ${{ env.zero == '0' }} # true
          echo 21 ${{ env.false-value1 == false }} # false
          echo 22 ${{ env.false-value1 == 'false' }} # true
          echo 23 ${{ env.false-value1 == env.false-value2 }} # true
          echo 24 ${{ 0 && 'result: true' }} # 0
          echo 25 ${{ '0' && 'result: true' }} # result: true
          echo 26 ${{ env.zero && 'result: true' }} # result: true

expression中の文字列連結

formatを利用する

${{ format('result: {0} {1}', env.true-value1, 'test') }} # result true, test

参考

2
1
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
1