From 110920ccd4ba271e9bc6d82c5eda5845001a8b1b Mon Sep 17 00:00:00 2001
From: SofianeLasri <alasri250@gmail.com>
Date: Wed, 12 Feb 2025 21:37:21 +0100
Subject: [PATCH] feat: add GitLab CI configuration for build and release
 stages

---
 .gitlab-ci.yml | 45 +++++++++++++++++++++++++++++++++++++++++++++
 pom.xml        |  1 +
 2 files changed, 46 insertions(+)
 create mode 100644 .gitlab-ci.yml

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000..a576eab
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,45 @@
+stages:
+  - build
+  - release
+
+variables:
+  MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version"
+  DATE_FORMAT: "%Y%m%d-%H%M%S"
+
+build:
+  stage: build
+  image: maven:3.8.7-openjdk-21
+  script:
+    - mvn $MAVEN_CLI_OPTS clean package
+    - BUILD_DATE=$(date -u +${DATE_FORMAT})
+    - JAR_NAME="PrivateServerPlugin-${BUILD_DATE}.jar"
+    - mv target/PrivateServerPlugin.jar "${JAR_NAME}"
+    - echo "BUILD_DATE=${BUILD_DATE}" > build.env
+    - echo "JAR_NAME=${JAR_NAME}" >> build.env
+  artifacts:
+    paths:
+      - "${JAR_NAME}"
+      - build.env
+    expire_in: 1 week
+  rules:
+    - if: $CI_COMMIT_BRANCH == "master"
+
+release:
+  stage: release
+  image: registry.gitlab.com/gitlab-org/release-cli:latest
+  needs:
+    - job: build
+      artifacts: true
+  script:
+    - source build.env
+    - echo "Release ${JAR_NAME} created at ${BUILD_DATE}"
+  release:
+    name: "Release ${BUILD_DATE}"
+    tag_name: "release-${BUILD_DATE}"
+    description: "Version compilée le ${BUILD_DATE} (commit ${CI_COMMIT_SHORT_SHA})"
+    assets:
+      links:
+        - name: "${JAR_NAME}"
+          url: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/jobs/${CI_JOB_ID}/artifacts/${JAR_NAME}"
+  rules:
+    - if: $CI_COMMIT_BRANCH == "master"
diff --git a/pom.xml b/pom.xml
index fb2a1b9..8e2a1e5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -18,6 +18,7 @@
 
     <build>
         <defaultGoal>clean package</defaultGoal>
+        <finalName>PrivateServerPlugin</finalName>
         <plugins>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
-- 
GitLab