From 852c14235de19ad7c0591ed790801f749393cadb Mon Sep 17 00:00:00 2001 From: David Hiendl Date: Thu, 27 Oct 2022 11:11:42 +0200 Subject: [PATCH] added gradle/giteaMavenRepo.gradle for authenticating and adding gitea as repository for dependencies and publishing --- drone/ContainerImageDocker.yml | 2 +- drone/ContainerImageKaniko.yml | 2 +- gradle/GiteaMavenRepo.gradle | 61 ++++++++++++++++++++++++++++++++++ 3 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 gradle/GiteaMavenRepo.gradle diff --git a/drone/ContainerImageDocker.yml b/drone/ContainerImageDocker.yml index 7b756e4..9fcc8c6 100644 --- a/drone/ContainerImageDocker.yml +++ b/drone/ContainerImageDocker.yml @@ -80,7 +80,7 @@ # drone does not support expanding vars in environment values, set defaults via bash if [[ -z "$CONTEXT_DIR" ]]; then CONTEXT_DIR="$DRONE_WORKSPACE_BASE"; fi - if [[ -z "$DOCKERFILE" ]]; then DOCKERFILE="$DRONE_WORKSPACE_BASE/Dockerfile"; fi + if [[ -z "$DOCKERFILE" ]]; then DOCKERFILE="$CONTEXT_DIR/Dockerfile"; fi debug_log "CONTEXT_DIR=$CONTEXT_DIR" debug_log "DOCKERFILE=$DOCKERFILE" diff --git a/drone/ContainerImageKaniko.yml b/drone/ContainerImageKaniko.yml index 6e8a78a..6f521ce 100644 --- a/drone/ContainerImageKaniko.yml +++ b/drone/ContainerImageKaniko.yml @@ -61,7 +61,7 @@ # drone does not support expanding vars in environment values, set defaults via bash if [[ -z "$CONTEXT_DIR" ]]; then CONTEXT_DIR="$DRONE_WORKSPACE_BASE"; fi - if [[ -z "$DOCKERFILE" ]]; then DOCKERFILE="$DRONE_WORKSPACE_BASE/Dockerfile"; fi + if [[ -z "$DOCKERFILE" ]]; then DOCKERFILE="$CONTEXT_DIR/Dockerfile"; fi debug_log "CONTEXT_DIR=$CONTEXT_DIR" debug_log "DOCKERFILE=$DOCKERFILE" diff --git a/gradle/GiteaMavenRepo.gradle b/gradle/GiteaMavenRepo.gradle new file mode 100644 index 0000000..294ebaf --- /dev/null +++ b/gradle/GiteaMavenRepo.gradle @@ -0,0 +1,61 @@ +def addGiteaRepository(RepositoryHandler handler, String giteaApiUrl, String organization, String token = null) { + handler.maven { + name "gitea-$organization" + url = "${giteaApiUrl}/api/packages/${organization}/maven" + setGiteaRepoAuth(it, token) + } +} + +def addGiteaPublishingRepository(RepositoryHandler handler, String giteaApiUrl, String organization, String token = null) { + handler.maven { + name "gitea-$organization" + url = "${giteaApiUrl}/api/packages/${organization}/maven" + setGiteaRepoAuth(it, token) + } +} + +/** + * Add auth to repo, attempt to find token by first non-null: + * - function argument "token" + * - env var: CI_JOB_TOKEN + * - env var: CI_REGISTRY_PASSWORD + * - gradle project var: giteaPrivateToken + * Throws exception if no auth token was found. + */ +def setGiteaRepoAuth(MavenArtifactRepository maven, String token = null) { + + if (token != null) { + maven.credentials(HttpHeaderCredentials) { + name = 'Authorization' + value = "token " + System.getenv("CI_JOB_TOKEN") + } + } else if (System.getenv("CI_JOB_TOKEN") != null) { + maven.credentials(HttpHeaderCredentials) { + name = 'Authorization' + value = "token " + System.getenv("CI_JOB_TOKEN") + } + } else if (System.getenv("CI_REGISTRY_PASSWORD") != null) { + maven.credentials(HttpHeaderCredentials) { + name = 'Authorization' + value = "token " + System.getenv("CI_REGISTRY_PASSWORD") + } + } else if (project.hasProperty("giteaPrivateToken")) { + maven.credentials(HttpHeaderCredentials) { + name = 'Authorization' + value = "token " + giteaPrivateToken + } + } else { + throw Exception("No gitea repository auth configured") + } + + maven.authentication { + header(HttpHeaderAuthentication) + } +} + +// Export methods by turning them into closures +ext { + setGiteaRepoAuth = this.&setGiteaRepoAuth + addGiteaRepository = this.&addGiteaRepository + addGiteaPublishingRepository = this.&addGiteaPublishingRepository +}