From fbf950143ddf05208f18fb34ba84dacdb7b2b727 Mon Sep 17 00:00:00 2001
From: poka <poka@p2p.legal>
Date: Wed, 31 Jan 2024 15:26:25 +0100
Subject: [PATCH] add release script publishing in CI

from chatGPT
---
 .ci/release_script.sh | 40 ++++++++++++++++++++++++++++++++++++++++
 .gitlab-ci.yml        | 14 +++++++++++++-
 2 files changed, 53 insertions(+), 1 deletion(-)
 create mode 100644 .ci/release_script.sh

diff --git a/.ci/release_script.sh b/.ci/release_script.sh
new file mode 100644
index 0000000..5f3b6d3
--- /dev/null
+++ b/.ci/release_script.sh
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+# stop script if any command fails
+set -e
+
+# Vérifiez si le token d'accès privé GitLab est défini
+if [ -z "$GITLAB_PRIVATE_TOKEN" ]; then
+    echo "Token d'accès privé GitLab non défini. Arrêt du script."
+    exit 1
+fi
+
+if [ -z "$CI_COMMIT_TAG" ]; then
+    echo "This script should only be run on a tag."
+    exit 1
+fi
+
+# Variables
+PROJECT_ID="604"
+RELEASE_NAME="v$CI_COMMIT_TAG"
+RELEASE_DESCRIPTION="Release v$CI_COMMIT_TAG is awesome !"
+ARTIFACT_PATH="target/release/gcli"
+GITLAB_API_URL="https://git.duniter.org/api/v4"
+
+# Création de la release
+echo "Création de la release $RELEASE_NAME..."
+curl --header "PRIVATE-TOKEN: $GITLAB_PRIVATE_TOKEN" \
+     --data "name=$RELEASE_NAME&tag_name=$CI_COMMIT_TAG&description=$RELEASE_DESCRIPTION" \
+     "$GITLAB_API_URL/projects/$PROJECT_ID/releases"
+
+# Construction de l'URL de l'artéfact
+ARTIFACT_URL="$CI_PROJECT_URL/-/jobs/artifacts/$CI_COMMIT_TAG/raw/$ARTIFACT_PATH?job=build"
+
+# Ajout de l'artéfact à la release
+echo "Ajout de l'artéfact à la release..."
+curl --header "PRIVATE-TOKEN: $GITLAB_PRIVATE_TOKEN" \
+     --data-urlencode "url=$ARTIFACT_URL" \
+     --data-urlencode "name=$(basename $ARTIFACT_PATH)" \
+     "$GITLAB_API_URL/projects/$PROJECT_ID/releases/$CI_COMMIT_TAG/assets/links"
+
+echo "Script terminé."
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index fa06a4d..7455338 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -4,6 +4,7 @@ image: "rust:latest"
 
 stages:
   - build
+  - release
 
 build:
   stage: build
@@ -25,4 +26,15 @@ build:
         - target/release
   # only build gcli when adding a tag
   only:
-    - tags
\ No newline at end of file
+    - tags
+
+release:
+  stage: release
+  image: rust
+  script:
+    - chmod +x .ci/release_script.sh
+    - .ci/release_script.sh
+  only:
+    - tags
+  dependencies:
+    - build
-- 
GitLab