Jenkinsfile — это текстовый файл, который содержит определение пайплайна Jenkins и проверяется в системе контроля исходного кода.
Я приведу подход, который поможет пофиксить ошибку gradlew: Permision denied
, если gradlew находится внутри проекта в репозитории, и не важно кто с ним взаимодейтсвует, Jenkins (другой инструмент автоматизированной сборки) или разработчики.
Если бы gradlew был установлен локально на компьютере, то ошибка означала , что необходимо изменить разрешение на исполняемый файл командой. Если это локальная разработка и вы не работаете с удаленным репозиторием, то проблему можно решить следующей командой :
$ chmod +x gradlew
Пример использования команды gredlew в Jenkinsfile
pipeline {
agent {
label '2worker'
}
options {
disableConcurrentBuilds()
timestamps()
timeout(time: 60, unit: 'MINUTES')
buildDiscarder(logRotator(numToKeepStr: '50', artifactNumToKeepStr: '3'))
}
triggers {
pollSCM ''
}
stages {
stage('Build') {
steps {
script {
currentBuild.description = getVersion()
notifyBitbucket()
}
withCredentials([usernamePassword(credentialsId: 'ARTIFACTORY', usernameVariable: 'ARTIFACTORY_USER', passwordVariable: 'ARTIFACTORY_PASSWORD')]) {
//explicitly define dbScheme as test_rob
sh """./gradlew -Partifactory_user=$ARTIFACTORY_USER -Partifactory_password=$ARTIFACTORY_PASSWORD \
-PdbScheme=test_rob test artifactoryPublish"""
}
}
}
}
}
Напомню, что любой CI инструмент (Jenkins, Gitlab, TeamCity, Bamboo, etc) при сборке всегда клонирует удаленный репозиторий на сервер сборки. Чтобы при клонировании проекта разрешение для исполняемого файла gradlew было правильным, нужно зарегистрировать изменение разрешения для gredlew в индексе рабочего дерева. Выполняем следующую команду:
git update-index --chmod=+x gradlew
Добавляем эти изменения
git add .
Фиксируем изменения в локальном репозитории
git commit -m "Update execute permission for gradlew command"
Отправляем изменения из локального репозитория в удаленный
git push
Ошибка gradlew: Permision denied
возникает из-за отсутствия разрешения на выполнение для команды gradlew. Чтобы решить проблему, нужно обновить разрешение на выполнение, использую локальный или удаленный репозиторий.