From 0d56c7dcd4fc04e566942d707abc51e30d2d138b Mon Sep 17 00:00:00 2001 From: "lucas.landrecy" <lucas.landrecy@etu.hesge.ch> Date: Sun, 25 May 2025 09:48:34 +0000 Subject: [PATCH] Update .gitlab-ci.yml file --- .gitlab-ci.yml | 100 +++++++++++++++++++++++++++---------------------- 1 file changed, 55 insertions(+), 45 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 299c9ee..365219d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,45 +1,55 @@ -stages: - - build - - deploy - -variables: - DOCKER_IMAGE: $DOCKER_USERNAME/neo4j-populator - KUBE_NAMESPACE: $KUBE_NAMESPACE - -.default-docker: - image: docker:24.0 - services: - - docker:24.0-dind - before_script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - -build_and_push: - stage: build - extends: .default-docker - script: - - docker build -t $DOCKER_IMAGE:latest . - - docker push $DOCKER_IMAGE:latest - -setup_kubeconfig: - stage: deploy - image: bitnami/kubectl:latest - script: - - mkdir -p ~/.kube - - echo "$KUBECONFIG_CONTENT" > ~/.kube/config - - chmod 600 ~/.kube/config - artifacts: - paths: - - ~/.kube/config - -deploy_to_kubernetes: - stage: deploy - image: bitnami/kubectl:latest - dependencies: - - setup_kubeconfig - script: - - kubectl -n "$KUBE_NAMESPACE" delete -f ./deployment-neo4j.yml --ignore-not-found - - kubectl -n "$KUBE_NAMESPACE" delete -f ./neo4j-service.yml --ignore-not-found - - kubectl -n "$KUBE_NAMESPACE" delete -f ./job-db-populator.yml --ignore-not-found - - kubectl -n "$KUBE_NAMESPACE" apply -f ./deployment-neo4j.yml - - kubectl -n "$KUBE_NAMESPACE" apply -f ./neo4j-service.yml - - kubectl -n "$KUBE_NAMESPACE" apply -f ./job-db-populator.yml +name: CI/CD - Build & Deploy + +on: + push: + branches: + - main + workflow_dispatch: + +jobs: + build-and-deploy: + runs-on: ubuntu-latest + + env: + DOCKER_IMAGE: ${{ secrets.DOCKER_USERNAME }}/neo4j-populator + KUBE_NAMESPACE: ${{ secrets.KUBE_NAMESPACE }} + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Build and push Docker image + uses: docker/build-push-action@v5 + with: + context: . + file: ./Dockerfile + push: true + tags: | + ${{ env.DOCKER_IMAGE }}:latest + ${{ env.DOCKER_IMAGE }}:${{ github.sha }} + + - name: Set up Kubeconfig + run: | + mkdir -p .kube + echo "${{ secrets.KUBECONFIG }}" > .kube/config.yml + + - name: Delete old Kubernetes resources + run: | + kubectl --kubeconfig=.kube/config.yml -n $KUBE_NAMESPACE delete -f ./deployment-neo4j.yml --ignore-not-found + kubectl --kubeconfig=.kube/config.yml -n $KUBE_NAMESPACE delete -f ./neo4j-service.yml --ignore-not-found + kubectl --kubeconfig=.kube/config.yml -n $KUBE_NAMESPACE delete -f ./job-db-populator.yml --ignore-not-found + + - name: Apply new Kubernetes configuration + run: | + kubectl --kubeconfig=.kube/config.yml -n $KUBE_NAMESPACE apply -f ./deployment-neo4j.yml + kubectl --kubeconfig=.kube/config.yml -n $KUBE_NAMESPACE apply -f ./neo4j-service.yml + kubectl --kubeconfig=.kube/config.yml -n $KUBE_NAMESPACE apply -f ./job-db-populator.yml -- GitLab