GitLab CI секретные переменные для публикации Gradle - PullRequest
0 голосов
/ 02 июля 2018

Как настроить учетные данные пользователя задачи Gradle с секретными переменными GitLab CI? Я использую плагин Gradle Maven , а вот фрагмент из build.gradle

repositories {
    maven {
      credentials {
        username artifactUser
        password artifactPass
      }
      url "..."
    }
  }

Я пытался использовать gradle.properties, как показано ниже

artifactUser=${env.MAVEN_REPO_USER}
artifactPass=${env.MAVEN_REPO_PASS}

И несколько способов доступа к секретным переменным в файле .gitlab-ci.yml (поскольку gradle.properties не берется из gradle или переменные не преобразуются правильно, он находится в корневом каталоге проекта)

Метод 1

'./gradlew publish -x test -PartifactUser=${env.MAVEN_REPO_USER} -PartifactPass=${env.MAVEN_REPO_PASS}'

Ошибка: /bin/bash: line 56: -PartifactUser=${env.MAVEN_REPO_USER}: bad substitution

Метод 2

    before_script:
      - chmod +x ./gradlew
      - export REPO_USER=${env.MAVEN_REPO_USER}
      - export REPO_PASS=${env.MAVEN_REPO_PASS}
    ...
    deploy:
  stage: deploy
  script:
    - ./gradlew publish -x test -PartifactUser=$REPO_USER -PartifactPass=$REPO_PASS

Я использую openjdk:8-jdk-slim образ для сборки с использованием Gradle-оболочки. Похоже, есть несколько проблем с этим типом использования переменных, есть ли у нас какое-то решение?

Ответы [ 3 ]

0 голосов
/ 28 декабря 2018

Вам не нужно env. префикс в вашем .gitlab-ci.yml. Вам также не нужно повторно экспортировать переменные.

Если вы определили переменные с именами MAVEN_REPO_USER и MAVEN_REPO_PASS в настройках Gitlab CI / CD для проекта, вы можете просто использовать их в скрипте Gradle:

repositories {
    maven {
        credentials {
            username System.getenv("MAVEN_REPO_USER")
            password System.getenv("MAVEN_REPO_PASS")
        }
        url "…"
    }
}
0 голосов
/ 08 февраля 2019

Вот как я это решил (к сожалению, официальный док GitLab очень ориентирован на Maven ...: (

apply plugin: 'java'
apply plugin: 'maven-publish'

compileJava.options.encoding = 'UTF-8'
group = 'com.example'
version = '1.0.9'


task zipSource(type: Zip) {
    from file('files/test.zip')
    archiveClassifier = 'testZip'
}

publishing {
    repositories {
        maven {
            name 'GitLab' 
            url 'https://gitlab.my-company.com/api/v4/projects/2302/packages/maven'
            credentials(HttpHeaderCredentials) {
                name = "Job-Token"
                value = System.getenv("CI_JOB_TOKEN")
            }
            authentication {
                header(HttpHeaderAuthentication)
            }
        }
   }
   publications {
        mavenJava(MavenPublication) {
            artifactId = 'project1-sample'
            //deploy jar vom Java
            from components.java
            //deploy arbitrary Zip file
            artifact zipSource
        }
    }
}
0 голосов
/ 16 августа 2018

вы можете использовать переменные окружения напрямую для установки свойств gradle, см. Полную документацию здесь .

в вашем случае установите artifactUser и artifactPass в качестве переменных env (лучше всего, как правильные).

...