name: Auto PR to main when version changes on: push: branches: - canary permissions: contents: write pull-requests: write jobs: create-pr: runs-on: ubuntu-latest steps: - name: Checkout Repository uses: actions/checkout@v4 with: fetch-depth: 0 - name: Get version from package.json id: package_version run: echo "VERSION=$(jq -r .version ./apps/dokploy/package.json)" >> $GITHUB_ENV - name: Get latest GitHub tag id: latest_tag run: | LATEST_TAG=$(git ls-remote --tags origin | awk -F'/' '{print $3}' | sort -V | tail -n1) echo "LATEST_TAG=$LATEST_TAG" >> $GITHUB_ENV echo $LATEST_TAG - name: Compare versions id: compare_versions run: | if [ "${{ env.VERSION }}" != "${{ env.LATEST_TAG }}" ]; then VERSION_CHANGED="true" else VERSION_CHANGED="false" fi echo "VERSION_CHANGED=$VERSION_CHANGED" >> $GITHUB_ENV echo "Comparing versions:" echo "Current version: ${{ env.VERSION }}" echo "Latest tag: ${{ env.LATEST_TAG }}" echo "Version changed: $VERSION_CHANGED" - name: Check if a PR already exists id: check_pr run: | PR_EXISTS=$(gh pr list --state open --base main --head canary --json number --jq '. | length') echo "PR_EXISTS=$PR_EXISTS" >> $GITHUB_ENV env: GH_TOKEN: ${{ secrets.GH_PAT }} - name: Create Pull Request if: env.VERSION_CHANGED == 'true' && env.PR_EXISTS == '0' run: | git config --global user.name "github-actions[bot]" git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" git fetch origin main git checkout canary git push origin canary gh pr create \ --title "🚀 Release ${{ env.VERSION }}" \ --body: | This PR promotes changes from `canary` to `main` for version ${{ env.VERSION }}. ### 🔍 Changes Include: - Version bump to ${{ env.VERSION }} - All changes from canary branch ### ✅ Pre-merge Checklist: - [ ] All tests passing - [ ] Documentation updated - [ ] Docker images built and tested > 🤖 This PR was automatically generated by [GitHub Actions](https://github.com/actions) \ --base main \ --head canary \ --draft \ --label "release" --label "automated pr" || true \ --reviewer siumauricio \ --assignee siumauricio env: GH_TOKEN: ${{ github.token }}