diff --git a/.github/workflows/preview-cleanup.yml b/.github/workflows/preview-cleanup.yml index 63295f8f7..ae43042f6 100644 --- a/.github/workflows/preview-cleanup.yml +++ b/.github/workflows/preview-cleanup.yml @@ -1,19 +1,21 @@ name: preview-cleanup on: + workflow_call: ~ pull_request_target: types: [closed] permissions: deployments: write id-token: write + contents: read jobs: - cleanup: + destroy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: ./.github/actions/aws-auth + - uses: elastic/docs-builder/.github/actions/aws-auth@main - name: Delete s3 objects env: PR_NUMBER: ${{ github.event.pull_request.number }} @@ -28,7 +30,7 @@ jobs: const deployments = await github.rest.repos.listDeployments({ owner, repo, - environment: `preview-${context.issue.number}` + environment: `docs-preview-${context.issue.number}` }); for (const deployment of deployments.data) { await github.rest.repos.createDeploymentStatus({ diff --git a/.github/workflows/preview.yml b/.github/workflows/preview.yml index 1fcb79f24..c3cd73105 100644 --- a/.github/workflows/preview.yml +++ b/.github/workflows/preview.yml @@ -1,12 +1,19 @@ name: preview on: - workflow_call: ~ + push: + branches: + - main + workflow_call: + inputs: + strict: + type: boolean + default: true permissions: id-token: write - pull-requests: write deployments: write + contents: read jobs: deploy: @@ -20,12 +27,10 @@ jobs: script: | const { owner, repo } = context.repo; const deployment = await github.rest.repos.createDeployment({ - issue_number: context.issue.number, owner, repo, ref: context.payload.pull_request.head.ref, - environment: `preview-${context.issue.number}`, - description: `Preview deployment for PR ${context.issue.number}`, + environment: `docs-preview-${context.issue.number}`, auto_merge: false, required_contexts: [], }) @@ -34,27 +39,38 @@ jobs: owner, repo, state: "in_progress", - description: "Deployment created", log_url: `https://github.com/${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId}?pr=${context.issue.number}`, }) return deployment.data.id - uses: actions/checkout@v4 + with: + ref: ${{ github.event.pull_request.head.ref }} - uses: actions/download-artifact@v4 + if: github.repository == 'elastic/docs-builder' with: name: docs-builder-binary # we run our artifact directly please use the prebuild # elastic/docs-builder@main GitHub Action for all other repositories! - name: Build documentation + if: github.repository == 'elastic/docs-builder' env: - PR_NUMBER: ${{ github.event.pull_request.number }} + PR_NUMBER: run: | chmod +x ./docs-builder - ./docs-builder --strict --path-prefix "/${GITHUB_REPOSITORY}/pull/${PR_NUMBER}" + ./docs-builder --strict --path-prefix "/${GITHUB_REPOSITORY}/pull/${{ github.event.pull_request.number }}" + + - name: Build documentation + if: github.repository != 'elastic/docs-builder' + uses: elastic/docs-builder@main + continue-on-error: ${{ inputs.strict != 'true' }} # Will be removed after the migration phase + with: + prefix: "/${{ github.repository }}/pull/${{ github.event.pull_request.number }}" + strict: ${{ inputs.strict }} - - uses: ./.github/actions/aws-auth + - uses: elastic/docs-builder/.github/actions/aws-auth@main - name: Upload to S3 env: @@ -65,29 +81,14 @@ jobs: - name: Update deployment status uses: actions/github-script@v7 - if: steps.deployment.outputs.result + if: always() && steps.deployment.outputs.result with: script: | await github.rest.repos.createDeploymentStatus({ owner: context.repo.owner, repo: context.repo.repo, deployment_id: ${{ steps.deployment.outputs.result }}, - state: "success", - description: "Deployment completed", + state: "${{ job.status == 'success' && 'success' || 'failure' }}", environment_url: `https://docs-v3-preview.elastic.dev/${context.repo.owner}/${context.repo.repo}/pull/${context.issue.number}`, log_url: `https://github.com/${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId}?pr=${context.issue.number}`, }) - - - name: Update Deployment Status on Failure - if: failure() && steps.deployment.outputs.result - uses: actions/github-script@v7 - with: - script: | - await github.rest.repos.createDeploymentStatus({ - owner: context.repo.owner, - repo: context.repo.repo, - deployment_id: ${{ steps.deployment.outputs.result }}, - state: "failure", - description: "Deployment failed", - log_url: `https://github.com/${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId}?pr=${context.issue.number}`, - })