117 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			117 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
/*
 | 
						|
 * Copyright (c) 2020-present Sonatype, Inc. All rights reserved.
 | 
						|
 *
 | 
						|
 * This program is licensed to you under the Apache License Version 2.0,
 | 
						|
 * and you may not use this file except in compliance with the Apache License Version 2.0.
 | 
						|
 * You may obtain a copy of the Apache License Version 2.0 at http://www.apache.org/licenses/LICENSE-2.0.
 | 
						|
 *
 | 
						|
 * Unless required by applicable law or agreed to in writing,
 | 
						|
 * software distributed under the Apache License Version 2.0 is distributed on an
 | 
						|
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
						|
 * See the Apache License Version 2.0 for the specific language governing permissions and limitations there under.
 | 
						|
 */
 | 
						|
@Library(['private-pipeline-library', 'jenkins-shared', 'nxrm-jenkins-shared']) _
 | 
						|
 | 
						|
final jira = [
 | 
						|
    versionPrefix: '', project: 'NEXUS', projectId: '12410',
 | 
						|
    credentialId : 'jenkins-jira', autoRelease: true, failOnError: true
 | 
						|
]
 | 
						|
 | 
						|
final jiraVersionMappings = [
 | 
						|
  'nexus-repository-manager': 'helm-nxrm',
 | 
						|
  'nxrm-aws-resiliency': 'helm-nxrm-aws-resiliency'
 | 
						|
]
 | 
						|
 | 
						|
final chartLocation = [
 | 
						|
  'nexus-repository-manager': 'nexus-repository-manager',
 | 
						|
  'nxrm-aws-resiliency': 'nxrm-aws-resiliency'
 | 
						|
]
 | 
						|
 | 
						|
properties([
 | 
						|
  parameters([
 | 
						|
    string(
 | 
						|
      name: 'appVersion',
 | 
						|
      description: 'Version of the application image, like "3.41.0"',
 | 
						|
    ),
 | 
						|
    string(
 | 
						|
      name: 'chartVersion',
 | 
						|
      description: '(Optional) Version of the Chart, like "41.0.0". If omitted, it will be calculated from the appVersion.',
 | 
						|
    ),
 | 
						|
  ])
 | 
						|
])
 | 
						|
 | 
						|
final chartVersion = calculateChartVersion(params.chartVersion, params.appVersion)
 | 
						|
 | 
						|
dockerizedBuildPipeline(
 | 
						|
  prepare: {
 | 
						|
    if (! params.chart) {
 | 
						|
      error('Chart parameter is required.')
 | 
						|
    }
 | 
						|
    if (! params.appVersion) {
 | 
						|
      error('The appVersion is required.')
 | 
						|
    }
 | 
						|
    githubStatusUpdate('pending')
 | 
						|
  },
 | 
						|
  buildAndTest: {
 | 
						|
    sonatypeZionGitConfig()
 | 
						|
    runSafely "git checkout ${gitBranch(env)}"
 | 
						|
    runSafely "./upgrade.sh ./nexus-repository-manager ${chartVersion} ${params.appVersion}"
 | 
						|
    runSafely "./upgrade.sh ./nxrm-aws-resiliency ${chartVersion} ${params.appVersion}"
 | 
						|
    runSafely './build.sh'    
 | 
						|
    runSafely 'git add nxrm-aws-resiliency nexus-repository-manager'
 | 
						|
  },
 | 
						|
  skipVulnerabilityScan: true,
 | 
						|
  archiveArtifacts: 'docs/*',
 | 
						|
  testResults: [],
 | 
						|
  deployCondition: { true },
 | 
						|
  deploy: {
 | 
						|
    runSafely 'git add docs'
 | 
						|
    runSafely "git commit -m 'Release Update for ${params.chart} ${chartVersion}'"
 | 
						|
 | 
						|
    sshagent(credentials: [sonatypeZionCredentialsId()]) {
 | 
						|
      runSafely 'git push'
 | 
						|
    }
 | 
						|
  },
 | 
						|
  postDeploy: {
 | 
						|
    // Verify Index.yaml
 | 
						|
    String version = verifyIndexYamlAndTarFile(params.chart)
 | 
						|
 | 
						|
    // Set Jira Fix Version
 | 
						|
    jira.versionPrefix = jiraVersionMappings[chart]
 | 
						|
    jiraSetFixVersion(jira, version)
 | 
						|
 | 
						|
    // Create tags
 | 
						|
    String tagName = "${chart}-${version}"
 | 
						|
    runSafely "git tag -a ${tagName} -m 'Release Update: ${version}'"
 | 
						|
    sshagent(credentials: [sonatypeZionCredentialsId()]) {
 | 
						|
      runSafely "git push origin ${tagName}"
 | 
						|
    }
 | 
						|
  },
 | 
						|
  onSuccess: {
 | 
						|
    nxrmBuildNotifications(currentBuild, env)
 | 
						|
  },
 | 
						|
  onFailure: {
 | 
						|
    nxrmBuildNotifications(currentBuild, env)
 | 
						|
  }
 | 
						|
)
 | 
						|
 | 
						|
String calculateChartVersion(final String chartVersion, final String appVersion) {
 | 
						|
  if (chartVersion) {
 | 
						|
    return chartVersion
 | 
						|
  }
 | 
						|
 | 
						|
  if (! appVersion) {
 | 
						|
    error 'Failed to calculate chartVersion with no appVersion.'
 | 
						|
  }
 | 
						|
 | 
						|
  final versionParts = parseVersionString(appVersion)
 | 
						|
  final chartMajor = versionParts[1]
 | 
						|
  final chartMinor = versionParts[2]
 | 
						|
 | 
						|
  if (! chartMajor || ! chartMinor) {
 | 
						|
    error "Failed to calculate chartVersion from appVersion: ${appVersion}"
 | 
						|
  }
 | 
						|
 | 
						|
  return [chartMajor, chartMinor, '0'].join('.')
 | 
						|
}
 |