diff --git a/.woodpecker.yml b/.woodpecker.yml index 0adf009..60e18dc 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -3,3 +3,76 @@ pipeline: image: bats/bats commands: - /opt/bats/bin/bats test + + release-prep: # prepare changelog and version information for release candidate + when: + event: tag + tag: v* + image: alpine + commands: + - sed -ne 's/bm_version=\(.*\)/\1/p' bemoji > NEWEST_VERSION.txt + - awk '/^## \[\d/{p++} p==2{print; exit} p>=1' CHANGELOG.md | head -n -1 | tail -n+3 > NEWEST_CHANGES.txt + + versioncompare: # ensure we correctly bumped versions + when: + event: tag + tag: v* + image: alpine + secrets: [ github_release_token, github_repo ] + commands: + - apk add jq curl + - "lastversion=$(curl -X GET -H \"Accept: application/vnd.github.v3+json\" -H \"Authorization: Bearer $GITHUB_RELEASE_TOKEN\" https://api.github.com/repos/$GITHUB_REPO/releases/latest | jq -r '.name')" + - "programversion=$(cat NEWEST_VERSION.txt)" + - changelogversion=$(sed -ne 's/^## \[\([0-9].*\)\].*$/\1/p' CHANGELOG.md | head -n1) + - echo "Last version - $lastversion" + - echo "New version - $programversion" + - echo "Changelog version - $changelogversion" + - "if [ \"$changelogversion\" != \"$programversion\" ]; then { echo \"VERSION MISMATCH: Changelog - $changelogversion, Program - $programversion\" && exit 1; }; fi" + - "if [ \"$lastversion\" = \"$programversion\" ]; then { echo \"RELEASE DUPLICATE: Last release already had version - $programversion\" && exit 1; }; fi" + + build: + when: + event: tag + tag: v* + image: savant/md2man + commands: + - apk update && apk add zip + - BM_VERSION=$(cat NEWEST_VERSION.txt) + - mkdir -p build/doc dist + - cp bemoji build + - md2man -in README.md -out bemoji.1 && gzip bemoji.1 + - cp LICENSE README.md bemoji.1.gz build/doc + - tar -czvf bemoji-$BM_VERSION.tar.gz build/* + - zip -r bemoji-$BM_VERSION.zip build/* + - mv bemoji-$BM_VERSION.tar.gz bemoji-$BM_VERSION.zip dist + + release-gitea: + group: release + when: + event: tag + tag: v* + image: plugins/gitea-release + settings: + api_key: + from_secret: gitea_release_token + base_url: https://git.martyoeh.me + files: dist/* + title: NEWEST_VERSION.txt + note: NEWEST_CHANGES.txt + + release-github: + when: + event: tag + tag: v* + image: alpine + secrets: [ github_release_token, github_repo ] + commands: + - apk add file jq curl + - BM_VERSION=$(cat NEWEST_VERSION.txt) + - BM_CHANGED=$(sed -e 's|#||g' -e 's|^.*$|\0
|' NEWEST_CHANGES.txt) # display newlines workaround + - echo "{\"tag_name\":\"$BM_VERSION\",\"target_commitish\":\"main\",\"name\":\"$BM_VERSION\",\"body\":\"$BM_CHANGED\",\"draft\":false,\"prerelease\":false,\"generate_release_notes\":false}" > data.json + - "response=$(curl -X POST -H \"Accept:\\ application/vnd.github+json\" -H \"Authorization:\\ Bearer $GITHUB_RELEASE_TOKEN\" https://api.github.com/repos/$GITHUB_REPO/releases -d \"@data.json\")" + - "uploadurl=$(echo $response | jq -r '.upload_url' | cut -d'{' -f1)" + - "[ $uploadurl = null ] && { echo $response; exit 1; }" + - "curl -X POST -H \"Accept:\\ application/vnd.github.v3+json\" -H \"Authorization:\\ Bearer $GITHUB_RELEASE_TOKEN\" -H \"Content-Type:\\ $(file -b --mime-type dist/bemoji-$BM_VERSION.zip)\" -H \"Content-Length:\\ $(wc -c