diff --git a/.github/workflows/ci-version-bump.yml b/.github/workflows/ci-version-bump.yml new file mode 100644 index 0000000..3eb7fa6 --- /dev/null +++ b/.github/workflows/ci-version-bump.yml @@ -0,0 +1,70 @@ +name: CI Version Bump + +on: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + version-bump: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: '3.x' + + - name: Install semver + run: | + pip install semver + + - name: Bump version + id: bump-version + run: | + CURRENT_VERSION=$(grep -oP '^version: \K.*' n8n/Chart.yaml) + N8N_VERSION=$(grep -oP '^appVersion: "\K.*(?=")' n8n/Chart.yaml) + TEMPLATE_CHANGED=$(git diff --name-only HEAD~1 HEAD | grep -E 'n8n/templates/.*\.yaml' || true) + if [[ $TEMPLATE_CHANGED ]]; then + NEW_VERSION=$(python -c "import semver; print(semver.VersionInfo.parse('$CURRENT_VERSION').bump_minor())") + else + NEW_VERSION=$(python -c "import semver; print(semver.VersionInfo.parse('$CURRENT_VERSION').bump_patch())") + fi + echo "New version: $NEW_VERSION" + sed -i "s/^version: .*/version: $NEW_VERSION/" n8n/Chart.yaml + echo "::set-output name=NEW_VERSION::$NEW_VERSION" + + - name: Commit changes + if: github.ref == 'refs/heads/main' + run: | + git config --global user.name 'github-actions[bot]' + git config --global user.email 'github-actions[bot]@users.noreply.github.com' + git add n8n/Chart.yaml + git commit -m "ci: bump chart version to $NEW_VERSION" + git push + + - name: Create release + if: github.ref == 'refs/heads/main' + uses: actions/create-release@v1 + with: + tag_name: ${{ steps.bump-version.outputs.NEW_VERSION }} + release_name: Release ${{ steps.bump-version.outputs.NEW_VERSION }} + body: | + Automated release for version ${{ steps.bump-version.outputs.NEW_VERSION }} + draft: false + prerelease: false + + - name: Comment on PR + if: github.event_name == 'pull_request' + uses: thollander/actions-comment-pull-request@v3 + with: + comment_tag: next_version + message: | + Next version to publish after this PR is merged: `${{ steps.bump-version.outputs.NEW_VERSION }}` \ No newline at end of file diff --git a/README.md b/README.md index 0a4fe8a..8dfb82d 100644 --- a/README.md +++ b/README.md @@ -45,3 +45,24 @@ ingress: ``` see [values.yaml](./n8n/values.yaml) + +## CI Version Bump Workflow + +A new workflow has been added to automate chart version bump and release. The workflow is defined in the `.github/workflows/ci-version-bump.yml` file and performs the following actions: + +* Bumps patch version on n8n major/minor and patch for n8n patch versions. +* Bumps minor version for template changes. +* Only pushes version changes on main branch runs. +* Comments on the next version to publish after a PR merge. + +The workflow is triggered on push and pull request events to the `main` branch. It performs the following steps: + +1. Checks out the code. +2. Sets up Python environment. +3. Installs `python semver`. +4. Bumps the chart version based on changes. +5. Commits the changes. +6. Creates a release. +7. Comments on the next version to publish after a PR merge. + +The version bumping is done for the Helm chart version, not for a Node.js package. diff --git a/renovate.json b/renovate.json index e60459a..814ed1a 100644 --- a/renovate.json +++ b/renovate.json @@ -11,5 +11,21 @@ ] } ], - "bumpVersion": "patch" + "bumpVersion": "patch", + "packageRules": [ + { + "matchDatasources": ["docker"], + "matchPackageNames": ["ghcr.io/n8n-io/n8n"], + "versioning": "semver", + "bumpVersion": "patch" + }, + { + "matchPaths": ["n8n/templates/**/*.yaml"], + "bumpVersion": "minor" + }, + { + "matchPaths": ["n8n/Chart.yaml"], + "bumpVersion": "patch" + } + ] }