-
Notifications
You must be signed in to change notification settings - Fork 0
/
JF_old
142 lines (130 loc) · 5.26 KB
/
JF_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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
pipeline {
agent any
environment {
// Define environment variables
FLUTTER_HOME = '/usr/local/flutter'
DOCKER_IMAGE_NAME = 'davidromerog/flutter_fist_application'
DOCKER_REGISTRY_CREDENTIALS = credentials('docker-registry-credentials')
SNYK_LOG_FILE = 'snyk-scan.log' // Define the Snyk log file
SERVER_IP = '192.168.68.54'
SSH_USER = 'drg'
}
stages {
stage('Checkout') {
steps {
// Checkout code from GitHub
git credentialsId: 'github-sshkey', url: 'https://github.com/darksignal/flutter_fist_application.git'
}
}
stage('Install Dependencies') {
steps {
// Install Flutter dependencies
//sh '''
// curl -o flutter.tar.xz https://storage.googleapis.com/flutter_infra/releases/stable/linux/flutter_linux_2.0.6-stable.tar.xz
// tar xf flutter.tar.xz -C /usr/local
// export PATH="$PATH:$FLUTTER_HOME/bin"
// flutter --version
// flutter pub get
//'''
sh 'sudo snap install flutter --classic'
}
}
/*
stage('Build Web App') {
steps {
// Build Flutter web app
sh "flutter build web"
}
}
stage('Snyk Code Scan') {
steps {
// Run Snyk code scan on the project and save the results to a log file
//sh "snyk test --all-projects > $SNYK_LOG_FILE"
snykSecurity(
snykInstallation: 'Snyk@latest', // Specify the Snyk installation to use
snykTokenId: 'darksignal-snyk-api-token', // Specify the Snyk API token to use
targetFile: $SNYK_LOG_FILE, // Specify the target file to use
additionalArguments: "--all-projects" // --file=$SNYK_LOG_FILE" // Specify the log file to use
)
}
}
stage('Build Docker Image') {
steps {
// Build Docker image
script {
docker.build(DOCKER_IMAGE_NAME, './build/web')
}
}
}
stage('Snyk Container Scan') {
steps {
// Run Snyk container scan on the Docker image and append the results to the log file
sh "snyk container test ${DOCKER_IMAGE_NAME} >> $SNYK_LOG_FILE"
}
}
stage('Push Docker Image') {
steps {
// Push Docker image to Docker registry
script {
docker.withRegistry('', DOCKER_REGISTRY_CREDENTIALS) {
docker.image(DOCKER_IMAGE_NAME).push()
}
}
}
}
stage('Deploy???') {
steps {
// Deploy your Docker container to your chosen environment
// You may need to use a tool like Docker Compose or Kubernetes here
// For example, using Docker Compose:
sh 'docker-compose up -d'
}
}
stage('DeployRPi') {
steps {
script {
def remoteDir = "~/Downloads" // Replace with your remote directory path
def dockerRunCmd = "docker run -d -p 80:80 $DOCKER_IMAGE_NAME"
sshagent(credentials: ['linux-ssh']) {
// Copy the Docker image to the remote server
sshPut(
remote: "${remoteDir}/your-flutter-web-app.tar",
from: "${DOCKER_IMAGE_NAME}.tar"
)
// SSH into the remote server and execute Docker run command
sshCommand(
remote: remoteDir,
user: SSH_USER,
password: credentials('linux-ssh'),
command: dockerRunCmd,
failonerror: true
)
}
}
}
}
*/
}
post {
failure {
// Handle failure (e.g., send notifications)
emailext(
subject: "CI/CD Pipeline Failed: ${currentBuild.fullDisplayName}",
body: "The CI/CD pipeline for your Flutter web app has failed. Please investigate.\n\nPipeline URL: ${currentBuild.absoluteUrl}",
to: 'davidromerog@gmail.com',
replyTo: 'jenkins@example.com',
attachLog: true, // Attach the Snyk log file to the email
attachmentsPattern: '$SNYK_LOG_FILE' // Specify the log file to attach
)
}
success {
// Handle success (e.g., send notifications)
emailext(
subject: "CI/CD Pipeline Succeeded: ${currentBuild.fullDisplayName}",
body: "The CI/CD pipeline for your Flutter web app has succeeded. Deployment is complete.\n\nPipeline URL: ${currentBuild.absoluteUrl}",
to: 'davidromerog@gmail.com',
replyTo: 'jenkins@example.com'
)
}
}
}