From 5d6ae31ee9ebf791f6fb54ff31580cef9eca24fe Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr> Date: Wed, 13 Sep 2023 09:37:49 +0200 Subject: [PATCH] ci: Refactoring CI pipeline. --- .gitlab-ci.yml | 286 ++++++++++++++++++++++++++++++-------------- packages/pamhyr.nsi | 6 +- 2 files changed, 197 insertions(+), 95 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 150f5c0a..8049808b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -15,96 +15,55 @@ # along with this program. If not, see <https://www.gnu.org/licenses/>. stages: + - downloads - build - test - package - release -######### -# BUILD # -######### +############# +# DOWNLOADS # +############# -build-mage-linux: - stage: build +dl-mage-linux: + stage: downloads tags: - linux rules: - - if: $CI_COMMIT_BRANCH == 'master' || $CI_COMMIT_TAG + - if: $CI_COMMIT_BRANCH == 'ci-test' || $CI_COMMIT_BRANCH == 'master' || $CI_COMMIT_TAG script: - curl -L -o mage.tgz https://gitlab.irstea.fr/jean-baptiste.faure/mage/-/releases/Test6/downloads/packages/mage_linux.tgz - - mkdir -p mage - - cd mage + - mkdir -p mage-linux + - cd mage-linux - tar xvf ../mage.tgz artifacts: paths: - - mage/mage - - mage/mage_extraire - - mage/mailleurPF - -# build-mage-linux: -# stage: build -# tags: -# - linux -# rules: -# - if: $CI_COMMIT_BRANCH == 'master' || $CI_COMMIT_TAG -# variables: -# GIT_SUBMODULE_STRATEGY: recursive -# GIT_SUBMODULE_DEPTH: 20 -# script: -# - cd mage/src/ -# - mkdir -p build -# - cd build -# - cmake .. -# - make -# artifacts: -# paths: -# - mage/src/build/mage -# - mage/src/build/mage_extraire -# - mage/src/build/mailleurPF - -build-mage-windows: - stage: build + - mage-linux/mage + - mage-linux/mage_extraire + - mage-linux/mailleurPF + +dl-mage-windows: + stage: downloads tags: - linux rules: - - if: $CI_COMMIT_BRANCH == 'master' || $CI_COMMIT_TAG + - if: $CI_COMMIT_BRANCH == 'ci-test' || $CI_COMMIT_BRANCH == 'master' || $CI_COMMIT_TAG script: - curl -L -o mage.tgz https://gitlab.irstea.fr/jean-baptiste.faure/mage/-/releases/Test6/downloads/packages/mage_windows.tgz - - mkdir -p mage - - cd mage + - mkdir -p mage-windows + - cd mage-windows - tar xvf ../mage.tgz artifacts: paths: - - mage/mage.exe - - mage/mage_extraire.exe - - mage/mailleurPF.exe - -# build-mage-windows: -# stage: build -# tags: -# - wine -# rules: -# - if: $CI_COMMIT_BRANCH == 'master' || $CI_COMMIT_TAG -# variables: -# GIT_SUBMODULE_STRATEGY: recursive -# GIT_SUBMODULE_DEPTH: 20 -# script: -# - cd mage/src/ -# - sed s/add_compile_definitions(win)/add_compile_definitions(windows)/ CMakeLists.txt > __tmp__ -# - echo set(CMAKE_Fortran_COMPILER "C:/Program\ Files/gcc/bin/gfortran.exe") > CMakeLists.txt -# - echo set(CMAKE_MAKE_PROGRAM "C:/Program Files\ \(x86\)/GnuWin32/bin/make.exe") >> CMakeLists.txt -# - type __tmp__ >> CMakeLists.txt -# - mkdir build -# - cd build -# - cmake -G "MinGW Makefiles" .. -# - make -# artifacts: -# paths: -# - mage/src/build/mage.exe -# - mage/src/build/mage_extraire.exe -# - mage/src/build/mailleurPF.exe - -build: + - mage-windows/mage.exe + - mage-windows/mage_extraire.exe + - mage-windows/mailleurPF.exe + +######### +# BUILD # +######### + +set-version: stage: build tags: - linux @@ -126,6 +85,38 @@ build-lang: paths: - src/lang/*.qm +build-linux: + stage: build + tags: + - linux + script: + - mkdir -p linux + - cd linux + # Setup virtual env + - python3 -m venv linux-venv + - . linux-venv/bin/activate + - pip3 install -r ../requirements.txt + # Run Pyinstaller + - pyinstaller -y --paths linux-venv/lib/python3.8/site-packages ../src/pamhyr.py + artifacts: + paths: + - linux/dist/pamhyr + +build-windows: + stage: build + tags: + - wine + script: + - mkdir windows + - cd windows + # Setup env + - python -m pip install -r ..\requirements.txt + # Run Pyinstaller + - pyinstaller -y ../src/pamhyr.py + artifacts: + paths: + - windows/dist/pamhyr + ######### # TESTS # ######### @@ -139,47 +130,151 @@ test: # PACKAGES # ############ -linux-package: +linux-package-dir: stage: package tags: - release - linux needs: + - job: dl-mage-linux + artifacts: true + - job: set-version + artifacts: true - job: build-lang artifacts: true - - job: build + - job: build-linux artifacts: true - - job: build-mage-linux + rules: + - if: $CI_COMMIT_BRANCH == 'ci-test' || $CI_COMMIT_BRANCH == 'master' || $CI_COMMIT_TAG + artifacts: + paths: + - linux/pamhyr + script: + - cd linux + - mkdir -p pamhyr + # Copy Pamhyr info + - cp -v ../VERSION pamhyr/ + - cp -v ../AUTHORS pamhyr/ + - cp -v ../LICENSE pamhyr/ + # Copy mage + - mkdir -p pamhyr/mage + - cp -v ../mage-linux/* pamhyr/mage/ + # Copy Pamhyr + - cp -r ../dist/pamhyr pamhyr/ + # Copy Pamhyr resources + - mkdir -p pamhyr/pamhyr/View + - mkdir -p pamhyr/pamhyr/View/ui + - mkdir -p pamhyr/pamhyr/View/ui/Widgets + - cp -r ../src/View/ui/*.ui pamhyr/pamhyr/View/ui/ + - cp -r ../src/View/ui/ressources/ pamhyr/pamhyr/View/ui + - cp -r ../src/View/ui/Widgets/*.ui pamhyr/pamhyr/View/ui/Widgets + # Copy lang + - mkdir -p pamhyr/pamhyr/lang + - cp -r ../src/lang/*.qm pamhyr/pamhyr/lang + # Copy tests cases + - mkdir -p pamhyr/tests_cases/ + - mkdir -p pamhyr/tests_cases/Saar + - cp ../tests_cases/Saar/Saar.pamhyr pamhyr/tests_cases/Saar/ + +linux-package-tar: + stage: package + tags: + - release + - linux + needs: + - job: linux-package-dir artifacts: true rules: - - if: $CI_COMMIT_BRANCH == 'master' || $CI_COMMIT_TAG + - if: $CI_COMMIT_BRANCH == 'ci-test' || $CI_COMMIT_BRANCH == 'master' || $CI_COMMIT_TAG artifacts: paths: - - packages/pamhyr-gnulinux-amd64.tar.xz + - linux/pamhyr-gnulinux.tar.xz script: - - cd packages - - ./linux.sh + - cd linux + - tar --xz -cf pamhyr-gnulinux.tar.xz ./pamhyr --checkpoint=.100 -windows-package: +windows-package-dir: stage: package tags: - release - wine needs: + - job: dl-mage-windows + artifacts: true + - job: set-version + artifacts: true - job: build-lang artifacts: true - - job: build + - job: build-windows + artifacts: true + rules: + - if: $CI_COMMIT_BRANCH == 'ci-test' || $CI_COMMIT_BRANCH == 'master' || $CI_COMMIT_TAG + artifacts: + paths: + - windows/pamhyr + script: + - cd windows + - mkdir pamhyr + # Copy Pamhyr info + - copy /y ..\VERSION pamhyr\ + - copy /y ..\AUTHORS pamhyr\ + - copy /y ..\LICENSE pamhyr\ + # Copy mage + - mkdir pamhyr\mage + - copy /y ..\mage-linux\* pamhyr\mage\ + # Copy Pamhyr + - mkdir pamhyr\pamhyr + - copy /y ..\dist\pamhyr pamhyr\ + # Copy Pamhyr resources + - mkdir pamhyr\pamhyr\View + - mkdir pamhyr\pamhyr\View\ui + - mkdir pamhyr\pamhyr\View\ui\Widgets + - copy /y ..\src\View\ui\*.ui pamhyr\pamhyr\View\ui\ + - copy /y ..\src\View\ui\ressources\ pamhyr\pamhyr\View\ui + - copy /y ..\src\View\ui\Widgets\*.ui pamhyr\pamhyr\View\ui\Widgets + # Copy lang + - mkdir pamhyr\pamhyr\lang + - copy /y ..\src\lang\*.qm pamhyr\pamhyr\lang + # Copy tests cases + - mkdir pamhyr\tests_cases\ + - mkdir pamhyr\tests_cases\Saar + - copy ..\tests_cases\Saar\Saar.pamhyr pamhyr\tests_cases\Saar\ + +windows-package-zip: + stage: package + tags: + - release + - linux + needs: + - job: windows-package-dir artifacts: true - - job: build-mage-windows + rules: + - if: $CI_COMMIT_BRANCH == 'ci-test' || $CI_COMMIT_BRANCH == 'master' || $CI_COMMIT_TAG + artifacts: + paths: + - windows/pamhyr-windows.zip + script: + - cd windows + - zip -r pamhyr-windows.zip pamhyr + +windows-package-exe: + stage: package + tags: + - release + - wine + needs: + - job: windows-package-dir artifacts: true rules: - - if: $CI_COMMIT_BRANCH == 'master' || $CI_COMMIT_TAG + - if: $CI_COMMIT_BRANCH == 'ci-test' || $CI_COMMIT_BRANCH == 'master' || $CI_COMMIT_TAG artifacts: paths: - - packages/pamhyr-win-amd64.exe + - windows/pamhyr-windows.exe script: - - cd packages - - ./windows.bat + - cd windows + - copy /y ..\packages\make-windows-exe.bat make-windows-exe.bat + - copy /y ..\packages\pamhyr.nsi pamhyr.nsi + - .\make-windows-exe.bat ########### # RELEASE # @@ -191,16 +286,19 @@ tag-release: - release - linux needs: - - job: linux-package + - job: linux-package-tar artifacts: true - - job: windows-package + - job: windows-package-zip + artifacts: true + - job: windows-package-exe artifacts: true rules: - if: $CI_COMMIT_TAG artifacts: paths: - - packages/pamhyr-gnulinux-amd64.tar.xz - - packages/pamhyr-win-amd64.exe + - linux/pamhyr-gnulinux.tar.xz + - packages/pamhyr-windows.zip + - packages/pamhyr-windows.exe script: - cd packages release: @@ -210,11 +308,15 @@ tag-release: ref: '$CI_COMMIT_SHA' assets: links: - - name: 'GNU/Linux amd64 (tar.xz)' - url: '${CI_PROJECT_URL}/-/jobs/${CI_JOB_ID}/artifacts/raw/packages/pamhyr-gnulinux-amd64.tar.xz' - filepath: '/packages/pamhyr-gnulinux-amd64.tar.xz' + - name: 'GNU/Linux (tar.xz)' + url: '${CI_PROJECT_URL}/-/jobs/${CI_JOB_ID}/artifacts/raw/packages/pamhyr-gnulinux.tar.xz' + filepath: '/linux/pamhyr-gnulinux.tar.xz' + link_type: 'package' + - name: 'Windows (exe)' + url: '${CI_PROJECT_URL}/-/jobs/${CI_JOB_ID}/artifacts/raw/packages/pamhyr-windows.exe' + filepath: '/windows/pamhyr-windows.exe' link_type: 'package' - - name: 'Windows amd64 (exe)' - url: '${CI_PROJECT_URL}/-/jobs/${CI_JOB_ID}/artifacts/raw/packages/pamhyr-win-amd64.exe' - filepath: '/packages/pamhyr-win-amd64.exe' + - name: 'Windows (zip)' + url: '${CI_PROJECT_URL}/-/jobs/${CI_JOB_ID}/artifacts/raw/packages/pamhyr-windows.zip' + filepath: '/windows/pamhyr-windows.zip' link_type: 'package' diff --git a/packages/pamhyr.nsi b/packages/pamhyr.nsi index ccd25a76..0d71ccd0 100644 --- a/packages/pamhyr.nsi +++ b/packages/pamhyr.nsi @@ -5,7 +5,7 @@ Name "PAMHYR" OutFile "pamhyr-win-amd64.exe" -LicenseData "..\LICENSE" +LicenseData "pamhyr\LICENSE" LicenseText "I Agree" RequestExecutionLevel admin @@ -28,7 +28,7 @@ Section "PAMHYR" SetOutPath $INSTDIR - File /r "dist\pamhyr\*" + File /r "pamhyr\*" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\PAMHYR" "DisplayName" "NSIS PAMHYR" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\PAMHYR" "UninstallString" "$INSTDIR\uninstall.exe" @@ -42,7 +42,7 @@ Section "Start Menu Shortcuts" CreateDirectory "$SMPROGRAMS\PAMHYR" CreateShortcut "$SMPROGRAMS\PAMHYR\Uninstall.lnk" "$INSTDIR\uninstall.exe" - CreateShortcut "$SMPROGRAMS\PAMHYR\PAMHYR.lnk" "$INSTDIR\pamhyr.exe" + CreateShortcut "$SMPROGRAMS\PAMHYR\PAMHYR.lnk" "$INSTDIR\pamhyr\pamhyr.exe" SectionEnd -- GitLab