summaryrefslogtreecommitdiff
path: root/ping/.gitlab-ci.yml
diff options
context:
space:
mode:
Diffstat (limited to 'ping/.gitlab-ci.yml')
-rw-r--r--ping/.gitlab-ci.yml92
1 files changed, 92 insertions, 0 deletions
diff --git a/ping/.gitlab-ci.yml b/ping/.gitlab-ci.yml
new file mode 100644
index 0000000..299a656
--- /dev/null
+++ b/ping/.gitlab-ci.yml
@@ -0,0 +1,92 @@
+stages:
+ - test
+ - deploy
+
+
+.connect_to_intra_git:
+ image:
+ name: alpine/git:2.47.1
+ entrypoint: [""]
+ environment:
+ name: forge-intra
+ url: https://intra.forge.epita.fr/epita-ing-assistants-yaka/ping-2027/root/ping-2027/ping-backend
+ before_script:
+ - test -n "$GIT_INTRA_REPO_URL"
+ - test -n "$GIT_INTRA_GLOBAL_URL"
+ - test -n "$GIT_DEPLOY_BRANCH"
+ - test -n "$GIT_RUNNER_NAME"
+ - test -n "$GIT_RUNNER_EMAIL"
+
+ - 'command -v ssh-agent >/dev/null || apk add --no-cache openssh'
+ - eval $(ssh-agent -s)
+
+ - chmod 400 "$SSH_PRIVATE_KEY"
+ - ssh-add "$SSH_PRIVATE_KEY"
+
+ - mkdir -p ~/.ssh
+ - chmod 700 ~/.ssh
+
+ - ssh-keyscan -v -H $GIT_INTRA_GLOBAL_URL >> ~/.ssh/known_hosts
+ - chmod 644 ~/.ssh/known_hosts
+
+ - ssh -T git@"$GIT_INTRA_GLOBAL_URL"
+
+ - git config --global user.email "$RUNNER_GIT_EMAIL"
+ - git config --global user.name "$RUNNER_GIT_NAME"
+
+ - git ls-remote --exit-code -h "$GIT_INTRA_REPO_URL" || { [ $? -ne 2 ] && return 1; }
+
+ - git remote | grep 'intra' || git remote add intra "$GIT_INTRA_REPO_URL"
+ - git remote update
+
+
+compilation-job:
+ stage: test
+ image: maven:3.9.9-amazoncorretto-21-alpine
+ rules:
+ - if: $CI_PIPELINE_SOURCE == "merge_request_event"
+ when: always
+ script:
+ - cd ping
+ - mvn quarkus:build
+
+
+push-master-state-to-intra-job:
+ extends: .connect_to_intra_git
+ stage: deploy
+ rules:
+ - if: $CI_COMMIT_BRANCH == "master" && $CI_PIPELINE_SOURCE == "push"
+ when: always
+ script:
+ - git log --all --oneline --graph
+ - git push intra HEAD:"$GIT_DEPLOY_BRANCH"
+
+
+push-to-intra-job:
+ extends: .connect_to_intra_git
+ stage: deploy
+ rules:
+ - if: $CI_COMMIT_TAG != null
+ && ($CI_COMMIT_TAG =~ "/^release.*$/"
+ || $CI_COMMIT_TAG =~ "/^ping-backend-dementor-.*$/"
+ || $CI_COMMIT_TAG =~ "/^ping-backend-submission-.*$/"
+ || $CI_COMMIT_TAG =~ "/^ping-backend-continuous-tag-.*$/")
+ when: always
+ script:
+ - git push intra "$CI_COMMIT_TAG"
+
+
+release-job:
+ stage: deploy
+ image: registry.gitlab.com/gitlab-org/release-cli:latest
+ rules:
+ - if: $CI_COMMIT_TAG != null
+ when: always
+ needs:
+ - job: push-to-intra-job
+ artifacts: false
+ script:
+ - echo "creating a new release for tag $CI_COMMIT_TAG..."
+ release:
+ tag_name: '$CI_COMMIT_TAG'
+ description: '$CI_COMMIT_TAG'