РЕДАКТИРОВАТЬ (После того, как конвейер был добавлен к вопросу):
Шаг rtBuildInfo
настраивает экземпляр информации о сборке. Если имя / номер не указано, он конфигурирует информацию о сборке по умолчанию, соответствующую заданию jenkins.
Когда предоставляются пользовательские сведения о сборке, создается новый экземпляр информации о сборке, если соответствующий еще не создан. Поэтому при создании нового экземпляра этот шаг следует использовать перед другим шагом, который будет использовать этот экземпляр.
Следовательно, примером вашего конвейера будет:
pipeline { agent any
environment {
ENV_BRANCH_NAME = "${env.BRANCH_NAME}"
ENV_BUILD_NUMBER = "${env.BUILD_NUMBER}"
ENV_JOB_NAME = "${env.JOB_NAME.toLowerCase()}"
ENV_ARTIFACTORY_URL = "artifactorydev.mycompany.com:8081"
ENV_ARTIFACTORY_SERVER_ID = "art-01.net"
ENV_ARTIFACTORY_VIRTUAL_REPO = "docker"
ENV_ARTIFACTORY_RELEASE_REPO = "libs-release-local"
ENV_GIT_URL = "https://myserver/_git/hello-world"
}
stages {
stage ('Clone') {
steps {
echo 'Branch Name: ' + "${ENV_BRANCH_NAME}"
echo 'Build Number: ' + "${ENV_BUILD_NUMBER}"
echo 'Job Name: ' + "${ENV_JOB_NAME}"
echo 'Artifactory Url: ' + "http://${ENV_ARTIFACTORY_URL}/artifactory"
echo 'Artifactory ServerId: ' + "${ENV_ARTIFACTORY_SERVER_ID}"
git(
url: "${ENV_GIT_URL}",
credentialsId: '4c81efa2-1d49-4b70-859e-d699c1f618c0',
branch: 'master'
)
}
}
stage ('Artifactory configuration') {
steps {
rtServer (
id: "${ENV_ARTIFACTORY_SERVER_ID}",
url: "http://${ENV_ARTIFACTORY_URL}/artifactory",
credentialsId: 'f8f8918e-0368-4b37-88ed-cf25401fa1e1',
bypassProxy: true
)
}
}
stage ('Configure Build Info') {
steps {
rtBuildInfo (
captureEnv: true,
includeEnvPatterns: ['*Env*'],
maxBuilds: 2,
maxDays: 2,
doNotDiscardBuilds: ["3"],
deleteBuildArtifacts: true,
buildName: "${ENV_JOB_NAME}",
buildNumber: "${ENV_BUILD_NUMBER}"
)
}
}
stage('Build Docker Image') {
steps {
echo 'Starting to build docker image'
script {
def dockerfile = 'Dockerfile'
def customImage = docker.build('$ENV_ARTIFACTORY_URL/$ENV_ARTIFACTORY_VIRTUAL_REPO/$ENV_JOB_NAME:$ENV_BUILD_NUMBER', "-f ${dockerfile} .")
}
}
}
stage ('Push To Artifactory') {
steps {
rtDockerPush(
serverId: "${ENV_ARTIFACTORY_SERVER_ID}",
image: "$ENV_ARTIFACTORY_URL/$ENV_ARTIFACTORY_VIRTUAL_REPO/$ENV_JOB_NAME:$ENV_BUILD_NUMBER",
host: 'tcp://localhost:2375',
targetRepo: "$ENV_ARTIFACTORY_VIRTUAL_REPO",
// Attach custom properties to the published artifacts:
properties: 'status=stable',
buildName: "${ENV_JOB_NAME}",
buildNumber: "${ENV_BUILD_NUMBER}"
)
}
}
stage ('Issues Collection') {
steps {
rtCollectIssues (
serverId: "${ENV_ARTIFACTORY_SERVER_ID}",
config: """{
"version": 1,
"issues": {
"trackerName": "JIRA",
"regexp": "(.+-[0-9]+)\\s-\\s(.+)",
"keyGroupIndex": 1,
"summaryGroupIndex": 2,
"trackerUrl": "https://jira.inwk.com",
"aggregate": "true",
"aggregationStatus": "RELEASED"
}
}""",
// You may alternatively provide a path to a config file, instead of the config itself, by setting:
// configPath: '/path/to/config'
buildName: "${ENV_JOB_NAME}",
buildNumber: "${ENV_BUILD_NUMBER}"
)
}
}
stage ('Publish Build Info') {
steps {
rtPublishBuildInfo (
serverId: "${ENV_ARTIFACTORY_SERVER_ID}",
buildName: "${ENV_JOB_NAME}",
buildNumber: "${ENV_BUILD_NUMBER}"
)
}
}
}
}
Обратите внимание, как rtBuildInfo
шаг был перенесен на любой шаг, использующий его. Я также добавил поля buildName
и buildNumber
к шагу rtDockerPush
, предполагая, что вы также хотите собрать информацию о сборке для этого шага.
Теперь, когда вы увидите в журнале, что проблемы были добавлены, вы должнытакже смотрите их в Artifactory.
Конец редактирования.
Как добавить комментарии GIT, чтобы они собирались и отправлялись вJFrog Artifactory?
Поле regexp
в конфигурации сбора проблем определяет, какие git-сообщения собираются как проблемы. Из документации :
Регулярное выражение, используемое для сопоставления сообщений git commit. Выражение должно включать две группы захвата - для ключа проблемы (ID) и сводки проблемы.
Например, для следующего поля регулярного выражения: 'regexp': '(.+-[0-9]+)\\s-\\s(.+)'
Регулярное выражение соответствует сообщениям фиксации, как показано в следующем примере:
HAP-1364 - заменить вкладки пробелами