summaryrefslogtreecommitdiff
path: root/ping/.gitlab-ci.yml
blob: 299a656e08087568212bc666b1e1ff93ca2e76dc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
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'