diff --git a/services/contacts/.jenkinsIncludeFile b/services/contacts/.jenkinsIncludeFile new file mode 100644 index 0000000000..baba3b80c0 --- /dev/null +++ b/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 diff --git a/services/contacts/Jenkinsfile b/services/contacts/Jenkinsfile new file mode 100644 index 0000000000..dcf65e6df9 --- /dev/null +++ b/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' + } + } +} +