web-dev-qa-db-ja.com

.gitlab-ci.yml変数で条件を使用する方法は?

If-else条件ステートメントからカスタムGitlab CI変数を設定できるかどうかを知りたい。

私の.gitlab-ci.ymlファイル私は次のものを持っています:

variables:
    PROJECT_VERSION: (if [ "${CI_COMMIT_TAG}" == "" ]; then "${CI_COMMIT_REF_NAME}-${CI_PIPELINE_ID}"; else ${CI_COMMIT_TAG}; fi);

Trying to set project version:
    image: php:7.1-cli
    stage: test
    script:
        # this echoes correct string (eg. "master-2794")
        - (if [ "${CI_COMMIT_TAG}" == "" ]; then echo "${CI_COMMIT_REF_NAME}-${CI_PIPELINE_ID}"; else echo ${CI_COMMIT_TAG}; fi);
        # this echoes something like "(if [ "" == "" ]; then "master-2794"; else ; fi);"
        - echo $PROJECT_VERSION

これはできますか?もしそうなら、私は何を見逃しましたか?ありがとう

12
WellBloud

これは予想される動作です。

CI_COMMIT_TAGは、gitlabジョブの値にのみ設定されます。から https://docs.gitlab.com/ee/ci/variables/README.html

CI_COMMIT_TAG-コミットタグ名。タグを作成するときにのみ表示

したがって、varibalesセクションではCI_COMMIT_TAGは定義されていないため、 ""と等しくなります。

したがって、CI_COMMIT_TAGを使用する場合は、タグが定義されているジョブで使用します。 https://docs.gitlab.com/ee/ci/yaml/README.html#tags を参照してください

9