Files
old-svijetlastrana/Jenkinsfile
2018-04-25 13:16:36 +02:00

103 lines
3.5 KiB
Groovy

node {
stage("Setting variables") {
echo "Setting variables"
BRANCH_PRD = 'master'
BRANCH_STG = 'staging'
BRANCH_DEV = 'development'
// Gets the environment based on the current Git branch.
if (env.BRANCH_NAME == BRANCH_PRD) {
env.DEPLOY_ENV = 'prd'
} else if (env.BRANCH_NAME == BRANCH_STG) {
env.DEPLOY_ENV = 'stg'
} else if (env.BRANCH_NAME == BRANCH_DEV) {
env.DEPLOY_ENV = 'dev'
}
// Define environment variables for other files to use it.
env.APP_NAME = "nemt-portal-api"
env.ENV_NAME = "${env.APP_NAME}-${env.DEPLOY_ENV}"
echo "Branch: ${env.BRANCH_NAME}"
echo "Environment: ${env.DEPLOY_ENV}"
echo "Setting variables complete"
}
stage("Cleaning") {
echo "Cleaning"
sh "rm -rf ${pwd()}/*"
deleteDir()
echo "Cleaning complete"
}
stage("Build") {
echo "Building"
// Sets package name based on the AWS job name, the current Git tag version and the build ID.
GIT_TAG = "\$(git describe --tags --always --dirty)"
PKG_NAME = "${GIT_TAG}-${env.JOB_BASE_NAME}-${env.BUILD_ID}"
ZIP_FILE_NAME = "${PKG_NAME}.zip"
// Sets the variables used for Docker login.
AWS_DOCKER_ROLE_NAME = "rvbrazil-bsbsi-deploy"
AWS_DOCKER_ROLE_ARN = "arn:aws:iam::xxxxxxxxxxx:role/bsbsi-deploy"
// Downloads repository.
echo "Downloading repository"
checkout scm
// Assumes role into our AWS account (for Docker login).
sh "aws-assume-role ${AWS_DOCKER_ROLE_ARN} ${AWS_DOCKER_ROLE_NAME}"
// Uses the AWS CLI to get our Docker login commmand and executes it.
sh "\$(aws --region us-east-1 --profile ${AWS_DOCKER_ROLE_NAME} ecr get-login)"
// Builds the application.
sh "make build-${env.DEPLOY_ENV}"
// Zips the files that will go to S3.
sh "cp Dockerfile.run Dockerfile"
sh "rm -rf ./*.zip"
sh "zip -r ${ZIP_FILE_NAME} dist Dockerfile Dockerrun.aws.json"
echo "Building complete"
}
stage("Deploy") {
echo "Deploying"
echo "Environment: ${env.DEPLOY_ENV}"
// Sets the variables used for deploying.
S3_BUCKET = "boilerplate-builds"
S3_KEY = "${env.APP_NAME}/${env.DEPLOY_ENV}/${ZIP_FILE_NAME}"
S3_PATH = "${S3_BUCKET}/${S3_KEY}"
AWS_ROLE_NAME = "qrides-bsbsi-deploy"
AWS_ROLE_ARN = "arn:aws:iam::xxxxxxxxxx:role/bsbsi-deploy"
// Assumes role into our AWS account (for S3 deploy).
sh "aws-assume-role ${AWS_ROLE_ARN} ${AWS_ROLE_NAME}"
// Deploys container to S3.
sh "aws --region sa-east-1 --profile ${AWS_ROLE_NAME} s3 mv ${ZIP_FILE_NAME} s3://${S3_PATH}"
// Deploys to EBS.
sh "aws --region sa-east-1 --profile ${AWS_ROLE_NAME} elasticbeanstalk \
create-application-version \
--application-name \"${env.APP_NAME}\" \
--version-label \"${PKG_NAME}\" \
--description \"${ZIP_FILE_NAME}\" \
--source-bundle S3Bucket=\"${S3_BUCKET}\",S3Key=\"${S3_KEY}\""
// Updates EBS environment.
sh "aws --region sa-east-1 --profile ${AWS_ROLE_NAME} elasticbeanstalk \
update-environment \
--application-name \"${env.APP_NAME}\" \
--environment-name \"${env.ENV_NAME}\" \
--version-label \"${PKG_NAME}\""
echo "Deploying complete"
}
}