From 6bf4f499a9ff9004f23a4c8157228f2d9cf1b7b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Minelli?= <michael@minelli.me> Date: Thu, 18 Jan 2024 23:44:25 +0100 Subject: [PATCH] CI/CD => Add version to binary name (like dojo_3.4.0.deb) --- NodeApp/.gitlab-ci/01_functions.yml | 20 ++++++++++++++------ NodeApp/.gitlab-ci/02_templates.yml | 19 +++++++++++-------- NodeApp/.gitlab-ci/05_stageTest.yml | 1 + NodeApp/.gitlab-ci/06_stageBuild.yml | 2 ++ NodeApp/.gitlab-ci/08_stageClean.yml | 4 ++++ NodeApp/.gitlab-ci/09_stageUpload.yml | 2 ++ NodeApp/.gitlab-ci/10_stageRelease.yml | 4 ++++ 7 files changed, 38 insertions(+), 14 deletions(-) diff --git a/NodeApp/.gitlab-ci/01_functions.yml b/NodeApp/.gitlab-ci/01_functions.yml index 028f666..94513b8 100644 --- a/NodeApp/.gitlab-ci/01_functions.yml +++ b/NodeApp/.gitlab-ci/01_functions.yml @@ -2,7 +2,7 @@ script: - !reference [ .get_vars, script ] - + .get_vars: script: - IS_DEV=$([[ $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH && $CI_COMMIT_BRANCH != "test" ]] && echo true || echo false) @@ -12,6 +12,19 @@ BIN_NAME="dojo-test" DOTENV_PROD_KEY=$DOTENV_TEST_KEY fi + + +.get_version: + script: + - VERSION=$(jq -r .version $PROJECT_FOLDER/package.json)$([[ $IS_TEST == true ]] && echo $VERSION_TEST_SUFFIX || echo '' )$([[ $IS_DEV == true ]] && echo $VERSION_DEV_SUFFIX || echo '') + + +# Require that the VERSION env var is set +.get_version_dependent_vars: + script: + - BIN_NAME_BASE="${BIN_NAME}" + - BIN_NAME="${BIN_NAME_BASE}+${VERSION}" + - PKG_BIN_NAME_DEBIAN="${BIN_NAME}${PKG_EXTENSION_DEBIAN}" - PKG_BIN_NAME_MACOS="${BIN_NAME}${PKG_EXTENSION_MACOS}" - BIN_NAME_WINDOWS="${BIN_NAME}${BIN_EXTENSION_WINDOWS}" @@ -31,11 +44,6 @@ - PACKAGE_REGISTRY_URL="${GITLAB_API_PROJECT_URL}/packages/generic/${BIN_NAME}" -.get_version: - script: - - VERSION=$(jq -r .version $PROJECT_FOLDER/package.json)$([[ $IS_TEST == true ]] && echo $VERSION_TEST_SUFFIX || echo '' )$([[ $IS_DEV == true ]] && echo $VERSION_DEV_SUFFIX || echo '') - - .get_last_stable_version: script: # Get all releases of the project diff --git a/NodeApp/.gitlab-ci/02_templates.yml b/NodeApp/.gitlab-ci/02_templates.yml index 8bf24a6..41ca52f 100644 --- a/NodeApp/.gitlab-ci/02_templates.yml +++ b/NodeApp/.gitlab-ci/02_templates.yml @@ -12,16 +12,17 @@ # Get vars - !reference [ .get_version, script ] + - !reference [ .get_version_dependent_vars, script ] - !reference [ .get_last_stable_version, script ] - cd $BIN_FOLDER_DEBIAN_PKG_AND_SIGN - - PKG_BUILD_FOLDER_NAME="${BIN_NAME}_${VERSION}_${ARCH}" + - PKG_BUILD_FOLDER_NAME="${BIN_NAME_BASE}_${VERSION}_${ARCH}" # Pkg tree creation - mkdir -p "${PKG_BUILD_FOLDER_NAME}/usr/local/bin/" ## Copy binary - - cp -R ${BIN_NAME} "${PKG_BUILD_FOLDER_NAME}/usr/local/bin/" + - cp -R ${BIN_NAME} "${PKG_BUILD_FOLDER_NAME}/usr/local/bin/${BIN_NAME_BASE}" ## Copy debian folder with package definition files - cp -R "${RESOURCES_FOLDER}/Debian/pkg/DEBIAN" "${PKG_BUILD_FOLDER_NAME}" @@ -30,18 +31,18 @@ ## control file - sed -i -r "s%\{\{VERSION\}\}%${VERSION}%g" control - sed -i -r "s%\{\{ARCH\}\}%${ARCH}%g" control - - sed -i -r "s%\{\{BIN_NAME\}\}%${BIN_NAME}%g" control + - sed -i -r "s%\{\{BIN_NAME\}\}%${BIN_NAME_BASE}%g" control ## changelog file - STABILITY=$([[ $IS_DEV == true ]] && echo 'unstable' || echo 'stable') - PRIORITY=$([[ ${VERSION%.*} == ${LAST_STABLE_VERSION%.*} ]] && echo 'medium' || echo 'high') - sed -i -r "s%\{\{VERSION\}\}%${VERSION}%g" changelog - - sed -i -r "s%\{\{BIN_NAME\}\}%${BIN_NAME}%g" changelog + - sed -i -r "s%\{\{BIN_NAME\}\}%${BIN_NAME_BASE}%g" changelog - sed -i -r "s%\{\{DATE\}\}%$(date -R)%g" changelog - sed -i -r "s%\{\{URL\}\}%${CI_PROJECT_URL}%g" changelog - sed -i -r "s%\{\{STABILITY\}\}%${STABILITY}%g" changelog - sed -i -r "s%\{\{PRIORITY\}\}%${PRIORITY}%g" changelog ## copyright file - - sed -i -r "s%\{\{BIN_NAME\}\}%${BIN_NAME}%g" copyright + - sed -i -r "s%\{\{BIN_NAME\}\}%${BIN_NAME_BASE}%g" copyright ## return to bin folder - cd $BIN_FOLDER_DEBIAN_PKG_AND_SIGN @@ -66,6 +67,8 @@ - build:version script: - VERSION=$(cat $VERSION_FILE) + - !reference [ .get_version_dependent_vars, script ] + - security unlock-keychain -p $SIGN_KEYCHAIN_PASSWORD $SIGN_LOGIN_KEYCHAIN_PATH - cd $BIN_FOLDER_MACOS_PKG_AND_SIGN @@ -75,13 +78,13 @@ # Package and notarize the app - xcrun notarytool store-credentials --apple-id $SIGN_APPLE_ID --team-id $SIGN_TEAM_ID --password $SIGN_APP_PASSWORD --keychain $SIGN_LOGIN_KEYCHAIN_PATH $SIGN_KEYCHAIN_PROFILE - - ditto ${BIN_NAME} ${BIN_NAME}_pkg/usr/local/bin/ - - productbuild --identifier $SIGN_IDENTIFIER --version $VERSION --sign $SIGN_DEV_ID_INST --keychain $SIGN_LOGIN_KEYCHAIN_PATH --timestamp --root ${BIN_NAME}_pkg / ${PKG_BIN_NAME_MACOS} + - ditto ${BIN_NAME} ${BIN_NAME_BASE}_pkg/usr/local/bin/${BIN_NAME_BASE} + - productbuild --identifier $SIGN_IDENTIFIER --version $VERSION --sign $SIGN_DEV_ID_INST --keychain $SIGN_LOGIN_KEYCHAIN_PATH --timestamp --root ${BIN_NAME_BASE}_pkg / ${PKG_BIN_NAME_MACOS} - xcrun notarytool submit ${BIN_NAME}.pkg --keychain $SIGN_LOGIN_KEYCHAIN_PATH --keychain-profile $SIGN_KEYCHAIN_PROFILE --wait - xcrun stapler staple ${BIN_NAME}.pkg # Clean folder - - rm -Rf ${BIN_NAME}_pkg + - rm -Rf ${BIN_NAME_BASE}_pkg artifacts: paths: - $ARTIFACTS_FOLDER/* diff --git a/NodeApp/.gitlab-ci/05_stageTest.yml b/NodeApp/.gitlab-ci/05_stageTest.yml index 4ad14ed..914033e 100644 --- a/NodeApp/.gitlab-ci/05_stageTest.yml +++ b/NodeApp/.gitlab-ci/05_stageTest.yml @@ -7,6 +7,7 @@ test:build: - apt update - apt install -y jq - !reference [ .get_version, script ] + - !reference [ .get_version_dependent_vars, script ] # Build - !reference [ .build_cli, script ] diff --git a/NodeApp/.gitlab-ci/06_stageBuild.yml b/NodeApp/.gitlab-ci/06_stageBuild.yml index 99e3dcf..f1aeaa2 100644 --- a/NodeApp/.gitlab-ci/06_stageBuild.yml +++ b/NodeApp/.gitlab-ci/06_stageBuild.yml @@ -7,6 +7,8 @@ build:version: - apt update - apt install -y jq - !reference [ .get_version, script ] + - !reference [ .get_version_dependent_vars, script ] + - mkdir -p $ARTIFACTS_FOLDER - echo $VERSION > $VERSION_FILE diff --git a/NodeApp/.gitlab-ci/08_stageClean.yml b/NodeApp/.gitlab-ci/08_stageClean.yml index b1becbf..0885aa1 100644 --- a/NodeApp/.gitlab-ci/08_stageClean.yml +++ b/NodeApp/.gitlab-ci/08_stageClean.yml @@ -5,6 +5,7 @@ clean:release: image: registry.gitlab.com/gitlab-ci-utils/curl-jq:latest script: - !reference [ .get_version, script ] + - !reference [ .get_version_dependent_vars, script ] - !reference [ .clean_release, script ] rules: - if: '$CI_COMMIT_REF_PROTECTED == "true"' @@ -17,6 +18,7 @@ clean:packages: image: registry.gitlab.com/gitlab-ci-utils/curl-jq:latest script: - !reference [ .get_version, script ] + - !reference [ .get_version_dependent_vars, script ] - !reference [ .clean_packages, script ] rules: - if: '$CI_COMMIT_REF_PROTECTED == "true"' @@ -30,6 +32,7 @@ clean:dev:release: script: - !reference [ .get_version, script ] - VERSION="${VERSION}${VERSION_DEV_SUFFIX}" + - !reference [ .get_version_dependent_vars, script ] - !reference [ .clean_release, script ] rules: - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' @@ -43,6 +46,7 @@ clean:dev:packages: script: - !reference [ .get_version, script ] - VERSION="${VERSION}${VERSION_DEV_SUFFIX}" + - !reference [ .get_version_dependent_vars, script ] - !reference [ .clean_packages, script ] rules: - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' diff --git a/NodeApp/.gitlab-ci/09_stageUpload.yml b/NodeApp/.gitlab-ci/09_stageUpload.yml index 9ebb3fd..19b77df 100644 --- a/NodeApp/.gitlab-ci/09_stageUpload.yml +++ b/NodeApp/.gitlab-ci/09_stageUpload.yml @@ -8,6 +8,7 @@ upload:packages: image: registry.gitlab.com/gitlab-ci-utils/curl-jq:latest script: - !reference [ .get_version, script ] + - !reference [ .get_version_dependent_vars, script ] - !reference [ .get_packages_url, script ] # macOS @@ -40,6 +41,7 @@ upload:packages:wiki: - apk add xz - !reference [ .get_version, script ] + - !reference [ .get_version_dependent_vars, script ] - !reference [ .get_packages_url, script ] # Create archive diff --git a/NodeApp/.gitlab-ci/10_stageRelease.yml b/NodeApp/.gitlab-ci/10_stageRelease.yml index ab82f3e..d66bb5a 100644 --- a/NodeApp/.gitlab-ci/10_stageRelease.yml +++ b/NodeApp/.gitlab-ci/10_stageRelease.yml @@ -9,6 +9,7 @@ release:wiki: - apk add jq - !reference [ .get_version, script ] + - !reference [ .get_version_dependent_vars, script ] # Define URL for the wiki in terms of project-agnostic predefined variables - WIKI_URL="${CI_SERVER_PROTOCOL}://project_${CI_PROJECT_ID}_bot:${GITLAB_PROJECT_ACCESS_TOKEN}@${CI_SERVER_HOST}:${CI_SERVER_PORT}/${CI_PROJECT_PATH}.wiki.git" @@ -53,6 +54,7 @@ release:gitlab: image: registry.gitlab.com/gitlab-ci-utils/curl-jq:latest script: - !reference [ .get_version, script ] + - !reference [ .get_version_dependent_vars, script ] - RELEASE_NAME=$VERSION - !reference [ .release_gitlab, script ] rules: @@ -66,6 +68,7 @@ release:latest:gitlab: image: registry.gitlab.com/gitlab-ci-utils/curl-jq:latest script: - !reference [ .get_version, script ] + - !reference [ .get_version_dependent_vars, script ] - RELEASE_NAME="Latest" - !reference [ .release_gitlab, script ] rules: @@ -79,6 +82,7 @@ release:pre-alpha:gitlab: image: registry.gitlab.com/gitlab-ci-utils/curl-jq:latest script: - !reference [ .get_version, script ] + - !reference [ .get_version_dependent_vars, script ] - RELEASE_NAME="Pre-alpha" - !reference [ .release_gitlab, script ] rules: -- GitLab