From 532a66fc17cf3a6a74ca844d21acf8efba04680b Mon Sep 17 00:00:00 2001
From: Anthony Graignic <anthony.graignic@uca.fr>
Date: Thu, 11 Jan 2024 11:51:28 +0100
Subject: [PATCH] Add docker build to release

---
 .gitlab-ci.yml | 45 +++++++++++++++++++++++++++++++++------------
 1 file changed, 33 insertions(+), 12 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index c8aff2d..b3739ed 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -46,22 +46,39 @@ package-docker:
       exists:
         - Dockerfile
 
-release-build-windows:
+# release-build-windows:
+#   stage: release-build
+#   script:
+#     - cargo build --target x86_64-pc-windows-gnu --release
+#     - |
+#       curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file "target/x86_64-pc-windows-gnu/release/testnet-injector.exe" "${PACKAGE_REGISTRY_URL}/${CI_COMMIT_TAG}/win-x86_64/testnet-injector.exe"
+#   rules:
+#     - if: "$CI_COMMIT_TAG && $CI_COMMIT_TAG =~ /^v/"
+#       when: always
+
+release-build-linux:
   stage: release-build
   script:
-    - cargo build --target x86_64-pc-windows-gnu --release
+    - cargo build --target x86_64-unknown-linux-gnu --release
     - |
-      curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file "target/x86_64-pc-windows-gnu/release/testnet-injector.exe" "${PACKAGE_REGISTRY_URL}/${CI_COMMIT_TAG}/win-x86_64/testnet-injector.exe"
+      curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file "target/x86_64-unknown-linux-gnu/release/testnet-injector" "${PACKAGE_REGISTRY_URL}/${CI_COMMIT_TAG}/linux-x86_64/testnet-injector"
   rules:
     - if: "$CI_COMMIT_TAG && $CI_COMMIT_TAG =~ /^v/"
       when: always
 
-release-build-linux:
+release-docker:
   stage: release-build
+  image: docker:latest
+  before_script:
+    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
+  variables:
+    CONTAINER_COMMIT_IMAGE: "${CI_REGISTRY_IMAGE}:${CI_COMMIT_REF_SLUG}"
+    CONTAINER_RELEASE_IMAGE: "${CI_REGISTRY_IMAGE}:${CI_COMMIT_TAG}"
   script:
-    - cargo build --target x86_64-unknown-linux-gnu --release
-    - |
-      curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file "target/x86_64-unknown-linux-gnu/release/testnet-injector" "${PACKAGE_REGISTRY_URL}/${CI_COMMIT_TAG}/linux-x86_64/testnet-injector"
+    - echo "Building docker image... (CONTAINER_COMMIT_IMAGE = ${CONTAINER_COMMIT_IMAGE}, CONTAINER_RELEASE_IMAGE = ${CONTAINER_RELEASE_IMAGE})"
+    - docker build --pull -t $CONTAINER_COMMIT_IMAGE .
+    - docker tag $CONTAINER_COMMIT_IMAGE $CONTAINER_RELEASE_IMAGE
+    - docker push $CONTAINER_RELEASE_IMAGE
   rules:
     - if: "$CI_COMMIT_TAG && $CI_COMMIT_TAG =~ /^v/"
       when: always
@@ -71,21 +88,25 @@ release:
   image: registry.gitlab.com/gitlab-org/release-cli:latest
   variables:
     LINUX_ASSET_LINK: '{"name":"testnet-injector-linux-86_64-${CI_COMMIT_TAG}","url":"${PACKAGE_REGISTRY_URL}/${CI_COMMIT_TAG}/linux-x86_64/testnet-injector","type":"package"}'
-    WIN_ASSET_LINK: '{"name":"testnet-injector-win-86_64-${CI_COMMIT_TAG}","url":"${PACKAGE_REGISTRY_URL}/${CI_COMMIT_TAG}/win-x86_64/testnet-injector.exe","type":"package"}'
+    # WIN_ASSET_LINK: '{"name":"testnet-injector-win-86_64-${CI_COMMIT_TAG}","url":"${PACKAGE_REGISTRY_URL}/${CI_COMMIT_TAG}/win-x86_64/testnet-injector.exe","type":"package"}'
+    DOCKER_ASSET_LINK: '{"name":"testnet-injector:${CI_COMMIT_TAG}","url":"${CI_PROJECT_URL}/container_registry","type":"image"}'
   script:
     - echo "Releasing..."
     - echo "Tag = ${CI_COMMIT_TAG}"
     - echo "URL = ${PACKAGE_REGISTRY_URL}/${CI_COMMIT_TAG}"
     - echo "LINUX = ${LINUX_ASSET_LINK}"
-    - echo "WIN = ${WIN_ASSET_LINK}"
+    # - echo "WIN = ${WIN_ASSET_LINK}"
+    - echo "DOCKER = ${DOCKER_ASSET_LINK}"
     - |
-      release-cli --debug create --name "Release ${CI_COMMIT_TAG}" --tag-name "${CI_COMMIT_TAG}" --assets-link "${LINUX_ASSET_LINK}" --assets-link "${WIN_ASSET_LINK}"
+      release-cli --debug create --name "Release ${CI_COMMIT_TAG}" --tag-name "${CI_COMMIT_TAG}" --assets-link "${LINUX_ASSET_LINK}" --assets-link "${DOCKER_ASSET_LINK}"
     - echo "Done!"
   needs:
-    - job: release-build-windows
-      artifacts: true
+    # - job: release-build-windows
+    #   artifacts: true
     - job: release-build-linux
       artifacts: true
+    - job: release-docker
+      artifacts: true
   rules:
     - if: "$CI_COMMIT_TAG && $CI_COMMIT_TAG =~ /^v/"
       when: always
-- 
GitLab