adapt release workflow for gitea actions
This commit is contained in:
@@ -0,0 +1,154 @@
|
||||
name: TubeArchivistMetadata
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
tags:
|
||||
- v*
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
name: Build
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup .NET
|
||||
uses: actions/setup-dotnet@v4
|
||||
with:
|
||||
dotnet-version: 9.0.x
|
||||
|
||||
- name: Restore
|
||||
run: dotnet restore TubeArchivistMetadata.sln
|
||||
|
||||
- name: Build
|
||||
run: dotnet build TubeArchivistMetadata.sln -c Release --no-restore
|
||||
|
||||
- name: Package plugin
|
||||
run: |
|
||||
set -euo pipefail
|
||||
|
||||
plugin_version="$(awk -F'\"' '/^version:/ { print $2 }' build.yaml)"
|
||||
artifact="artifacts/tubearchivistmetadata_${plugin_version}.zip"
|
||||
checksum="$(./scripts/package-release.sh)"
|
||||
|
||||
echo "PLUGIN_VERSION=$plugin_version" >> "$GITHUB_ENV"
|
||||
echo "PLUGIN_ARTIFACT=$artifact" >> "$GITHUB_ENV"
|
||||
echo "PLUGIN_CHECKSUM=$checksum" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Validate release metadata
|
||||
if: startsWith(github.ref, 'refs/tags/v')
|
||||
run: |
|
||||
set -euo pipefail
|
||||
|
||||
tag_version="${GITHUB_REF_NAME#v}"
|
||||
if [ "$PLUGIN_VERSION" != "$tag_version" ] && [ "$PLUGIN_VERSION" != "${tag_version}.0" ]; then
|
||||
echo "Tag $GITHUB_REF_NAME does not match build.yaml version $PLUGIN_VERSION" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
grep -F "\"version\": \"$PLUGIN_VERSION\"" manifest.json >/dev/null
|
||||
grep -F "\"checksum\": \"$PLUGIN_CHECKSUM\"" manifest.json >/dev/null
|
||||
grep -F "/releases/download/$GITHUB_REF_NAME/$(basename "$PLUGIN_ARTIFACT")" manifest.json >/dev/null
|
||||
|
||||
- name: Upload build artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: tubearchivistmetadata-${{ env.PLUGIN_VERSION }}
|
||||
path: ${{ env.PLUGIN_ARTIFACT }}
|
||||
|
||||
release:
|
||||
runs-on: ubuntu-latest
|
||||
name: Release
|
||||
needs: build
|
||||
if: startsWith(github.ref, 'refs/tags/v')
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup .NET
|
||||
uses: actions/setup-dotnet@v4
|
||||
with:
|
||||
dotnet-version: 9.0.x
|
||||
|
||||
- name: Setup Go for tea
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: 1.26.x
|
||||
|
||||
- name: Install tea
|
||||
run: go install code.gitea.io/tea@v0.14.0
|
||||
|
||||
- name: Restore
|
||||
run: dotnet restore TubeArchivistMetadata.sln
|
||||
|
||||
- name: Build
|
||||
run: dotnet build TubeArchivistMetadata.sln -c Release --no-restore
|
||||
|
||||
- name: Package plugin
|
||||
run: |
|
||||
set -euo pipefail
|
||||
|
||||
plugin_version="$(awk -F'\"' '/^version:/ { print $2 }' build.yaml)"
|
||||
artifact="artifacts/tubearchivistmetadata_${plugin_version}.zip"
|
||||
checksum="$(./scripts/package-release.sh)"
|
||||
|
||||
echo "PLUGIN_VERSION=$plugin_version" >> "$GITHUB_ENV"
|
||||
echo "PLUGIN_ARTIFACT=$artifact" >> "$GITHUB_ENV"
|
||||
echo "PLUGIN_CHECKSUM=$checksum" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Validate release metadata
|
||||
run: |
|
||||
set -euo pipefail
|
||||
|
||||
tag_version="${GITHUB_REF_NAME#v}"
|
||||
if [ "$PLUGIN_VERSION" != "$tag_version" ] && [ "$PLUGIN_VERSION" != "${tag_version}.0" ]; then
|
||||
echo "Tag $GITHUB_REF_NAME does not match build.yaml version $PLUGIN_VERSION" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
grep -F "\"version\": \"$PLUGIN_VERSION\"" manifest.json >/dev/null
|
||||
grep -F "\"checksum\": \"$PLUGIN_CHECKSUM\"" manifest.json >/dev/null
|
||||
grep -F "/releases/download/$GITHUB_REF_NAME/$(basename "$PLUGIN_ARTIFACT")" manifest.json >/dev/null
|
||||
|
||||
- name: Generate release notes
|
||||
run: |
|
||||
set -euo pipefail
|
||||
|
||||
changelog="$(awk '/changelog:/ {flag=1; next} /^[^ ]/ {flag=0} flag' build.yaml | awk '{$1=$1};1')"
|
||||
{
|
||||
echo "Changelog:"
|
||||
echo "* $changelog"
|
||||
} > release-changelog.md
|
||||
|
||||
- name: Create Gitea release
|
||||
env:
|
||||
GITEA_SERVER_TOKEN: ${{ secrets.GITEA_SERVER_TOKEN }}
|
||||
run: |
|
||||
set -euo pipefail
|
||||
|
||||
if [ -z "${GITEA_SERVER_TOKEN:-}" ]; then
|
||||
echo "Missing GITEA_SERVER_TOKEN secret" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
tea logins add \
|
||||
--name gitea \
|
||||
--url "$GITHUB_SERVER_URL" \
|
||||
--token "$GITEA_SERVER_TOKEN" \
|
||||
--no-version-check
|
||||
|
||||
tea releases create "$GITHUB_REF_NAME" \
|
||||
--repo "$GITHUB_REPOSITORY" \
|
||||
--target "$GITHUB_SHA" \
|
||||
--title "TubeArchivist Metadata $PLUGIN_VERSION" \
|
||||
--note-file release-changelog.md \
|
||||
--asset "$PLUGIN_ARTIFACT" \
|
||||
--login gitea
|
||||
Reference in New Issue
Block a user