所以我试图让我的管道工作,但我总是卡住。
我的git-ci. yml文件有一个docker运行器,我这样做是因为我的shell运行器部署阶段错误(但我的构建、测试和sonarqube阶段确实适用于shell运行器)
**git-ci.yml**
image: docker:latest
stages:
- build
- sonarqube-check
- test
- deploy
cache:
paths:
- .gradle/wrapper
- .gradle/caches
build:
stage: build
image: gradle:jre11-slim
script:
- chmod +x gradlew
- ./gradlew assemble
artifacts:
paths:
- build/libs/*.jar
expire_in: 1 week
only:
- master
sonarqube-check:
stage: test
image: gradle:jre11-slim
variables:
SONAR_USER_HOME: "${CI_PROJECT_DIR}/.sonar" # Defines the location of the analysis task cache
GIT_DEPTH: "0" # Tells git to fetch all the branches of the project, required by the analysis task
cache:
key: "${CI_JOB_NAME}"
paths:
- .sonar/cache
script: ./gradlew sonarqube
allow_failure: true
only:
- master
test:
stage: test
script:
- ./gradlew check
deploy:
stage: deploy
image: gradle:latest
script:
- apt-get update -qy
- apt-get install -y ruby-dev
- gem install dpl
- dpl --provider=heroku --app=heroku-coalition --api-key=$HEROKU_API_KEY
- echo "This job deploys something from the $CI_COMMIT_BRANCH branch."
only:
- master
after_script:
- echo "End CI"
首先,我在java主页上出现了错误,所以我将图像切换到了构建阶段。现在我这样做了,并且在权限方面不断出现错误,所以我添加了chmod x gradlew
但是当我添加该行时,我收到了这个错误:
chmod:更改“gradlew”的权限:不允许操作
当我删除chmod gradlew行时,我得到:
/bin/bash:第115行:。/gradlew:权限被拒绝
所以现在我真的不知道该怎么办。简而言之:我应该使用哪个运行程序来运行这个yml文件,或者我需要如何相应地编辑这个yml文件?
所以经过一些研究,我在gitlab中遇到了tags
关键字。这使您能够为1个yml文件运行2个运行器。通过这种方式,我可以将shell运行器用于我的构建、测试和sonarqube fase,并将docker运行器用于我的部署fase!