在.gitlab-ci.yml内部,我们定义了一个变量(这只是项目的artifactId名称)ARTIFACT_ID: myMicroservice-1
此变量ARTIFACT_ID
发送到常规微服务,该微服务具有要发布/部署docker等的所有脚本。
如何直接从POM文件读取此变量?
pom:
<artifactId>myMicroservice-1</artifactId>
.gitlab-ci.yml:
variables:
SKIP_UNIT_TESTS_FLAG: "true"
ARTIFACT_ID: myMicroserverName
IS_OSL: "true"
KUBERNETES_NAMESPACE: test
答案 0 :(得分:1)
这是用于从pom中获取信息的脚本,在本例中为artifactId:
- export ARTIFACT_ID=$(mvn exec:exec -q -Dexec.executable=echo -Dexec.args='${project.artifactId}')
- if [[ "$ARTIFACT_ID" == *finishWithWhatEverName]]; then export variable2="false"; else export variable2="true"; fi
然后,您可以将variable2设置为所需的everyEver值。
答案 1 :(得分:0)
这是我们的工作方式。
根据pom.xml
的XPath提取值。
我们使用xmllint
中的libxml2-utils
工具,但是还有其他各种工具。
然后将值作为环境变量保存在文件中,该文件作为工件传递给其他GitLab作业。
stages:
- prepare
- build
variables:
VARIABLES_FILE: ./variables.txt # "." is required for sh based images
POM_FILE: pom.xml
get-version:
stage: prepare
image: ubuntu
script:
- apt-get update
- apt-get install -y libxml2-utils
- APP_VERSION=`xmllint --xpath '/*[local-name()="project"]/*[local-name()="version"]/text()' $POM_FILE`
- echo "export APP_VERSION=$APP_VERSION" > $VARIABLES_FILE
artifacts:
paths:
- $VARIABLES_FILE
build:
stage: build
image: docker:latest
script:
- source $VARIABLES_FILE
- echo "Here use $APP_VERSION as you like"
答案 2 :(得分:0)
我尝试了Angel的解决方案,但出现了错误:
/bin/bash: line 87: mvn: command not found
最后,当我使用以下方法提取标记值时,我成功了:
- export ARTIFACT_ID=$(cat pom.xml | grep "<artifactId>" | head -1 | cut -d">" -f2 | cut -d"<" -f1 | awk '{$1=$1;print}')