-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathJenkinsfile
50 lines (49 loc) · 2.01 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
pipeline {
agent {
docker {
image 'hsndocker/aws-cli:latest'
args "-u root:root --entrypoint=''"
}
}
parameters {
string(name: 'BACKEND_VERSION', defaultValue: 'latest')
string(name: 'CLUSTER_NAME', defaultValue: 'engineerx')
string(name: 'REGION', defaultValue: 'us-east-2')
}
environment {
ACCESS_KEY_ID = credentials('aws-access-key-id')
SECRET_KEY = credentials('aws-secret-key')
DOCKERHUB_CRED = credentials('dockerhub-repo')
BACKEND_VERSION = "${params.BACKEND_VERSION}"
BUILD_ID = "${env.BUILD_ID}"
REGION = "${params.REGION}"
CLUSTER_NAME = "${params.CLUSTER_NAME}"
}
stages {
stage('Providing Access Keys') {
steps {
sh('aws configure set aws_access_key_id $ACCESS_KEY_ID')
sh('aws configure set aws_secret_access_key $SECRET_KEY')
sh('aws configure set default.region $REGION')
}
}
stage('Setting kubeconfig') {
steps {
sh('aws eks --region $REGION update-kubeconfig --name $CLUSTER_NAME')
}
}
stage('Deploy Backend Unittest') {
steps {
sh 'terraform init'
sh('terraform apply -var test_number=$BUILD_ID -var backend_version=$BACKEND_VERSION -var dockerhub_username=$DOCKERHUB_CRED_USR -var dockerhub_password=$DOCKERHUB_CRED_PSW --auto-approve')
sh "kubectl wait --for=condition=ready --timeout=600s -n backend-test pod/unittest-${env.BUILD_ID}"
sh "kubectl exec -n backend-test unittest-${env.BUILD_ID} -c backend -- python manage.py test authentication"
}
post {
always {
sh('terraform destroy -var test_number=$BUILD_ID -var backend_version=$BACKEND_VERSION -var dockerhub_username=$DOCKERHUB_CRED_USR -var dockerhub_password=$DOCKERHUB_CRED_PSW --auto-approve')
}
}
}
}
}