mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2024-10-01 01:26:01 -04:00
Update release tool with new merge strategy
* Fast-forward `latest` tag to merged tag * Don't merge into TARGET_BRANCH * Fix missing argon2 in snapcraft.yml
This commit is contained in:
parent
9e21df2515
commit
1e73d549ed
5
.github/CONTRIBUTING.md
vendored
5
.github/CONTRIBUTING.md
vendored
@ -91,10 +91,11 @@ Please join an existing language team or request a new one if there is none.
|
|||||||
|
|
||||||
The Branch Strategy is based on [git-flow-lite](http://nvie.com/posts/a-successful-git-branching-model/).
|
The Branch Strategy is based on [git-flow-lite](http://nvie.com/posts/a-successful-git-branching-model/).
|
||||||
|
|
||||||
* **master** – points to the latest public release
|
|
||||||
* **develop** – points to the development of the next release, contains tested and reviewed code
|
* **develop** – points to the development of the next release, contains tested and reviewed code
|
||||||
* **feature/**[name] – points to a branch with a new feature, one which is candidate for merge into develop (subject to rebase)
|
* **feature/**[name] – points to a branch with a new feature, one which is candidate for merge into develop (subject to rebase)
|
||||||
* **hotfix/**[name] – points to a branch with a fix for a particular issue ID
|
* **fix/**[name] – points to a branch with a fix for a particular issue ID
|
||||||
|
|
||||||
|
Note: The **latest** tag is used to point to the most recent stable release.
|
||||||
|
|
||||||
|
|
||||||
### Git commit messages
|
### Git commit messages
|
||||||
|
4
.github/pull.yml
vendored
4
.github/pull.yml
vendored
@ -3,10 +3,6 @@
|
|||||||
# pull from: https://github.com/keepassxreboot/keepassxc
|
# pull from: https://github.com/keepassxreboot/keepassxc
|
||||||
version: "1"
|
version: "1"
|
||||||
rules:
|
rules:
|
||||||
- base: master
|
|
||||||
upstream: keepassxreboot:master
|
|
||||||
mergeMethod: hardreset
|
|
||||||
|
|
||||||
- base: develop
|
- base: develop
|
||||||
upstream: keepassxreboot:develop
|
upstream: keepassxreboot:develop
|
||||||
mergeMethod: rebase
|
mergeMethod: rebase
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
## Release 2.7.0 (2022-02-26)
|
## 2.7.0 (2022-03-20)
|
||||||
|
|
||||||
### Major Additions
|
### Major Additions
|
||||||
- Implement KDBX 4.1 [#7114]
|
- Implement KDBX 4.1 [#7114]
|
||||||
|
49
release-tool
49
release-tool
@ -39,7 +39,6 @@ GPG_KEY="CFB4C2166397D0D2"
|
|||||||
GPG_GIT_KEY=""
|
GPG_GIT_KEY=""
|
||||||
OUTPUT_DIR="release"
|
OUTPUT_DIR="release"
|
||||||
SOURCE_BRANCH=""
|
SOURCE_BRANCH=""
|
||||||
TARGET_BRANCH="master"
|
|
||||||
TAG_NAME=""
|
TAG_NAME=""
|
||||||
DOCKER_IMAGE=""
|
DOCKER_IMAGE=""
|
||||||
DOCKER_CONTAINER_NAME="keepassxc-build-container"
|
DOCKER_CONTAINER_NAME="keepassxc-build-container"
|
||||||
@ -98,7 +97,6 @@ Options:
|
|||||||
leave empty to let Git choose your default key
|
leave empty to let Git choose your default key
|
||||||
(default: '${GPG_GIT_KEY}')
|
(default: '${GPG_GIT_KEY}')
|
||||||
-r, --release-branch Source release branch to merge from (default: 'release/VERSION')
|
-r, --release-branch Source release branch to merge from (default: 'release/VERSION')
|
||||||
--target-branch Target branch to merge to (default: '${TARGET_BRANCH}')
|
|
||||||
-t, --tag-name Override release tag name (defaults to version number)
|
-t, --tag-name Override release tag name (defaults to version number)
|
||||||
-h, --help Show this help
|
-h, --help Show this help
|
||||||
EOF
|
EOF
|
||||||
@ -279,7 +277,7 @@ checkGitRepository() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
checkReleaseDoesNotExist() {
|
checkReleaseDoesNotExist() {
|
||||||
if ! git tag | grep -q "^$TAG_NAME$"; then
|
if [ $(git tag -l $TAG_NAME) ]; then
|
||||||
exitError "Release '$RELEASE_NAME' (tag: '$TAG_NAME') already exists!"
|
exitError "Release '$RELEASE_NAME' (tag: '$TAG_NAME') already exists!"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@ -296,12 +294,6 @@ checkSourceBranchExists() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
checkTargetBranchExists() {
|
|
||||||
if ! git rev-parse "$TARGET_BRANCH" > /dev/null 2>&1; then
|
|
||||||
exitError "Target branch '$TARGET_BRANCH' does not exist!"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
checkVersionInCMake() {
|
checkVersionInCMake() {
|
||||||
local app_name_upper="$(echo "$APP_NAME" | tr '[:lower:]' '[:upper:]')"
|
local app_name_upper="$(echo "$APP_NAME" | tr '[:lower:]' '[:upper:]')"
|
||||||
local major_num="$(echo ${RELEASE_NAME} | cut -f1 -d.)"
|
local major_num="$(echo ${RELEASE_NAME} | cut -f1 -d.)"
|
||||||
@ -326,7 +318,7 @@ checkChangeLog() {
|
|||||||
exitError "No CHANGELOG file found!"
|
exitError "No CHANGELOG file found!"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! grep -qzo "## ${RELEASE_NAME} \([0-9]{4}-[0-9]{2}-[0-9]{2}\)\n" CHANGELOG.md; then
|
if ! grep -qEzo "## ${RELEASE_NAME} \([0-9]{4}-[0-9]{2}-[0-9]{2}\)" CHANGELOG.md; then
|
||||||
exitError "'CHANGELOG.md' has not been updated to the '${RELEASE_NAME}' release!"
|
exitError "'CHANGELOG.md' has not been updated to the '${RELEASE_NAME}' release!"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@ -341,17 +333,6 @@ checkAppStreamInfo() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
checkSnapcraft() {
|
|
||||||
if [ ! -f snap/snapcraft.yaml ]; then
|
|
||||||
echo "Could not find snap/snapcraft.yaml!"
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! $GREP -qPzo "KEEPASSXC_BUILD_TYPE=Release" snap/snapcraft.yaml; then
|
|
||||||
exitError "'snapcraft.yaml' is not set for a release build!"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
checkTransifexCommandExists() {
|
checkTransifexCommandExists() {
|
||||||
if ! cmdExists tx; then
|
if ! cmdExists tx; then
|
||||||
exitError "Transifex tool 'tx' not installed! Please install it using 'pip install transifex-client'."
|
exitError "Transifex tool 'tx' not installed! Please install it using 'pip install transifex-client'."
|
||||||
@ -403,7 +384,6 @@ performChecks() {
|
|||||||
checkReleaseDoesNotExist
|
checkReleaseDoesNotExist
|
||||||
checkWorkingTreeClean
|
checkWorkingTreeClean
|
||||||
checkSourceBranchExists
|
checkSourceBranchExists
|
||||||
checkTargetBranchExists
|
|
||||||
|
|
||||||
logInfo "Checking out '${SOURCE_BRANCH}'..."
|
logInfo "Checking out '${SOURCE_BRANCH}'..."
|
||||||
git checkout "$SOURCE_BRANCH" > /dev/null 2>&1
|
git checkout "$SOURCE_BRANCH" > /dev/null 2>&1
|
||||||
@ -413,7 +393,6 @@ performChecks() {
|
|||||||
checkVersionInCMake
|
checkVersionInCMake
|
||||||
checkChangeLog
|
checkChangeLog
|
||||||
checkAppStreamInfo
|
checkAppStreamInfo
|
||||||
checkSnapcraft
|
|
||||||
|
|
||||||
logInfo "\e[1m\e[32mAll checks passed!\e[0m"
|
logInfo "\e[1m\e[32mAll checks passed!\e[0m"
|
||||||
}
|
}
|
||||||
@ -499,10 +478,6 @@ merge() {
|
|||||||
SOURCE_BRANCH="$2"
|
SOURCE_BRANCH="$2"
|
||||||
shift ;;
|
shift ;;
|
||||||
|
|
||||||
--target-branch)
|
|
||||||
TARGET_BRANCH="$2"
|
|
||||||
shift ;;
|
|
||||||
|
|
||||||
-t|--tag-name)
|
-t|--tag-name)
|
||||||
TAG_NAME="$2"
|
TAG_NAME="$2"
|
||||||
shift ;;
|
shift ;;
|
||||||
@ -540,17 +515,14 @@ merge() {
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
CHANGELOG=$(grep -Ezo "## ${RELEASE_NAME} \([0-9]{4}-[0-9]{2}-[0-9]{2}\)\n\n(.|\n)+?\n\n## " CHANGELOG.md \
|
local flags="-Pzo"
|
||||||
|
if [ -n "$OS_MACOS" ]; then
|
||||||
|
flags="-Ezo"
|
||||||
|
fi
|
||||||
|
CHANGELOG=$(grep ${flags} "## ${RELEASE_NAME} \([0-9]{4}-[0-9]{2}-[0-9]{2}\)\n\n(.|\n)+?\n\n## " CHANGELOG.md \
|
||||||
| tail -n+3 | sed '$d' | sed 's/^### //')
|
| tail -n+3 | sed '$d' | sed 's/^### //')
|
||||||
COMMIT_MSG="Release ${RELEASE_NAME}"
|
COMMIT_MSG="Release ${RELEASE_NAME}"
|
||||||
|
|
||||||
logInfo "Checking out target branch '${TARGET_BRANCH}'..."
|
|
||||||
git checkout "$TARGET_BRANCH" > /dev/null 2>&1
|
|
||||||
|
|
||||||
logInfo "Merging '${SOURCE_BRANCH}' into '${TARGET_BRANCH}'..."
|
|
||||||
|
|
||||||
git merge "$SOURCE_BRANCH" --no-ff -m "$COMMIT_MSG" -m "${CHANGELOG}" "$SOURCE_BRANCH" -S"$GPG_GIT_KEY"
|
|
||||||
|
|
||||||
logInfo "Creating tag '${TAG_NAME}'..."
|
logInfo "Creating tag '${TAG_NAME}'..."
|
||||||
if [ -z "$GPG_GIT_KEY" ]; then
|
if [ -z "$GPG_GIT_KEY" ]; then
|
||||||
git tag -a "$TAG_NAME" -m "$COMMIT_MSG" -m "${CHANGELOG}" -s
|
git tag -a "$TAG_NAME" -m "$COMMIT_MSG" -m "${CHANGELOG}" -s
|
||||||
@ -558,6 +530,13 @@ merge() {
|
|||||||
git tag -a "$TAG_NAME" -m "$COMMIT_MSG" -m "${CHANGELOG}" -s -u "$GPG_GIT_KEY"
|
git tag -a "$TAG_NAME" -m "$COMMIT_MSG" -m "${CHANGELOG}" -s -u "$GPG_GIT_KEY"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
logInfo "Fast-Forward latest tag..."
|
||||||
|
if [ -z "$GPG_GIT_KEY" ]; then
|
||||||
|
git tag -sf -a "latest" -m "Latest stable release"
|
||||||
|
else
|
||||||
|
git tag -sf -u "$GPG_GIT_KEY" -a "latest" -m "Latest stable release"
|
||||||
|
fi
|
||||||
|
|
||||||
cleanup
|
cleanup
|
||||||
|
|
||||||
logInfo "All done!"
|
logInfo "All done!"
|
||||||
|
@ -83,8 +83,6 @@ param(
|
|||||||
[string] $Tag,
|
[string] $Tag,
|
||||||
[Parameter(ParameterSetName = "merge")]
|
[Parameter(ParameterSetName = "merge")]
|
||||||
[string] $SourceBranch,
|
[string] $SourceBranch,
|
||||||
[Parameter(ParameterSetName = "merge")]
|
|
||||||
[string] $TargetBranch = "master",
|
|
||||||
[Parameter(ParameterSetName = "build")]
|
[Parameter(ParameterSetName = "build")]
|
||||||
[string] $VSToolChain,
|
[string] $VSToolChain,
|
||||||
[Parameter(ParameterSetName = "merge")]
|
[Parameter(ParameterSetName = "merge")]
|
||||||
@ -279,8 +277,8 @@ if ($Merge) {
|
|||||||
$SourceBranch = & git branch --show-current
|
$SourceBranch = & git branch --show-current
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($SourceBranch -notmatch "^release/.*|develop$") {
|
if ($SourceBranch -notmatch "^release/.*$") {
|
||||||
throw "Must be on develop or a release/* branch to continue merging."
|
throw "Must be on a release/* branch to continue."
|
||||||
}
|
}
|
||||||
|
|
||||||
# Update translation files
|
# Update translation files
|
||||||
@ -314,15 +312,12 @@ if ($Merge) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Write-Host "Checking out target branch '$TargetBranch'..."
|
|
||||||
Invoke-Cmd "git" "checkout `"$TargetBranch`"" -quiet
|
|
||||||
|
|
||||||
Write-Host "Merging '$SourceBranch' into '$TargetBranch'..."
|
|
||||||
Invoke-Cmd "git" "merge `"$SourceBranch`" --no-ff -m `"Release $Version`" -m `"$Changelog`" `"$SourceBranch`" -S" -quiet
|
|
||||||
|
|
||||||
Write-Host "Creating tag for '$Version'..."
|
Write-Host "Creating tag for '$Version'..."
|
||||||
Invoke-Cmd "git" "tag -a `"$Version`" -m `"Release $Version`" -m `"$Changelog`" -s" -quiet
|
Invoke-Cmd "git" "tag -a `"$Version`" -m `"Release $Version`" -m `"$Changelog`" -s" -quiet
|
||||||
|
|
||||||
|
Write-Host "Moving latest tag..."
|
||||||
|
Invoke-Cmd "git" "tag -f -a `"latest`" -m `"Latest stable release`" -s" -quiet
|
||||||
|
|
||||||
Write-Host "All done!"
|
Write-Host "All done!"
|
||||||
Write-Host "Please merge the release branch back into the develop branch now and then push your changes."
|
Write-Host "Please merge the release branch back into the develop branch now and then push your changes."
|
||||||
Write-Host "Don't forget to also push the tags using 'git push --tags'."
|
Write-Host "Don't forget to also push the tags using 'git push --tags'."
|
||||||
|
@ -42,6 +42,7 @@ parts:
|
|||||||
build-packages:
|
build-packages:
|
||||||
- g++
|
- g++
|
||||||
- libbotan-2-dev
|
- libbotan-2-dev
|
||||||
|
- libargon2-dev
|
||||||
- zlib1g-dev
|
- zlib1g-dev
|
||||||
- libqrencode-dev
|
- libqrencode-dev
|
||||||
- libusb-1.0-0-dev
|
- libusb-1.0-0-dev
|
||||||
|
Loading…
Reference in New Issue
Block a user