feat(ci): add release workflow and configuration files (#1)

Reviewed-on: #1
Co-authored-by: Jan Klattenhoff <jan@kjan.email>
Co-committed-by: Jan Klattenhoff <jan@kjan.email>
This commit is contained in:
Jan K9f 2025-04-09 14:52:48 +00:00 committed by Jan K9f
parent 8366987b4a
commit df800dd50c
Signed by:
GPG key ID: 944223E4D46B7412
2 changed files with 90 additions and 0 deletions

View file

@ -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 }}

16
release.config.cjs Normal file
View file

@ -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"
}],
],
};