-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathJenkinsfile
58 lines (55 loc) · 1.56 KB
/
Jenkinsfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
def image = "877366825671.dkr.ecr.us-east-1.amazonaws.com/storytelling-example:${params.ENV + '_' + env.BUILD_NUMBER}"
pipeline {
agent any
stages {
stage('Prepare') {
steps {
checkout scm
sh 'touch .env'
}
}
stage('Build') {
steps {
sh "make pull_secrets ENV=${params.ENV}"
sh "make use_secrets ENV=${params.ENV}"
sh "make build"
}
}
stage('Test') {
steps {
sh 'make test'
}
}
stage('Authenticate ECR') {
steps {
sh '$(aws ecr get-login --no-include-email --region us-east-1)'
}
}
stage('Push image') {
steps {
sh "make tag IMAGE=${image}"
sh "make push IMAGE=${image}"
}
}
stage('Deploy') {
steps {
withCredentials([string(credentialsId: 'DEPLOY_KEY', variable: 'DEPLOY_KEY')]) {
withCredentials([string(credentialsId: 'AWS_ACCESS_KEY_ID', variable: 'AWS_ACCESS_KEY_ID')]) {
withCredentials([string(credentialsId: 'AWS_SECRET_ACCESS_KEY', variable: 'AWS_SECRET_ACCESS_KEY')]) {
sh "echo $DEPLOY_KEY > ~/.ssh/STSTEC2NVirginia.pem"
sh "chmod 400 ~/.ssh/STSTEC2NVirginia.pem"
sh "ansible-playbook -i ./deploy/group_vars/${params.ENV} -s ./deploy/deploy.yml --extra-vars=\'docker_image=${image} version=${params.ENV} aws_key=$AWS_ACCESS_KEY_ID aws_secret=$AWS_SECRET_ACCESS_KEY\'"
}
}
}
}
}
}
post {
always {
sh 'make stop'
cleanWs()
sh "docker rmi ${image}"
}
}
}