IL-2602
/
Jenkinsfile
71 строка · 2.3 Кб
1def app
2
3pipeline {
4agent any
5environment {
6ENV_TYPE = "production"
7PORT = 3263
8NAMESPACE = "instalife-fun"
9REGISTRY_HOSTNAME = "il2702"
10REGISTRY = "registry.hub.docker.com"
11PROJECT = "insta-life"
12DEPLOYMENT_NAME = "insta-life-deployment"
13IMAGE_NAME = "${env.BUILD_ID}_${env.ENV_TYPE}_${env.GIT_COMMIT}"
14DOCKER_BUILD_NAME = "${env.REGISTRY_HOSTNAME}/${env.PROJECT}:${env.IMAGE_NAME}"
15}
16
17stages {
18stage('Clone repository') {
19steps {
20checkout scm
21}
22}
23stage('Build docker image') {
24steps {
25echo "Build image started..."
26script {
27app = docker.build("${env.DOCKER_BUILD_NAME}")
28}
29echo "Build image finished..."
30}
31}
32stage('Push docker image') {
33steps {
34echo "Push image started..."
35script {
36docker.withRegistry("https://${env.REGISTRY}", 'instalife-fun') {
37app.push("${env.IMAGE_NAME}")
38}
39}
40echo "Push image finished..."
41}
42}
43stage('Delete image local') {
44steps {
45script {
46sh "docker rmi -f ${env.DOCKER_BUILD_NAME}"
47}
48}
49}
50stage('Preparing deployment') {
51steps {
52echo "Preparing started..."
53sh 'ls -ltr'
54sh 'pwd'
55sh "chmod +x preparingDeploy.sh"
56sh "./preparingDeploy.sh ${env.REGISTRY_HOSTNAME} ${env.PROJECT} ${env.IMAGE_NAME} ${env.DEPLOYMENT_NAME} ${env.PORT} ${env.NAMESPACE}"
57sh "cat deployment.yaml"
58}
59
60}
61stage('Deploy to Kubernetes') {
62steps {
63withKubeConfig([credentialsId: 'prod-kubernetes']) {
64sh 'kubectl apply -f deployment.yaml'
65sh "kubectl rollout status deployment/${env.DEPLOYMENT_NAME} --namespace=${env.NAMESPACE}"
66sh "kubectl get services -o wide"
67}
68}
69}
70}
71}
72