7

にダミーのビルドスクリプトがありGitlab CIます:

pwd
ci_app_path=$(pwd)
echo "INFO: current directory: $ci_app_path"

システムがビルドプロセスを開始すると、次の出力が得られます。

pwd
/home/kai/gitlab-runners/gitlab-ci-runner/tmp/builds/project-1

ci_app_path=$(pwd)

echo "INFO: current directory: $ci_app_path"
INFO: current directory:

そのため、変数は設定されていません(または、その行に対してのみ設定されていました:各行が個別に実行されていることがわかっているため)

必要な機能に到達するためのプッシュ/ポップメカニズムについて聞いたことがありますが、それを実装する方法の詳細を見つけることができませんでした。

アップデート:

思った通り、各行は別々に実行されます。したがって、変数のスコープは、定義されている 1 行だけです。

脚本:

pwd
ci_app_path=$(pwd) && echo "INFO: current directory: $ci_app_path"

出力:

pwd
/home/devuser/gitlab-runners/gitlab-ci-runner/tmp/builds/project-1

ci_app_path=$(pwd) && echo "INFO: current directory: $ci_app_path"
INFO: current directory: /home/kai/gitlab-runners/gitlab-ci-runner/tmp/builds/project-1

スクリプト全体をワンライナーとして書くことは良い考え/実践ではないと思います。

ビルドスクリプトの実行中に設定された変数を取得する方法は?

PS

実際、ビルド スクリプト全体に空行を含めてはならないのはなぜでしょうか?

No such file or directory

この場所でビルドが失敗する

4

2 に答える 2

8

Gitlab CI はシェル コマンドを実行するだけなので、*sh で行うことを行います。

export ci_app_path=$(pwd)
echo "INFO: current directory: $ci_app_path"
于 2016-12-02T11:58:21.810 に答える
1

Gitlab-CI 関係者が修正するまでに、Makefile を作成してその中に変数をエクスポートし、Gitlab-CI で変数を渡すことができます。たとえば、

PWD=$PWD 作る

Makefile は次のように始まります: export GOPATH=$(PWD)

于 2013-11-28T14:23:48.670 に答える