如何扩展模板脚本?
How to extend template script?
我的 .gitlab-ci.yml 文件中有以下模板:
x-android-build-tools: &android_build_tools
image: jangrewe/gitlab-ci-android
stage: build
script:
- export GRADLE_USER_HOME=$(pwd)/.gradle
- chmod +x ./gradlew
artifacts:
expire_in: 1 hours
paths:
- app/build/
我想扩展脚本部分以进行实际构建。例如:
android-stage-build:
<<: *android_build_tools
environment: stage
only:
- dev
after_script:
- ./gradlew :app:assembleDebug
效果很好,但是有问题。 Docker 启动两个作业而不是忽略模板。
有没有办法运行 只有“android-stage-build”作业在需要时触发模板作业?
是的。您只是缺少 .
:)
见https://docs.gitlab.com/ee/ci/yaml/yaml_optimization.html#anchors
这样写应该可以:
.x-android-build-tools: &android_build_tools
image: jangrewe/gitlab-ci-android
stage: build
script:
- export GRADLE_USER_HOME=$(pwd)/.gradle
- chmod +x ./gradlew
artifacts:
expire_in: 1 hours
paths:
- app/build/
android-stage-build:
<<: *android_build_tools
environment: stage
only:
- dev
after_script:
- ./gradlew :app:assembleDebug
为了让gitlab ci忽略第一个条目,需要在定义前加一个点(.
)
.x-android-build-tools: &android_build_tools
image: jangrewe/gitlab-ci-android
stage: build
script:
- export GRADLE_USER_HOME=$(pwd)/.gradle
- chmod +x ./gradlew
artifacts:
expire_in: 1 hours
paths:
- app/build/
android-stage-build:
<<: *android_build_tools
environment: stage
only:
- dev
after_script:
- ./gradlew :app:assembleDebug
除此之外,我认为,根据我在这里阅读的内容,您不想使用 after_script
。
我认为您想在模板中使用 before_script
,并在构建阶段使用 cific script
-key。
主要区别在于 after_script 也会在脚本失败时运行。根据我在这里读到的内容,您似乎不希望这种情况发生。
我的 .gitlab-ci.yml 文件中有以下模板:
x-android-build-tools: &android_build_tools
image: jangrewe/gitlab-ci-android
stage: build
script:
- export GRADLE_USER_HOME=$(pwd)/.gradle
- chmod +x ./gradlew
artifacts:
expire_in: 1 hours
paths:
- app/build/
我想扩展脚本部分以进行实际构建。例如:
android-stage-build:
<<: *android_build_tools
environment: stage
only:
- dev
after_script:
- ./gradlew :app:assembleDebug
效果很好,但是有问题。 Docker 启动两个作业而不是忽略模板。
有没有办法运行 只有“android-stage-build”作业在需要时触发模板作业?
是的。您只是缺少 .
:)
见https://docs.gitlab.com/ee/ci/yaml/yaml_optimization.html#anchors
这样写应该可以:
.x-android-build-tools: &android_build_tools
image: jangrewe/gitlab-ci-android
stage: build
script:
- export GRADLE_USER_HOME=$(pwd)/.gradle
- chmod +x ./gradlew
artifacts:
expire_in: 1 hours
paths:
- app/build/
android-stage-build:
<<: *android_build_tools
environment: stage
only:
- dev
after_script:
- ./gradlew :app:assembleDebug
为了让gitlab ci忽略第一个条目,需要在定义前加一个点(.
)
.x-android-build-tools: &android_build_tools
image: jangrewe/gitlab-ci-android
stage: build
script:
- export GRADLE_USER_HOME=$(pwd)/.gradle
- chmod +x ./gradlew
artifacts:
expire_in: 1 hours
paths:
- app/build/
android-stage-build:
<<: *android_build_tools
environment: stage
only:
- dev
after_script:
- ./gradlew :app:assembleDebug
除此之外,我认为,根据我在这里阅读的内容,您不想使用 after_script
。
我认为您想在模板中使用 before_script
,并在构建阶段使用 cific script
-key。
主要区别在于 after_script 也会在脚本失败时运行。根据我在这里读到的内容,您似乎不希望这种情况发生。