diff --git a/.gitea/workflows/pr.yml b/.gitea/workflows/pr.yml deleted file mode 100644 index bea49c0..0000000 --- a/.gitea/workflows/pr.yml +++ /dev/null @@ -1,21 +0,0 @@ -name: "Lint Pull Request" - -on: - pull_request: - types: [opened, edited, reopened, synchronize] - -jobs: - lint: - name: Lint PR Title - runs-on: ubuntu-latest - - if: github.base_ref != 'release' - - steps: - - name: Install go - uses: actions/setup-go@v5 - with: - go-version: 1.24.2 - - - name: Run Pull Request Lint Action - uses: https://git.kjan.de/actions/pull-request-lint@main diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml deleted file mode 100644 index 0eea3b6..0000000 --- a/.gitea/workflows/release.yml +++ /dev/null @@ -1,76 +0,0 @@ -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]" - continue-on-error: true - - - 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 }} - continue-on-error: true - - - name: Checkout target branch - if: ${{ !(env.SKIP_MERGE == true) }} - run: git reset --hard && git checkout ${{ env.TARGET_BRANCH }} && git pull - - - name: Merge release - if: ${{ !(env.SKIP_MERGE == true) }} - run: git merge ${{ env.RELEASE_BRANCH }} - - - name: Push changes to target branch - if: ${{ !(env.SKIP_MERGE == true) }} - run: | - git remote set-url origin git@${{ env.GITEA_DOMAIN }}:${{ github.repository }}.git - git push origin HEAD:${{ env.TARGET_BRANCH }} diff --git a/README.md b/README.md index 985bdc4..a98818b 100644 --- a/README.md +++ b/README.md @@ -1,94 +1,2 @@ -# CI Template +# ci-template -A template repository for setting up continuous integration and automatic semantic versioning with Gitea. - -## Features - -- Automated semantic versioning with [semantic-release](https://github.com/semantic-release/semantic-release) -- Integration with Gitea for releases -- Changelog generation -- Pull request workflows - -## Setup Instructions - -Follow these steps to set up the CI pipeline and release process: - -### 1. Configure Branch Protection - -Add yourself to the whitelist in the release branch protection rule. - -![Branch protection settings](images/1.png) - -Don't forget to save your changes. - -![Save changes](images/2.png) - -### 2. Create the Release Branch - -Create a new branch named `release`. - -![Create release branch](images/3.png) - -The pipeline for release will start automatically but will fail on the first run. This is expected behavior. - -![Initial pipeline failure](images/4.png) - -### 3. Create the Initial Version Tag - -Run the following commands to create and push the first version tag: - -```bash -git tag v0.1.0 -git push origin tag v0.1.0 -``` - -### 4. Configure Pull Request Settings - -Set up your repository's pull request settings as shown: - -![Pull request settings](images/5.png) - -### 5. Set Up Deploy Keys - -1. Generate an SSH key pair (public and private) -2. Add the public key to deploy keys named "release" with write access enabled - -![Deploy key setup](images/6.png) - -3. Add the private key to the runner secret as `DEPLOY_KEY` - -![Runner secret](images/7.png) - -## Release Process - -This template uses semantic versioning through conventional commits. When changes are merged to the release branch, a new version is automatically: - -1. Determined based on commit messages -2. Tagged in Git -3. Published as a release -4. Added to the changelog - -### Commit Message Format - -Follow the [Conventional Commits](https://www.conventionalcommits.org/) specification: - -- `feat: add new feature` (triggers MINOR version bump) -- `fix: resolve bug` (triggers PATCH version bump) -- `BREAKING CHANGE: redesign API` (triggers MAJOR version bump) - -## Getting Started - -After completing the setup: -1. Remove the images directory and this README -2. Create feature branches from `main` for your work -3. Make changes and commit using conventional commit format -4. Create pull requests to `main` (changes should be squashed when merged, although this is not required) -5. When ready for a release, create a PR from `main` to `release` -6. The PR to `release` will automatically: - - Create a new version based on your commits - - Generate a changelog - - Merge changes back into `main` - -## License - -See the [LICENSE](LICENSE) file for details. \ No newline at end of file diff --git a/images/1.png b/images/1.png deleted file mode 100644 index 8981a9b..0000000 Binary files a/images/1.png and /dev/null differ diff --git a/images/2.png b/images/2.png deleted file mode 100644 index b3e60cb..0000000 Binary files a/images/2.png and /dev/null differ diff --git a/images/3.png b/images/3.png deleted file mode 100644 index 4af0dc2..0000000 Binary files a/images/3.png and /dev/null differ diff --git a/images/4.png b/images/4.png deleted file mode 100644 index 582248b..0000000 Binary files a/images/4.png and /dev/null differ diff --git a/images/5.png b/images/5.png deleted file mode 100644 index d6ffb0e..0000000 Binary files a/images/5.png and /dev/null differ diff --git a/images/6.png b/images/6.png deleted file mode 100644 index 61def10..0000000 Binary files a/images/6.png and /dev/null differ diff --git a/images/7.png b/images/7.png deleted file mode 100644 index 1d0314d..0000000 Binary files a/images/7.png and /dev/null differ diff --git a/release.config.cjs b/release.config.cjs deleted file mode 100644 index 32879a1..0000000 --- a/release.config.cjs +++ /dev/null @@ -1,16 +0,0 @@ -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" - }], - ], -};