From 426b6beb9fa6be9b74692cb1d077a3e99b184f02 Mon Sep 17 00:00:00 2001 From: Rustam Tagaev Date: Wed, 11 Dec 2024 18:47:44 +0300 Subject: [PATCH] [DO-1395] add_podtemplate (#50) Co-authored-by: Rustam Tagaev Reviewed-on: https://git.avroid.tech/DevOps/jenkins-shared-lib/pulls/50 Reviewed-by: Denis Patrakeev Co-authored-by: Rustam Tagaev Co-committed-by: Rustam Tagaev --- src/tech/avroid/api/Nexus.groovy | 21 +++++++++++++++ src/tech/avroid/kube/PodTemplates.groovy | 34 ++++++++++++++++++++++++ 2 files changed, 55 insertions(+) diff --git a/src/tech/avroid/api/Nexus.groovy b/src/tech/avroid/api/Nexus.groovy index e06d439..77017d8 100644 --- a/src/tech/avroid/api/Nexus.groovy +++ b/src/tech/avroid/api/Nexus.groovy @@ -162,4 +162,25 @@ class Nexus implements Serializable { ) } + /** + * Функция загружает артефакт в Npm-репозиторий Nexus + @param repository String - Имя репозитория в Nexus. + @param artifact String - Путь до артефакта. + @param artifactName String - Имя артефакта которое будет отображаться в Nexus. (optional) + */ + public void uploadNpmArtifact(Map args = [:]) { + String artifactName = args.artifactName ?: args.artifact.split('/').last() + + script.httpRequest( + url: "${host}/service/rest/v1/components?repository=${args.repository}", + httpMode: 'POST', + quiet: false, + formData: [[contentType: 'APPLICATION_FORM_DATA', + name: 'npm.asset', + fileName: artifactName, + uploadFile: args.artifact]], + authentication: credentials + ) + } + } diff --git a/src/tech/avroid/kube/PodTemplates.groovy b/src/tech/avroid/kube/PodTemplates.groovy index 8c5f2a8..e5b7c83 100644 --- a/src/tech/avroid/kube/PodTemplates.groovy +++ b/src/tech/avroid/kube/PodTemplates.groovy @@ -226,4 +226,38 @@ class PodTemplates implements Serializable { } } + public void nodejs(imageVersion='18.16-alpine3.18', body) { + this.script.podTemplate( + runAsUser: "0", + imagePullSecrets: this.dockerCreds, + containers: [ + this.script.containerTemplate( + alwaysPullImage: true, + name: 'nodejs', + image: "${this.registry}/devops/node:${imageVersion}", + envVars: [ + this.script.containerEnvVar(key: 'HOME', value: '/home/jenkins'), + ], + ttyEnabled: true, + command: "cat", + resourceRequestCpu: '100m', + resourceLimitCpu: '100m', + resourceRequestMemory: '1024Mi', + resourceLimitMemory: '1024Mi', + workingDir: '/jenkins', + ), + ], + instanceCap: 1, + showRawYaml: false, + volumes: [ + this.script.emptyDirVolume(memory: false, mountPath: '/tmp'), + ], + workspaceVolume: this.script.emptyDirWorkspaceVolume(false), + ) + + { + body.call() + } + } + }