1 changed files with 84 additions and 0 deletions
@ -0,0 +1,84 @@ |
|||
#!/usr/bin/env groovy |
|||
import groovy.json.JsonOutput |
|||
|
|||
def gitRepo = "" |
|||
def gitBranch = params.GIT_BRANCH != null && params.GIT_BRANCH != "" ? params.GIT_BRANCH : "master" |
|||
|
|||
node('nodejs') { |
|||
// Get Source Code from SCM (Git) as configured in the Jenkins Project |
|||
stage('Checkout Source') { |
|||
// For Jenkinsfile from GIT |
|||
if (gitRepo == null || gitRepo == "") { |
|||
checkout scm |
|||
gitRepo = scm.getUserRemoteConfigs()[0].getUrl() |
|||
} else { |
|||
// for inline scripts |
|||
git url: gitRepo, branch: gitBranch |
|||
} |
|||
} |
|||
|
|||
def towerExtraVars = [ |
|||
git_repo: gitRepo, |
|||
git_branch: gitBranch, |
|||
threescale_cicd_api_backend_hostname: params.OPENSHIFT_SERVICE_NAME, |
|||
threescale_cicd_openapi_smoketest_operation: "GetLocation", |
|||
threescale_cicd_api_backend_scheme: "http", |
|||
threescale_cicd_api_base_system_name: "rhte_api" |
|||
] |
|||
|
|||
def thisPackage = readJSON file: 'package.json' |
|||
def currentVersion = thisPackage.version |
|||
def newVersion = "$currentVersion-$BUILD_NUMBER" |
|||
|
|||
stage('Unit Tests') { |
|||
sh "npm test" |
|||
} |
|||
|
|||
// Build the OpenShift Image in OpenShift using the artifacts from NPM |
|||
// Also tag the image |
|||
stage('Build OpenShift Image') { |
|||
// Trigger an OpenShift build in the dev environment |
|||
openshiftBuild bldCfg: params.OPENSHIFT_BUILD_CONFIG, checkForTriggeredDeployments: 'false', |
|||
namespace: params.OPENSHIFT_BUILD_PROJECT, showBuildLogs: 'true', |
|||
verbose: 'false', waitTime: '', waitUnit: 'sec', env: [ ] |
|||
|
|||
|
|||
// Tag the new build |
|||
openshiftTag alias: 'false', destStream: params.OPENSHIFT_IMAGE_STREAM, destTag: "${newVersion}", |
|||
destinationNamespace: params.OPENSHIFT_BUILD_PROJECT, namespace: params.OPENSHIFT_BUILD_PROJECT, |
|||
srcStream: params.OPENSHIFT_IMAGE_STREAM, srcTag: 'latest', verbose: 'false' |
|||
|
|||
} |
|||
stage('Deploy API to test') { |
|||
// Tag the new build as "ready-for-test" |
|||
openshiftTag alias: 'false', destStream: params.OPENSHIFT_IMAGE_STREAM, srcTag: "${newVersion}", |
|||
destinationNamespace: params.OPENSHIFT_TEST_ENVIRONMENT, namespace: params.OPENSHIFT_BUILD_PROJECT, |
|||
srcStream: params.OPENSHIFT_IMAGE_STREAM, destTag: 'ready-for-test', verbose: 'false' |
|||
|
|||
// Trigger a new deployment |
|||
openshiftDeploy deploymentConfig: params.OPENSHIFT_DEPLOYMENT_CONFIG, namespace: params.OPENSHIFT_TEST_ENVIRONMENT |
|||
|
|||
// Deploy the API to 3scale |
|||
ansibleTower towerServer: params.ANSIBLE_TOWER_SERVER, |
|||
inventory: params.ANSIBLE_TEST_INVENTORY, |
|||
jobTemplate: params.ANSIBLE_JOB_TEMPLATE, |
|||
extraVars: JsonOutput.toJson(towerExtraVars) |
|||
|
|||
} |
|||
stage('Deploy API to prod') { |
|||
// Tag the new build as "ready-for-prod" |
|||
openshiftTag alias: 'false', destStream: params.OPENSHIFT_IMAGE_STREAM, srcTag: "${newVersion}", |
|||
destinationNamespace: params.OPENSHIFT_PROD_ENVIRONMENT, namespace: params.OPENSHIFT_BUILD_PROJECT, |
|||
srcStream: params.OPENSHIFT_IMAGE_STREAM, destTag: 'ready-for-prod', verbose: 'false' |
|||
|
|||
// Trigger a new deployment |
|||
openshiftDeploy deploymentConfig: params.OPENSHIFT_DEPLOYMENT_CONFIG, namespace: params.OPENSHIFT_PROD_ENVIRONMENT |
|||
|
|||
// Deploy the API to 3scale |
|||
ansibleTower towerServer: params.ANSIBLE_TOWER_SERVER, |
|||
inventory: params.ANSIBLE_PROD_INVENTORY, |
|||
jobTemplate: params.ANSIBLE_JOB_TEMPLATE, |
|||
extraVars: JsonOutput.toJson(towerExtraVars) |
|||
} |
|||
|
|||
} |
|||
Loading…
Reference in new issue