Как запустить сборку ./gradlew с помощью docker gitlab runner?

# #docker #gitlab #yaml #gitlab-ci #gitlab-ci-runner

Вопрос:

Поэтому я пытаюсь заставить свой конвейер работать, но я все время застреваю.

У меня есть docker runner для моего файла git-ci.yml. Я делаю это, потому что мои ошибки на этапе развертывания с запусками оболочки (но моя сборка, тестирование и этап sonarqube работают с запуском оболочки)

 **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 home, поэтому я переключил изображение на этап сборки. Теперь я сделал это и продолжаю получать ошибки в разрешении, поэтому я добавил chmod x gradlew

Но я получаю эту ошибку, когда добавляю эту строку:

chmod: изменение разрешений «gradlew»: Операция не разрешена

И когда я удаляю строку chmod gradlew, я получаю:

/bin/bash: строка 115: ./gradlew: В разрешении отказано

Так что теперь я действительно не знаю, что делать. Короче говоря: Какой бегун я должен использовать, чтобы заставить этот файл yml работать, или как мне нужно будет соответствующим образом отредактировать этот файл yml?

Ответ №1:

Поэтому после некоторых исследований я наткнулся на tags ключевое слово в gitlab. Это позволяет запускать 2 бегуна для 1 файла yml. Таким образом, я мог бы использовать бегун оболочки для моей сборки, тестирования и сонарки, а также бегун докера для моего развертывания!