diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml new file mode 100644 index 0000000..0c4aa06 --- /dev/null +++ b/.gitea/workflows/release.yml @@ -0,0 +1,74 @@ +name: Release + +on: + push: + branches: + - release + +jobs: + release: + name: Release + runs-on: ubuntu-latest + + env: + GITEA_DOMAIN: git.kjan.de # Your Gitea instance domain + GIT_EMAIL: "gitea-actions@git.kjan.de" # Valid email for Git config + GIT_USERNAME: "Gitea Actions" # Name for Git config + SKIP_MERGE: false # Set to true to skip merging back to main + TARGET_BRANCH: main #Branch to merge into + RELEASE_BRANCH: release # The name of the release branch + + permissions: + contents: write + issues: write + pull-requests: write + id-token: write + + steps: + - name: Create Release + uses: https://git.kjan.de/actions/semantic-release@main + id: semantic + with: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} + + - name: Configure SSH + if: ${{ steps.semantic.outputs.new_release_published }} + run: | + mkdir -p ~/.ssh + echo "${{ secrets.DEPLOY_KEY }}" > ~/.ssh/id_rsa + chmod 400 ~/.ssh/id_rsa + ssh-keyscan ${{ env.GITEA_DOMAIN }} >> ~/.ssh/known_hosts + chmod 400 ~/.ssh/known_hosts + + - name: Configure Git + if: ${{ steps.semantic.outputs.new_release_published }} + run: | + git config --global user.email "${{ env.GIT_EMAIL }}" + git config --global user.name "${{ env.GIT_USERNAME }}" + + - name: Make changes + if: ${{ steps.semantic.outputs.new_release_published }} + run: | + git add docs/ + git commit -m "chore(release): [skip ci]" + + - name: Push changes to release branch + if: ${{ steps.semantic.outputs.new_release_published }} + run: | + git remote set-url origin git@${{ env.GITEA_DOMAIN }}:${{ github.repository }}.git + git push origin HEAD:${{ env.RELEASE_BRANCH }} + + - name: Checkout target branch + if: ${{ steps.semantic.outputs.new_release_published && !env.SKIP_MERGE }} + run: git reset --hard && git checkout ${{ env.TARGET_BRANCH }} && git pull + + - name: Merge release + if: ${{ steps.semantic.outputs.new_release_published && !env.SKIP_MERGE }} + run: git merge ${{ env.RELEASE_BRANCH }} + + - name: Push changes to target branch + if: ${{ steps.semantic.outputs.new_release_published && !env.SKIP_MERGE }} + run: | + git remote set-url origin git@${{ env.GITEA_DOMAIN }}:${{ github.repository }}.git + git push origin HEAD:${{ env.TARGET_BRANCH }} diff --git a/release.config.cjs b/release.config.cjs new file mode 100644 index 0000000..32879a1 --- /dev/null +++ b/release.config.cjs @@ -0,0 +1,16 @@ +module.exports = { + branches: ['release'], + plugins: [ + '@semantic-release/commit-analyzer', + '@semantic-release/release-notes-generator', + [ + "@semantic-release/changelog", + { + "changelogFile": "docs/CHANGELOG.md" + } + ], + ["@saithodev/semantic-release-gitea", { + "giteaUrl": "https://git.kjan.de" + }], + ], +};