Загрузка данных
fp:
groupId: com.example.auth-oakb
artifactId: auth-proxy-oakb
version: D-3.3.3
component_code: AUTH
templating: false
maven:
settings_id: "settings"
home: "Maven 3.9.6"
jdk: "openjdk-21"
use_for_deploy: true
build:
auth-proxy-oakb:
builder: mvn
repo: oakbapa/auth-proxy-oakb.git
branch: main
args: "-B -ntp"
cmd: "clean package -DskipTests"
sonarSkip: true
outputs:
- source: "target/auth-proxy-*.jar"
dest: "package/bh"
downloads: []
distribution: []
disabled_extensions:
- AddDescription
- updateVersionConf
- uploadQGFlags
- initializeDistribution
- compatTo9
- compatTo11
- makeReleaseNotes
- appSec
- jqFilter
extensions:
- name: ApaAnalyzer
script_path: groovy.groovy
stage: build
phase: after
description: "OAKB - Generate and publish analyzer reports"
analyzer_wrapper_url: "https://portal.localnet/apa_analyzer/branch/main/scripts/jenkins_generate_reports.sh"
analyzer_http_credentials_id: "tuz1__user_with_password"
analyzer_ssh_credentials_id: "tuz1__sshuser_w_priv_key"
code_root_git_repo_paths:
- "sources/auth-proxy-oakb"
code_git_repo_paths:
- "sources/auth-proxy-oakb"
swagger_file_path: "sources/auth-proxy-oakb/swagger.json"
component_code: "AUTH"
component_version: "D-3.3.3-b333"
code_script: |
script {
//String mavenToolType = 'hudson.tasks.Maven$MavenInstallation'
String customToolType = 'com.cloudbees.jenkins.plugins.customtools.CustomTool'
//env.MAVEN_ROOT = tool(name: 'Maven 3.9.6', type: mavenToolType)
//exec_path: bin/mvn
env.CT_YQ_ROOT = tool(name: 'yq-4.20.2', type: customToolType)
// executable: yq_linux_amd64
env.CT_JQ_ROOT = tool(name: 'jq', type: customToolType)
//exec_path: jq
env.CT_PYTHON312_ROOT = tool(name: 'python3.12', type: customToolType)
//exec_path: python/install/bin/python3
}
def required = { key ->
def raw = extension[key]
if (!raw) {
error "ApaAnalyzer: required extension field '${key}' is not set"
}
return raw.toString()
}
def optionalText = { key ->
return extension[key]?.toString() ?: ''
}
def listValue = { key ->
def raw = extension[key]
if (!raw) {
return []
}
if (raw instanceof List) {
return raw.collect { it.toString().trim() }.findAll { it }
}
return raw.toString().split(/\r?\n/).collect { it.trim() }.findAll { it }
}
def expandWorkspace = { path ->
return path?.toString()?.replace('$WORKSPACE', env.WORKSPACE ?: '')
}
def absPath = { path ->
def text = expandWorkspace(path)
if (!text) {
return text
}
return text.startsWith('/') ? text : "${env.WORKSPACE}/${text}"
}
def codeRootGitDirPathValues = listValue('code_root_git_repo_paths')
def codeGitDirPathValues = listValue('code_git_repo_paths')
def codeRootGitDirPaths = codeRootGitDirPathValues
.collect { absPath(it) }
.join('\n')
def codeGitDirPaths = codeGitDirPathValues
.collect { absPath(it) }
.join('\n')
def swaggerFilePath = absPath(optionalText('swagger_file_path'))
def envVars = [
"ANALYZER_WRAPPER_URL=${required('analyzer_wrapper_url')}",
"CODE_ROOTS_GIT_DIR_PATHS=${codeRootGitDirPaths}",
"CODE_GIT_DIR_PATHS=${codeGitDirPaths}",
"COMPONENT_CODE=${optionalText('component_code')}",
"COMPONENT_VERSION=${optionalText('component_version')}",
"SWAGGER_FILE_PATH=${swaggerFilePath}"
]
if (extension.analyzer_repo_url) {
envVars << "ANALYZER_REPO_URL=${extension.analyzer_repo_url}"
}
if (extension.analyzer_repo_branch) {
envVars << "ANALYZER_REPO_BRANCH=${extension.analyzer_repo_branch}"
}
withCredentials([
usernamePassword(
credentialsId: required('analyzer_http_credentials_id'),
usernameVariable: 'TUZ_NAME_FOR_ACCESS_ANALYZER',
passwordVariable: 'TUZ_PWD_FOR_ACCESS_ANALYZER'
),
usernamePassword(
credentialsId: required('analyzer_http_credentials_id'),
usernameVariable: 'TUZ_NAME_FOR_ACCESS_ANALYZER_BINS',
passwordVariable: 'TUZ_PWD_FOR_ACCESS_ANALYZER_BINS'
),
sshUserPrivateKey(
credentialsId: required('analyzer_ssh_credentials_id'),
keyFileVariable: 'GIT_SSH_KEY'
)
]) {
withEnv(envVars) {
sh '''#!/usr/bin/env bash
set -euo pipefail
curl -k -fsSL \
--connect-timeout 3 \
--max-time 6 \
--retry 2 \
--retry-delay 1 \
-u "$TUZ_NAME_FOR_ACCESS_ANALYZER:$TUZ_PWD_FOR_ACCESS_ANALYZER" \
"$ANALYZER_WRAPPER_URL" | bash
'''
}
}