Jenkinsfile 4.0 KB

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