diff --git a/.github/workflows/release-deployment.yml b/.github/workflows/release-deployment.yml new file mode 100644 index 0000000000..bd360fa1bc --- /dev/null +++ b/.github/workflows/release-deployment.yml @@ -0,0 +1,46 @@ +name: Release Deployment + +on: + release: + types: [published] + +jobs: + deploy: + runs-on: ubuntu-latest + permissions: + deployments: write + contents: read + + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + ref: ${{ github.event.release.tag_name }} + + - name: Create deployment + uses: actions/github-script@v7 + with: + script: | + const deployment = await github.rest.repos.createDeployment({ + owner: context.repo.owner, + repo: context.repo.repo, + ref: context.ref, + environment: 'production', + description: `Deployment for release ${context.payload.release.tag_name}`, + auto_merge: false, + required_contexts: [] + }); + + core.info(`Deployment created: ${deployment.data.id}`); + + // Update deployment status to success + await github.rest.repos.createDeploymentStatus({ + owner: context.repo.owner, + repo: context.repo.repo, + deployment_id: deployment.data.id, + state: 'success', + description: 'Release deployment completed', + environment_url: `https://github.com/${context.repo.owner}/${context.repo.repo}/releases/tag/${context.payload.release.tag_name}` + }); + + core.info('Deployment status updated to success');