我有以下.gitlab-ci.yml文件,我想利用Maven POM获取工件版本并在调用Artifactory REST API时使用它。
image: maven:3-jdk-8
stages:
- build
- test
- quality-scan
- quality-gate
- publish
before_script:
- echo "Start of CI/CD Pipeline"
Build:
stage: build
tags:
- maven
artifacts:
paths:
- target/
script:
- echo "Cleaning workspace, compiling and packaging the application"
- mvn clean package -DskipTests
RunTests:
stage: test
tags:
- maven
script:
- echo "Running tests"
- mvn test
StaticCodeAnalysis:
stage: quality-scan
tags:
- maven
dependencies:
- Build
script:
- echo "Running SonarQube analysis"
- mvn sonar:sonar -Dsonar.host.url=$SONARQUBE_URL
QualityGateCheck:
stage: quality-gate
tags:
- maven
script:
- echo "Checking Quality Gate"
PublishBinary:
stage: publish
tags:
- maven
dependencies:
- Build
script:
- echo "Publishing to Artifactory"
- export PROJECT_VERSION=mvn -o help:evaluate
- export ARTIFACTORY_PUBLISH_LOCATION="$ARTIFACTORY_URL/libs-release-local/$CI_PROJECT_PATH/$PROJECT_VERSION/$CI_PROJECT_NAME-$PROJECT-VERSION.jar"
- echo $ARTIFACTORY_PUBLISH_LOCATION
- curl -u $ARTIFACTORY_USER:$ARTIFACTORY_PASSWORD -X PUT $ARTIFACTORY_PUBLISH_LOCATION -T $CI_PROJECT_NAME
after_script:
- echo "End of CI/CD Pipeline"
在GitLab CI / CD中有一种简单的方法吗?
我使用最新版本的GitLab和GitLab Runner。 Ubuntu都托管在Azure云中。
不知道Gitlab是否可以提供这样的功能,但您可以使用Maven help plugin检索此信息:
version=$(mvn org.apache.maven.plugins:maven-help-plugin:3.1.1:evaluate -Dexpression=project.version -q -DforceStdout)