28

variables:ここのGitlab CIドキュメントに記載されているキーワードを利用しようとしています:

FROM: https://docs.gitlab.com/ce/ci/yaml/README.html

変数

この機能には、バージョン 0.5.0 以上の gitlab-runner が必要です。

GitLab CI を使用すると、ビルド環境で設定された .gitlab-ci.yml 変数に追加できます。変数はリポジトリに保存され、機密性の低いプロジェクト構成を保存するためのものです。RAILS_ENV または DATABASE_URL。

variables:   
  DATABASE_URL: "postgres://postgres@postgres/my_database"

これらの変数は、後で実行されるすべてのコマンドとスクリプトで使用できます。

YAML で定義された変数は、作成されたすべてのサービス コンテナーにも設定されるため、それらを微調整できます。

使用しようとすると、ビルドはステージを実行せず、とにかく成功とマークされます。これは、YAML が悪いことの良い兆候です。gitlab-ci.yml の内容を LINT ツールの設定領域に貼り付けたところ、出力エラーは次のようになりました。

ステータス: 構文が正しくありません

エラー: 変数ジョブ: 不明なパラメーター PACKAGE_NAME

ドキュメントと同じ YAML 構文を使用していますが、機能しません。これに関連する未解決のバグは見つかりません。以下は私の現在のバージョンと私の gitlab-ci.yml のサニタイズされたバージョンです。

Gitlab バージョン: 7.13.2 オムニバス

Gitlab ランナーのバージョン: 0.5.2

gitlab-ci.yml (サニタイズ済み)

types:
  - test
  - build

variables:
  PACKAGE_NAME: "awesome-django-app"
  PACKAGE_SUMMARY: "Awesome webapp backend."
  MAJOR_RELEASE: "1"
  MINOR_RELEASE: "0"
  PATCH_LEVEL: "0dev"
  DEV_DB_URL: "db"
  DEV_SERVER: "pydev.example.com"
  PROD_SERVER: "pyprod.example.com"
  TEST_SERVER: "pytest.example.com"

envtest:
  type: test
  script:
  - ". ./testbuild.sh"
  tags:
  - python2.7
  - postgres
  - linux
  except:
  - tags

buildrpm:
  type: build
  script:
  - mkdir -p ~/rpmbuild/SOURCES
  - mkdir -p ~/rpmbuild/SPECS
  - mkdir -p ~/tarbuild/$PACKAGE_NAME-$MAJOR_RELEASE.$MINOR_RELEASE.$PATCH_LEVEL
  - cp $PACKAGE_NAME.spec ~/rpmbuild/SPECS/.
  - cp -r * ~/tarbuild/$PACKAGE_NAME-$MAJOR_RELEASE.$MINOR_RELEASE.$PATCH_LEVEL/.
  - cd ~/tarbuild
  - tar -zcf ~/rpmbuild/SOURCES/$PACKAGE_NAME-$MAJOR_RELEASE.$MINOR_RELEASE.$PATCH_LEVEL.tar.gz *
  - cd ~
  - rm -Rf ~/tarbuild
  - rpmlint -i ~/rpmbuild/SPECS/$PACKAGE_NAME.spec
  - echo $CI_BUILD_ID
  - 'rpmbuild -ba ~/rpmbuild/SPECS/$PACKAGE_NAME.spec \
                    --define="_build_number $CI_BUILD_ID" \
                    --define="_python_version_min 2.7" \
                    --define="_version $MAJOR_RELEASE.$MINOR_RELEASE.$PATCH_LEVEL" \
                    --define="_package_name $PACKAGE_NAME" \
                    --define="_summary $SUMMARY"'
  - scp rpmbuild/RPMS/noarch/$PACKAGE_NAME-$MAJOR_RELEASE.$MINOR_RELEASE.$PATCH_LEVEL-$CI_BUILD_ID.noarch.rpm $DEV_SERVER:~/.
  tags:
  - python2.7
  - postgres
  - linux
  - rpm
  except:
  - tags

質問:

この値を適切に使用するにはどうすればよいですか?

追加情報:

YAML ファイルからこのセクションを削除すると、すべてが機能するため、ファイルの残りの部分は正常に機能します。(もちろん、未定義の変数はスクリプト エラーにつながります...)

テスト用の変数を PACKAGE_NAME だけに減らすだけでも、同じ中断が発生します。

4

2 に答える 2

10

ドキュメントには記載されていますが、最新バージョンの gitlab (7.13) に変数が含まれていたとは思えません。yaml ファイルから変数を読み取る機能は、9 日前にayufan によってコミットされました。

7.13 の安定版ブランチのパーサーを見ると、彼の貢献が反映されていないことがわかります。これはマスター上にあるため、次のリリースで表示されることはほぼ確実です。それまでは、モンキー パッチを適用するか、ソースを直接使用している場合は git pull を実行するか、次のリリースまでプロジェクト変数に頼ることができます。

于 2015-08-13T18:36:48.043 に答える