提问者:小点点

如何跑步/gradlew与docker gitlab runner一起建造?


所以我试图让我的管道工作,但我总是卡住。

我的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文件?


共1个答案

匿名用户

所以经过一些研究,我在gitlab中遇到了tags关键字。这使您能够为1个yml文件运行2个运行器。通过这种方式,我可以将shell运行器用于我的构建、测试和sonarqube fase,并将docker运行器用于我的部署fase!