103 lines
3.5 KiB
Plaintext
103 lines
3.5 KiB
Plaintext
|
|
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"
|
||
|
|
}
|
||
|
|
}
|