update release workflow
All checks were successful
ci/woodpecker/push/tests Pipeline was successful

This commit is contained in:
Ivan Schaller 2022-06-21 17:16:52 +02:00
parent 3e470e100e
commit 9d127581ef
6 changed files with 77 additions and 134 deletions

18
.bumpversion.cfg Normal file
View file

@ -0,0 +1,18 @@
[bumpversion]
current_version = 2.1.5
commit = False
tag = False
serialize = {major}.{minor}.{patch}
[bumpversion:file:pyproject.toml]
search = {current_version}
replace = {new_version}
[bumpversion:file:mangadlp/input.py]
search = {current_version}
replace = {new_version}
[bumpversion:file:manga-dlp.py]
search = {current_version}
replace = {new_version}

View file

@ -21,7 +21,7 @@ pipeline:
when: when:
#branch: master #branch: master
event: tag event: tag
image: 'cr.44net.ch/baseimages/debian-base' image: cr.44net.ch/baseimages/debian-base
pull: true pull: true
commands: commands:
- tar -czf manga-dlp-${CI_COMMIT_TAG}.tar.gz --files-from=release-files.txt - tar -czf manga-dlp-${CI_COMMIT_TAG}.tar.gz --files-from=release-files.txt
@ -31,10 +31,10 @@ pipeline:
when: when:
#branch: master #branch: master
event: tag event: tag
image: 'cr.44net.ch/baseimages/debian-base' image: cr.44net.ch/baseimages/debian-base
pull: true pull: true
commands: commands:
- bash 'release.sh' '--get-releasenotes' '${CI_COMMIT_TAG}' - bash 'get_release_notes.sh' '${CI_COMMIT_TAG}'
# publish release on gitea (git.44net.ch/olofvndrhr/manga-dlp) # publish release on gitea (git.44net.ch/olofvndrhr/manga-dlp)
publish-release-gitea: publish-release-gitea:
@ -48,7 +48,7 @@ pipeline:
from_secret: gitea-olofvndrhr-token from_secret: gitea-olofvndrhr-token
base_url: https://git.44net.ch base_url: https://git.44net.ch
files: manga-dlp-${CI_COMMIT_TAG}.tar.gz files: manga-dlp-${CI_COMMIT_TAG}.tar.gz
title: '${CI_COMMIT_TAG}' title: ${CI_COMMIT_TAG}
note: RELEASENOTES.md note: RELEASENOTES.md
# publish release on github (github.com/olofvndrhr/manga-dlp) # publish release on github (github.com/olofvndrhr/manga-dlp)
@ -62,5 +62,5 @@ pipeline:
api_key: api_key:
from_secret: github-olofvndrhr-token from_secret: github-olofvndrhr-token
files: manga-dlp-${CI_COMMIT_TAG}.tar.gz files: manga-dlp-${CI_COMMIT_TAG}.tar.gz
title: '${CI_COMMIT_TAG}' title: ${CI_COMMIT_TAG}
note: RELEASENOTES.md note: RELEASENOTES.md

View file

@ -12,35 +12,35 @@ pipeline:
# check code style - shell # check code style - shell
test-shfmt: test-shfmt:
image: 'cr.44net.ch/drone-plugins/test' image: cr.44net.ch/drone-plugins/test
pull: true pull: true
commands: commands:
- shfmt -d -i 4 -bn -ci -sr . - shfmt -d -i 4 -bn -ci -sr .
# check code style - python # check code style - python
test-black: test-black:
image: 'cr.44net.ch/drone-plugins/test' image: cr.44net.ch/drone-plugins/test
pull: true pull: true
commands: commands:
- black --check --diff . - black --check --diff .
# check imports - python # check imports - python
test-isort: test-isort:
image: 'cr.44net.ch/drone-plugins/test' image: cr.44net.ch/drone-plugins/test
pull: true pull: true
commands: commands:
- isort --check-only --diff . - isort --check-only --diff .
# check static typing - python # check static typing - python
test-mypy: test-mypy:
image: 'cr.44net.ch/drone-plugins/test' image: cr.44net.ch/drone-plugins/test
pull: true pull: true
commands: commands:
- mypy --install-types --non-interactive mangadlp/ - mypy --install-types --non-interactive mangadlp/
# test code and generate coverage report # test code and generate coverage report
test-coverage-pytest: test-coverage-pytest:
image: 'cr.44net.ch/drone-plugins/test' image: cr.44net.ch/drone-plugins/test
pull: true pull: true
commands: commands:
- pip install -r requirements.txt - pip install -r requirements.txt
@ -52,10 +52,10 @@ pipeline:
sonarqube-analysis: sonarqube-analysis:
when: when:
branch: master branch: master
image: 'cr.44net.ch/drone-plugins/sonarqube' image: cr.44net.ch/drone-plugins/sonarqube
pull: true pull: true
settings: settings:
sonar_host: 'https://sonarqube.44net.ch' sonar_host: https://sonarqube.44net.ch
sonar_token: sonar_token:
from_secret: sq-44net-token from_secret: sq-44net-token
usingProperties: true usingProperties: true

