diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..a576eabdba088cf8770152e118160b6f1dc5bd14
--- /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 fb2a1b9330ca7acb82e91043e42d24301e7b1419..8e2a1e5dfdf3f9a1d7bf72d93925931833b5bf53 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>