Integration GitLab avec l'ecosysteme DevOps 25 min de lecture

Integration Jira, Slack et outils tiers

Integration Jira

# Activer l'integration Jira
# Settings > Integrations > Jira
# URL: https://company.atlassian.net
# Username: jira-bot@company.com
# API token: xxxxx

# Fonctionnalites
# - Mention JIRA-123 dans un commit -> lien automatique
# - Transition automatique des issues Jira
# - Vue des issues Jira dans GitLab

References Jira dans les commits

# Les references sont detectees automatiquement
git commit -m "PROJ-123 Ajouter la validation du formulaire"
git commit -m "Fixes PROJ-456 Corriger le crash au demarrage"
# "Fixes" declenche la transition de l'issue Jira

Integration Slack

# Settings > Integrations > Slack notifications
# Webhook URL: https://hooks.slack.com/services/T.../B.../xxx
# Evenements configurables :
# - Push, Merge request, Pipeline, Deployment
# - Issues, Confidential issues
# - Tags, Notes

# Notification custom dans le pipeline
notify-slack:
  stage: notify
  image: curlimages/curl:latest
  script:
    - |
      curl -X POST -H "Content-type: application/json" \
        --data "{
          \"text\": \"Deploiement $CI_COMMIT_TAG en production reussi\",
          \"channel\": \"#deployments\",
          \"username\": \"GitLab CI\",
          \"icon_emoji\": \":rocket:\"
        }" \
        $SLACK_WEBHOOK_URL
  rules:
    - if: $CI_COMMIT_TAG
      when: on_success

GitLab Container Registry

# Construire et pousser une image
build-image:
  stage: build
  image: docker:24
  services:
    - docker:24-dind
  variables:
    DOCKER_TLS_CERTDIR: "/certs"
  script:
    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
    - docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .
    - docker build -t $CI_REGISTRY_IMAGE:latest .
    - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
    - docker push $CI_REGISTRY_IMAGE:latest

GitLab Package Registry

# Publier un package npm
publish-npm:
  stage: publish
  image: node:20
  script:
    - echo "@company:registry=https://gitlab.example.com/api/v4/projects/$CI_PROJECT_ID/packages/npm/" > .npmrc
    - echo "//gitlab.example.com/api/v4/projects/$CI_PROJECT_ID/packages/npm/:_authToken=$CI_JOB_TOKEN" >> .npmrc
    - npm publish

# Publier un package Maven
publish-maven:
  stage: publish
  image: maven:3.9-eclipse-temurin-21
  script:
    - mvn deploy -s ci_settings.xml
      -DrepositoryId=gitlab-maven
      -Durl="${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/maven"
Ecosysteme complet : GitLab offre Container Registry, Package Registry, Terraform State, et des integrations natives avec Kubernetes, Jira et Slack pour centraliser tout le workflow DevOps.