Преглед изворни кода

Merge pull request #28382 from overleaf/os-28375-adopt-contacts

Adopt Contacts Pipeline to Jenkins

GitOrigin-RevId: 5c829f771158639725d2f0fcefb27f92c015904f
Okan Sahiner пре 11 месеци
родитељ
комит
0dfa46c661
2 измењених фајлова са 119 додато и 0 уклоњено
  1. 10 0
      services/contacts/.jenkinsIncludeFile
  2. 109 0
      services/contacts/Jenkinsfile

+ 10 - 0
services/contacts/.jenkinsIncludeFile

@@ -0,0 +1,10 @@
+libraries/logger/**
+libraries/metrics/**
+libraries/mongo-utils/**
+libraries/settings/**
+patches/**
+services/contacts/**
+.eslint*
+.prettier*
+package.json
+package-lock.json

+ 109 - 0
services/contacts/Jenkinsfile

@@ -0,0 +1,109 @@
+pipeline {
+
+    agent {
+      node {
+        label 'jenkins-agent-web'
+        customWorkspace '/workspace'
+      }
+    }
+
+    options {
+        timestamps()
+        parallelsAlwaysFailFast()
+        timeout(time: 15, unit: 'MINUTES')
+    }
+
+    environment {
+        IMAGE_NAME = 'contacts'
+        PROJECT_NAME = 'contacts'
+        IMAGE_REPO = 'us-east1-docker.pkg.dev/overleaf-ops/ol-docker/contacts'
+        AR_REPO_LOCATION = 'us-east1'
+        AR_URL = 'us-east1-docker.pkg.dev/overleaf-ops/ol-docker'
+        BRANCH_NAME = "${env.CHANGE_BRANCH ? env.CHANGE_BRANCH : env.BRANCH_NAME}"
+        JENKINS_BUILD_NUMBER = "${BUILD_NUMBER}"      
+        BUILD_NUMBER = "${SHORT_SHA}_${BUILD_NUMBER}" 
+        DOCKER_COMPOSE_FLAGS = '-f docker-compose.ci.yml'
+        COMMIT_SHA = "${GIT_COMMIT}"
+        SHORT_SHA = "${GIT_COMMIT.take(7)}"
+    }
+
+
+    stages {
+        stage ('Build') {
+            steps {
+                dir ('services/contacts') {
+                    sh 'make build'
+                }
+            }
+        }
+        stage ('Tests') {
+            parallel {
+                stage ('Push Branch Image') {
+                    steps {
+                        dir ('services/contacts') {
+                            sh 'docker push ${AR_URL}/${IMAGE_NAME}:${BRANCH_NAME}'
+                        }
+                    }
+                }
+                stage ('Shellcheck') {
+                    steps {
+                        dir ('services/contacts') {
+                            sh 'make shellcheck'
+                        }
+                    }
+                }
+                stage ('Lint') {
+                    steps {
+                        dir ('services/contacts') {
+                            sh 'make lint_ci'
+                        }
+                    }
+                }
+                stage ('Format') {
+                    steps {
+                        dir ('services/contacts') {
+                            sh 'make format_ci'
+                        }
+                    }
+                }
+                stage ('Typecheck') {
+                    steps {
+                        dir ('services/contacts') {
+                            sh 'make typecheck_ci'
+                        }
+                    }
+                }
+                stage ('Test Unit') {
+                    steps {
+                        dir ('services/contacts') {
+                            sh 'make test_unit'
+                        }
+                    }
+                }
+                stage ('Test Acceptance') {
+                    steps {
+                        dir ('services/contacts') {
+                            sh 'make test_acceptance'
+                        }
+                    }
+                }
+            }
+        }
+        stage('Push Production') {
+            steps {
+                dir('services/contacts') {
+                    sh 'docker push ${AR_URL}/${IMAGE_NAME}:${BRANCH_NAME}-${BUILD_NUMBER}'
+                }
+            }
+        }
+    }
+    post {
+        cleanup {
+            dir('services/contacts') {
+                sh 'make clean'
+            }
+            sh 'make clean_jenkins'
+        }
+    }
+}
+