forked from devbyaccident/azure-voting-app-redis
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathJenkinsfile old
125 lines (124 loc) · 3.21 KB
/
Jenkinsfile old
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
pipeline {
agent any
stages {
stage('Verify Branch') {
steps {
echo "$GIT_BRANCH"
}
}
stage('Docker Build') {
steps {
pwsh(script: 'docker images -a')
pwsh(script: """
cd azure-vote/
docker images -a
docker build -t jenkins-pipeline .
docker images -a
cd ..
""")
}
}
stage('Start test app') {
steps {
pwsh(script: """
docker-compose up -d
./scripts/test_container.ps1
""")
}
post {
success {
echo "App started successfully :)"
}
failure {
echo "App failed to start :("
}
}
}
stage('Run Tests') {
steps {
pwsh(script: """
pytest ./tests/test_sample.py
""")
}
}
stage('Stop test app') {
steps {
pwsh(script: """
docker-compose down
""")
}
}
stage('Container Scanning') {
parallel {
stage('Run Anchore') {
steps {
pwsh(script: """
Write-Output "blackdentech/jenkins-course" > anchore_images
""")
anchore bailOnFail: false, bailOnPluginFail: false, name: 'anchore_images'
}
}
stage('Run Trivy') {
steps {
sleep(time: 30, unit: 'SECONDS')
// pwsh(script: """
// C:\\Windows\\System32\\wsl.exe -- sudo trivy blackdentech/jenkins-course
// """)
}
}
}
}
stage('Deploy to QA') {
environment {
ENVIRONMENT = 'qa'
}
steps {
echo "Deploying to ${ENVIRONMENT}"
acsDeploy(
azureCredentialsId: "jenkins_demo",
configFilePaths: "**/*.yaml",
containerService: "${ENVIRONMENT}-demo-cluster | AKS",
resourceGroupName: "${ENVIRONMENT}-demo",
sshCredentialsId: ""
)
}
}
stage('Approve PROD Deploy') {
when {
branch 'master'
}
options {
timeout(time: 1, unit: 'HOURS')
}
steps {
input message: "Deploy?"
}
post {
success {
echo "Production Deploy Approved"
}
aborted {
echo "Production Deploy Denied"
}
}
}
stage('Deploy to PROD') {
when {
branch 'master'
}
environment {
ENVIRONMENT = 'prod'
}
steps {
echo "Deploying to ${ENVIRONMENT}"
acsDeploy(
azureCredentialsId: "jenkins_demo",
configFilePaths: "**/*.yaml",
containerService: "${ENVIRONMENT}-demo-cluster | AKS",
resourceGroupName: "${ENVIRONMENT}-demo",
sshCredentialsId: ""
)
}
}
}
}