View file

@ -2,7 +2,7 @@ version: "3"
services: services:
manga-dlp: manga-dlp:
image: olofvndrhr/manga-dlp:latest image: olofvndrhr/manga-dlp:2.1.5
container_name: manga-dlp container_name: manga-dlp
restart: unless-stopped restart: unless-stopped
security_opt: security_opt:

46
get_release_notes.sh.sh Executable file
View file

@ -0,0 +1,46 @@
#!/bin/bash
# shellcheck disable=SC2016
# script to extract the release notes from the changelog
# show script help
function show_help() {
cat << EOF
Script to generate release-notes from a changelog (CHANGELOG.md)
Usage:
./get_release_notes.sh <new_version>
Example:
./get_release_notes.sh "2.0.5"
EOF
exit 0
}
# create changelog for release
function get_release_notes() {
local l_version
printf 'Creating release-notes\n'
# check for version
if [[ -z "${l_version}" ]]; then
printf 'You need to specify a version with $1\n'
exit 1
fi
awk -v ver="[${l_version}]" \
'/^## / { if (p) { exit }; if ($2 == ver) { p=1 } } p && NF' \
'CHANGELOG.md' > 'RELEASENOTES.md'
printf 'Done\n'
}
# check options
case "${1}" in
'--help' | '-h' | 'help')
show_help
;;
*)
get_release_notes "${@}"
;;
esac

View file

@ -1,121 +0,0 @@
#!/bin/bash
# shellcheck disable=SC2016
# script to set the version numbers on all files or generate changelogs for a release
function pre_checks() {
# prechecks
if [[ -z "${2}" ]]; then
printf 'No version was provided\n'
printf 'Error\n'
exit 1
fi
# set mdlp version
mdlp_version="${2}"
}
function show_help() {
printf 'Script to change the version numbers of mangadlp in the build files, or generate release-notes for a release\n'
printf '\nUsage:\n'
printf ' ./release.sh <option> <mdlp-version>\n'
printf '\nOptions:\n'
printf ' --set-version - Set version number on all build files\n'
printf ' --get-changelog - Create RELEASENOTES.md for github/gitea release\n'
printf '\nExample:\n'
printf ' ./release.sh --get-releasenotes "2.0.5"\n'
exit 1
}
function set_ver_docker() {
printf 'Changing version in docker-files\n'
local docker_files docker_regex
docker_files=(
'docker/Dockerfile.amd64'
'docker/Dockerfile.arm64'
)
docker_regex='s,^ENV MDLP_VERSION=.*$,ENV MDLP_VERSION='"${mdlp_version}"',g'
for file in "${docker_files[@]}"; do
if ! sed -i "${docker_regex}" "${file}"; then return 1; fi
done
printf 'Done\n'
}
function set_ver_pypi() {
printf 'Changing version in pypi-files\n'
local pypi_files pypi_regex
pypi_files=(
'setup.py'
)
pypi_regex='s/version=.*$/version=\"'"${mdlp_version}"'\",/g'
for file in "${pypi_files[@]}"; do
if ! sed -i "${pypi_regex}" "${file}"; then return 1; fi
done
printf 'Done\n'
}
function set_ver_project() {
printf 'Changing version in project-files\n'
local project_files project_regex
project_files=(
'mangadlp/input.py'
'manga-dlp.py'
)
project_regex='s/mangadlp_version =.*$/mangadlp_version = \"'"${mdlp_version}"'\"/g'
for file in "${project_files[@]}"; do
if ! sed -i "${project_regex}" "${file}"; then return 1; fi
done
printf 'Done\n'
}
# set version number in files
function set_version() {
# check for version
if [[ -z "${mdlp_version}" ]]; then
printf 'You need to specify a version with $1\n'
exit 1
fi
# set docker versions
if ! set_ver_docker; then
printf 'Docker: Error\n'
fi
# set pypi versions
if ! set_ver_pypi; then
printf 'PyPi: Error\n'
fi
# set project versions
if ! set_ver_project; then
printf 'Project: Error\n'
fi
}
# create changelog for release
function get_releasenotes() {
printf 'Creating release-notes\n'
# check for version
if [[ -z "${mdlp_version}" ]]; then
printf 'You need to specify a version with $1\n'
exit 1
fi
awk -v ver="[${mdlp_version}]" \
'/^## / { if (p) { exit }; if ($2 == ver) { p=1 } } p && NF' \
'CHANGELOG.md' > 'RELEASENOTES.md'
printf 'Done\n'
}
# check options
case "${1}" in
'--help' | '-h' | 'help')
show_help
;;
'--set-version')
pre_checks "${@}"
set_version
;;
'--get-releasenotes')
pre_checks "${@}"
get_releasenotes
;;
*)
show_help
;;
esac