Jenkinsfile 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. pipeline {
  2. agent {
  3. node {
  4. label 'jenkins-agent-web'
  5. customWorkspace '/workspace'
  6. }
  7. }
  8. options {
  9. timestamps()
  10. parallelsAlwaysFailFast()
  11. timeout(time: 15, unit: 'MINUTES')
  12. }
  13. environment {
  14. IMAGE_NAME = 'contacts'
  15. PROJECT_NAME = 'contacts'
  16. IMAGE_REPO = 'us-east1-docker.pkg.dev/overleaf-ops/ol-docker/contacts'
  17. AR_REPO_LOCATION = 'us-east1'
  18. AR_URL = 'us-east1-docker.pkg.dev/overleaf-ops/ol-docker'
  19. BRANCH_NAME = "${env.CHANGE_BRANCH ? env.CHANGE_BRANCH : env.BRANCH_NAME}"
  20. JENKINS_BUILD_NUMBER = "${BUILD_NUMBER}"
  21. BUILD_NUMBER = "${SHORT_SHA}_${BUILD_NUMBER}"
  22. DOCKER_COMPOSE_FLAGS = '-f docker-compose.ci.yml'
  23. COMMIT_SHA = "${GIT_COMMIT}"
  24. SHORT_SHA = "${GIT_COMMIT.take(7)}"
  25. }
  26. stages {
  27. stage ('Build') {
  28. steps {
  29. dir ('services/contacts') {
  30. sh 'make build'
  31. }
  32. }
  33. }
  34. stage ('Tests') {
  35. parallel {
  36. stage ('Push Branch Image') {
  37. steps {
  38. dir ('services/contacts') {
  39. sh 'docker push ${AR_URL}/${IMAGE_NAME}:${BRANCH_NAME}'
  40. }
  41. }
  42. }
  43. stage ('Shellcheck') {
  44. steps {
  45. dir ('services/contacts') {
  46. sh 'make shellcheck'
  47. }
  48. }
  49. }
  50. stage ('Lint') {
  51. steps {
  52. dir ('services/contacts') {
  53. sh 'make lint_ci'
  54. }
  55. }
  56. }
  57. stage ('Format') {
  58. steps {
  59. dir ('services/contacts') {
  60. sh 'make format_ci'
  61. }
  62. }
  63. }
  64. stage ('Typecheck') {
  65. steps {
  66. dir ('services/contacts') {
  67. sh 'make typecheck_ci'
  68. }
  69. }
  70. }
  71. stage ('Test Unit') {
  72. steps {
  73. dir ('services/contacts') {
  74. sh 'make test_unit'
  75. }
  76. }
  77. }
  78. stage ('Test Acceptance') {
  79. steps {
  80. dir ('services/contacts') {
  81. sh 'make test_acceptance'
  82. }
  83. }
  84. }
  85. }
  86. }
  87. stage('Push Production') {
  88. steps {
  89. dir('services/contacts') {
  90. sh 'docker push ${AR_URL}/${IMAGE_NAME}:${BRANCH_NAME}-${BUILD_NUMBER}'
  91. }
  92. }
  93. }
  94. }
  95. post {
  96. cleanup {
  97. dir('services/contacts') {
  98. sh 'make clean'
  99. }
  100. sh 'make clean_jenkins'
  101. }
  102. }
  103. }