-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathJenkinsfile
88 lines (80 loc) · 2.27 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
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
pipeline {
agent {
docker {
image 'node:16.13.1-alpine'
args '-u root --privileged -v /var/run/docker.sock:/var/run/docker.sock'
}
}
environment {
APP_STAGING = credentials('APP_STAGING')
APP_PRODUCTION = credentials('APP_PRODUCTION')
SNYK_TOKEN = credentials('SNYK_TOKEN')
}
stages {
stage('Clone Repository') {
steps {
script {
sh 'rm -rf .git'
final scmVars = checkout(scm)
env.BRANCH_NAME = scmVars.GIT_BRANCH
env.SHORT_COMMIT = "${scmVars.GIT_COMMIT[0..7]}"
env.GIT_REPO_NAME = scmVars.GIT_URL.replaceFirst(/^.*\/([^\/]+?).git$/, '$1')
}
}
}
stage('Copy Credentials') {
steps {
script {
if (env.BRANCH_NAME == 'main') {
sh 'cp $APP_PRODUCTION .env'
} else {
sh 'cp $APP_STAGING .env'
}
}
}
}
stage('Snyk Security Scan') {
steps {
snykSecurity(
snykInstallation: 'SA App',
snykTokenId: environment.SNYK_TOKEN,
)
}
}
stage('Install Dependencies') {
steps {
script {
sh 'yarn --frozen-lockfile'
}
}
}
stage('Run Unit Tests') {
steps {
script {
sh 'yarn test:unit'
}
}
}
stage('Build Docker Image') {
steps {
script {
sh 'apk add --update docker openrc'
app = docker.build("${env.GIT_REPO_NAME}")
}
}
}
}
post {
always {
cleanWs()
}
success {
echo 'I succeeded!'
}
failure {
mail to: 'francismasha96@gmail.com',
subject: "Failed Pipeline: ${currentBuild.fullDisplayName}",
body: "Something is wrong with ${env.BUILD_URL}."
}
}
}