diff --git a/.github/workflows/create-pr.yml b/.github/workflows/create-pr.yml new file mode 100644 index 00000000..188ccd6b --- /dev/null +++ b/.github/workflows/create-pr.yml @@ -0,0 +1,75 @@ +name: Auto PR to main when version changes + +on: + push: + branches: + - canary + +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' + uses: peter-evans/create-pull-request@v7 + with: + token: ${{ secrets.GH_PAT }} + title: "🚀 Release v${{ env.VERSION }}" + body: | + ## 🔄 Release v${{ env.VERSION }} + This PR promotes changes from `canary` to `main` for version v${{ env.VERSION }}. + ### 🔍 Changes Include: + - Version bump to v${{ 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 from the canary branch + base: main + branch: canary + draft: true + labels: | + release + automated pr + reviewers: | + siumauricio + assignees: | + siumauricio + delete-branch: false