Jenkinsfile 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. pipeline {
  2. agent { label 'dokskan_central_image_build' }
  3. environment {
  4. HARBOR_REGISTRY = 'registry.colettapaolo.com'
  5. HARBOR_PROJECT = 'dokskan'
  6. IMAGE_NAME = 'dokskan_central'
  7. HARBOR_CREDENTIALS = credentials('harbor_credentials_id')
  8. }
  9. triggers {
  10. GenericTrigger(
  11. genericVariables: [
  12. [key: 'ref', value: '$.ref'],
  13. [key: 'pusher', value: '$.pusher.username']
  14. ],
  15. genericHeaderVariables: [
  16. ],
  17. regexpFilterText: '$ref',
  18. regexpFilterExpression: '^refs/heads/main$',
  19. token: '8hBvzVnlwUnDVbvRWPQIHUTPFuiGUUAii9sD1xu1sMeGJkNLWbaGYJO8l3yVMZPl',
  20. causeString: 'Triggered by Gogs on branch: $ref',
  21. printContributedVariables: true,
  22. printPostContent: true
  23. )
  24. }
  25. stages {
  26. stage('Info') {
  27. steps {
  28. echo "Branch: ${ref}"
  29. echo "Pusher: ${pusher}"
  30. }
  31. }
  32. stage('Checkout') {
  33. steps {
  34. echo 'Checking out code...'
  35. checkout scm
  36. script {
  37. env.GIT_COMMIT_SHORT = sh(
  38. script: "git rev-parse --short HEAD",
  39. returnStdout: true
  40. ).trim()
  41. env.GIT_COMMIT_FULL = sh(
  42. script: "git rev-parse HEAD",
  43. returnStdout: true
  44. ).trim()
  45. echo "Commit ID (short): ${env.GIT_COMMIT_SHORT}"
  46. echo "Commit ID (full): ${env.GIT_COMMIT_FULL}"
  47. }
  48. }
  49. }
  50. stage('Build Docker Image') {
  51. steps {
  52. echo "Building Docker image with tag: ${env.GIT_COMMIT_SHORT}"
  53. script {
  54. sh """
  55. docker build -t ${HARBOR_REGISTRY}/${HARBOR_PROJECT}/${IMAGE_NAME}:${env.GIT_COMMIT_SHORT} .
  56. docker tag ${HARBOR_REGISTRY}/${HARBOR_PROJECT}/${IMAGE_NAME}:${env.GIT_COMMIT_SHORT} \
  57. ${HARBOR_REGISTRY}/${HARBOR_PROJECT}/${IMAGE_NAME}:latest
  58. """
  59. }
  60. }
  61. }
  62. stage('Login to Harbor') {
  63. steps {
  64. echo 'Logging into Harbor registry...'
  65. sh """
  66. echo ${HARBOR_CREDENTIALS_PSW} | docker login ${HARBOR_REGISTRY} \
  67. -u ${HARBOR_CREDENTIALS_USR} \
  68. --password-stdin
  69. """
  70. }
  71. }
  72. stage('Push to Harbor') {
  73. steps {
  74. echo "Pushing image to Harbor..."
  75. sh """
  76. docker push ${HARBOR_REGISTRY}/${HARBOR_PROJECT}/${IMAGE_NAME}:${env.GIT_COMMIT_SHORT}
  77. docker push ${HARBOR_REGISTRY}/${HARBOR_PROJECT}/${IMAGE_NAME}:latest
  78. """
  79. echo "✅ Image pushed: ${HARBOR_REGISTRY}/${HARBOR_PROJECT}/${IMAGE_NAME}:${env.GIT_COMMIT_SHORT}"
  80. }
  81. }
  82. stage('Cleanup') {
  83. steps {
  84. echo 'Cleaning up local images...'
  85. sh """
  86. docker rmi ${HARBOR_REGISTRY}/${HARBOR_PROJECT}/${IMAGE_NAME}:${env.GIT_COMMIT_SHORT} || true
  87. docker rmi ${HARBOR_REGISTRY}/${HARBOR_PROJECT}/${IMAGE_NAME}:latest || true
  88. """
  89. }
  90. }
  91. }
  92. post {
  93. always {
  94. sh 'docker logout ${HARBOR_REGISTRY} || true'
  95. }
  96. success {
  97. echo "✅ Pipeline completata!"
  98. echo "Immagine: ${HARBOR_REGISTRY}/${HARBOR_PROJECT}/${IMAGE_NAME}:${env.GIT_COMMIT_SHORT}"
  99. }
  100. failure {
  101. echo '❌ Pipeline fallita'
  102. }
  103. }
  104. }