Select Git revision
release.nix
release.nix 2.46 KiB
{pkgs', ...}: let
bashFktScript = import ./bash-fkt.nix {
inherit pkgs';
};
updateChangelogScript = import ./update-changelog.nix {
inherit pkgs';
};
in
pkgs'.writeShellScriptBin "release" ''
source ${pkgs'.common}/bin/common
${bashFktScript}
echo_header "Release "
if [ -z "$CI_REPOSITORY_URL" ]; then
echo_fail "Error: CI_REPOSITORY_URL environment variable is not set."
exit 1
fi
if [ -z "$CI_PROJECT_DIR" ]; then
echo_fail "Error: CI_PROJECT_DIR environment variable is not set."
exit 1
fi
cd $CI_PROJECT_DIR || exit 1
${pkgs'.git}/bin/git remote set-url origin https://''${CI_REPOSITORY_URL#*@}
${pkgs'.git}/bin/git fetch --all --tags --unshallow
${pkgs'.git}/bin/git reset --hard origin/master
${pkgs'.git}/bin/git clean -fd
${pkgs'.git}/bin/git checkout $CI_COMMIT_REF_NAME
${pkgs'.git}/bin/git pull origin $CI_COMMIT_REF_NAME
if ! ${pkgs'.git}/bin/git --no-pager log --decorate=short --pretty=oneline -n 30
then
echo_fail "Error: Could not get git log."
exit 1
fi
${pkgs'.git}/bin/git fetch --prune --prune-tags
echo_step "Bumping version"
gitVersion=$(${pkgs'.version}/bin/version predict --exit-code-if-no-bump)
if [ -z "$gitVersion" ]; then
echo_ok "There is no version bump."
echo_ok "done"
exit 0
fi
echo_step "Write project version"
export VERSION=$gitVersion
export COMMIT="$CI_COMMIT_SHA"
export NAME=$(basename $(pwd) | sed 's/./\U&/' | sed 's/-//g')
export MNEMONIC=$(echo $NAME | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]//g')
${pkgs'.envsubst}/bin/envsubst < ./nix/config/release.nix.template > ./nix/config/release.nix
${pkgs'.nodejs_22}/bin/npm version "$gitVersion"
${pkgs'.git}/bin/git tag -a $gitVersion -m"chore: bump version to $gitVersion"
${updateChangelogScript}/bin/update-changelog
cd $CI_PROJECT_DIR || exit 1
${pkgs'.git}/bin/git tag -d "$gitVersion"
${pkgs'.git}/bin/git commit -m "chore: release $gitVersion" CHANGELOG.md ./nix/config/release.nix package.json