name: Create/Delete Branch for Pull Request on: pull_request: types: - opened - reopened - synchronize - closed concurrency: group: ${{ github.workflow }}-${{ github.ref }} jobs: setup: name: Setup outputs: branch: ${{ steps.branch_name.outputs.current_branch }} runs-on: ubuntu-latest steps: - name: Get branch name id: branch_name uses: tj-actions/branch-names@v8 create_neon_branch: name: Create Neon Branch outputs: db_url: ${{ steps.create_neon_branch_encode.outputs.db_url }} db_url_with_pooler: ${{ steps.create_neon_branch_encode.outputs.db_url_with_pooler }} needs: setup if: | github.event_name == 'pull_request' && ( github.event.action == 'synchronize' || github.event.action == 'opened' || github.event.action == 'reopened') runs-on: ubuntu-latest steps: - name: Create Neon Branch id: create_neon_branch uses: neondatabase/create-branch-action@v5 with: project_id: ${{ vars.NEON_PROJECT_ID }} branch_name: preview/pr-${{ github.event.number }}-${{ needs.setup.outputs.branch }} api_key: ${{ secrets.NEON_API_KEY }} # The step above creates a new Neon branch. # You may want to do something with the new branch, such as run migrations, run tests # on it, or send the connection details to a hosting platform environment. # The branch DATABASE_URL is available to you via: # "${{ steps.create_neon_branch.outputs.db_url_with_pooler }}". # It's important you don't log the DATABASE_URL as output as it contains a username and # password for your database. # For example, you can uncomment the lines below to run a database migration command: # - name: Run Migrations # run: npm run db:migrate # env: # # to use pooled connection # DATABASE_URL: "${{ steps.create_neon_branch.outputs.db_url_with_pooler }}" # # OR to use unpooled connection # # DATABASE_URL: "${{ steps.create_neon_branch.outputs.db_url }}" delete_neon_branch: name: Delete Neon Branch needs: setup if: github.event_name == 'pull_request' && github.event.action == 'closed' runs-on: ubuntu-latest steps: - name: Delete Neon Branch uses: neondatabase/delete-branch-action@v3 with: project_id: ${{ vars.NEON_PROJECT_ID }} branch: preview/pr-${{ github.event.number }}-${{ needs.setup.outputs.branch }} api_key: ${{ secrets.NEON_API_KEY }}