diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml index bcae051a4..9f89b4ee3 100644 --- a/.github/workflows/release-drafter.yml +++ b/.github/workflows/release-drafter.yml @@ -11,6 +11,8 @@ permissions: jobs: update-release-draft: + concurrency: + group: release-drafter permissions: contents: write pull-requests: read diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0b2442400..c24c8ebdd 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,14 +1,45 @@ -name: Pre-release main branch +name: Release on: - release: - types: [published] - + workflow_dispatch: + permissions: contents: read packages: write jobs: + + release-drafter: + concurrency: + group: release-drafter + outputs: + tag_name: ${{ steps.release-drafter.outputs.tag_name }} + permissions: + contents: write + pull-requests: read + runs-on: ubuntu-latest + steps: + - name: Verify branch + run: | + if [[ "${{ github.ref }}" != refs/heads/main ]]; then + echo "This workflow is only allowed to run on the main branch." + exit 1 + fi + - uses: release-drafter/release-drafter@b1476f6e6eb133afa41ed8589daba6dc69b4d3f5 # v6.1.0 + id: release-drafter + env: + GITHUB_TOKEN: ${{ github.token }} + - name: Create tag + uses: actions/github-script@v7 + with: + script: | + github.rest.git.createRef({ + owner: context.repo.owner, + repo: context.repo.repo, + ref: 'refs/tags/${{ steps.release-drafter.outputs.tag_name }}', + sha: context.sha + }) + containers: runs-on: ubuntu-latest outputs: @@ -17,7 +48,8 @@ jobs: steps: - uses: actions/checkout@v4 - + with: + ref: ${{ steps.release-drafter.outputs.tag_name }} - name: Bootstrap Action Workspace id: bootstrap uses: ./.github/actions/bootstrap @@ -29,16 +61,19 @@ jobs: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Publish Containers run: ./build.sh publishcontainers release-lambda: runs-on: ubuntu-latest + needs: + - release-drafter permissions: contents: write steps: - uses: actions/checkout@v4 + with: + ref: ${{ steps.release-drafter.outputs.tag_name }} - name: Amazon Linux 2023 build run: | docker build . -t publish-links-index:latest -f src/infra/docs-lambda-index-publisher/lambda.DockerFile @@ -50,11 +85,13 @@ jobs: - name: Attach Distribution to release env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: gh release upload ${{ github.event.release.tag_name }} .artifacts/docs-lambda-index-publisher/release_linux-x64/bootstrap + run: gh release upload ${{ needs.release-drafter.outputs.tag_name }} .artifacts/docs-lambda-index-publisher/release_linux-x64/bootstrap shell: bash release: - needs: [containers] + needs: + - containers + - release-drafter strategy: fail-fast: false matrix: @@ -70,6 +107,8 @@ jobs: steps: - uses: actions/checkout@v4 + with: + ref: ${{ steps.release-drafter.outputs.tag_name }} - name: Bootstrap Action Workspace id: bootstrap @@ -90,6 +129,20 @@ jobs: env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | - gh release upload ${{ github.event.release.tag_name }} .artifacts/publish/docs-builder/release/*.zip - gh release upload ${{ github.event.release.tag_name }} .artifacts/publish/docs-assembler/release/*.zip + gh release upload ${{ needs.release-drafter.outputs.tag_name }} .artifacts/publish/docs-builder/release/*.zip + gh release upload ${{ needs.release-drafter.outputs.tag_name }} .artifacts/publish/docs-assembler/release/*.zip shell: bash + + publish-release: + needs: + - release + - release-lambda + - release-drafter + runs-on: ubuntu-latest + steps: + - name: Publish release + env: + GH_TOKEN: ${{ github.token }} + TAG_NAME: ${{ needs.release-drafter.outputs.tag_name }} + run: | + gh release edit ${{ needs.release-drafter.outputs.tag_name }} --draft=false --latest diff --git a/README.md b/README.md index 0a549390a..7d3b1a39a 100644 --- a/README.md +++ b/README.md @@ -173,6 +173,8 @@ See the [release-drafter configuration](./.github/release-drafter.yml) for more ## Creating a New Release +To create a new release trigger the [release](https://github.com/elastic/docs-builder/actions/workflows/release.yml) workflow on the `main` branch. + Every time a pull request is merged into the `main` branch, release-drafter will create a draft release or update the existing draft release in the [Releases](https://github.com/elastic/docs-builder/releases) page.