From 033abba65f272dae602d447c6914f3e0cc76f094 Mon Sep 17 00:00:00 2001 From: Sam Lijin Date: Fri, 13 Dec 2024 12:41:30 -0800 Subject: [PATCH] restore the release workflow --- .github/workflows/release.yml | 302 +++++++++++++++++----------------- 1 file changed, 149 insertions(+), 153 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 255f3eddc..9fee7b48d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,8 +16,6 @@ on: tags: - "test-release/*.*" - "*.*" - branches: - - sam/npm-token-fix concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true @@ -27,65 +25,65 @@ permissions: id-token: write jobs: - # build-python-release: - # uses: ./.github/workflows/build-python-release.reusable.yaml - - # build-ruby-release: - # uses: ./.github/workflows/build-ruby-release.reusable.yaml - - # build-typescript-release: - # uses: ./.github/workflows/build-typescript-release.reusable.yaml - - # build-vscode-release: - # uses: ./.github/workflows/build-vscode-release.reusable.yaml - - # # placeholder fan-in step - # all-builds: - # name: Assert all builds passed - # runs-on: ubuntu-latest - # needs: - # - build-python-release - # - build-ruby-release - # - build-typescript-release - # - build-vscode-release - # steps: - # - run: echo "::do-nothing::" >/dev/null - - # publish-to-pypi: - # environment: release - # needs: [all-builds] - # if: ${{ startsWith(github.ref, 'refs/tags/') }} - # runs-on: ubuntu-latest - # steps: - # - uses: actions/checkout@v4 - # - uses: actions/setup-python@v5 - # with: - # python-version: "3.8" - # - uses: actions/download-artifact@v4 - # with: - # pattern: wheels-* - # path: dist - # merge-multiple: true - - # # Verify we have the expected number of wheels - # - name: Verify wheel count - # run: | - # set -euo pipefail - # ls dist/ - # wheel_count=$(ls dist/*.whl 2>/dev/null | wc -l) - # if [ "$wheel_count" -lt 7 ]; then - # echo "Error: Expected at least 7 wheels, but found $wheel_count" - # exit 1 - # fi - # echo "Found $wheel_count wheels" - - # # authz is managed via OIDC configured at https://pypi.org/manage/project/baml-py/settings/publishing/ - # # it is pinned to this github actions filename, so renaming this file is not safe!! - # - name: Publish package to PyPI - # uses: PyO3/maturin-action@v1 - # with: - # command: upload - # args: dist/* + build-python-release: + uses: ./.github/workflows/build-python-release.reusable.yaml + + build-ruby-release: + uses: ./.github/workflows/build-ruby-release.reusable.yaml + + build-typescript-release: + uses: ./.github/workflows/build-typescript-release.reusable.yaml + + build-vscode-release: + uses: ./.github/workflows/build-vscode-release.reusable.yaml + + # placeholder fan-in step + all-builds: + name: Assert all builds passed + runs-on: ubuntu-latest + needs: + - build-python-release + - build-ruby-release + - build-typescript-release + - build-vscode-release + steps: + - run: echo "::do-nothing::" >/dev/null + + publish-to-pypi: + environment: release + needs: [all-builds] + if: ${{ startsWith(github.ref, 'refs/tags/') }} + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: "3.8" + - uses: actions/download-artifact@v4 + with: + pattern: wheels-* + path: dist + merge-multiple: true + + # Verify we have the expected number of wheels + - name: Verify wheel count + run: | + set -euo pipefail + ls dist/ + wheel_count=$(ls dist/*.whl 2>/dev/null | wc -l) + if [ "$wheel_count" -lt 7 ]; then + echo "Error: Expected at least 7 wheels, but found $wheel_count" + exit 1 + fi + echo "Found $wheel_count wheels" + + # authz is managed via OIDC configured at https://pypi.org/manage/project/baml-py/settings/publishing/ + # it is pinned to this github actions filename, so renaming this file is not safe!! + - name: Publish package to PyPI + uses: PyO3/maturin-action@v1 + with: + command: upload + args: dist/* publish-to-npm: environment: release @@ -123,8 +121,6 @@ jobs: with: pattern: bindings-* path: engine/language_client_typescript/artifacts - run-id: 12318760112 - github-token: ${{ secrets.SAM_GITHUB_PAT }} - name: create npm dirs run: pnpm napi create-npm-dirs @@ -140,93 +136,93 @@ jobs: run: npm publish --access public working-directory: engine/language_client_typescript - # publish-to-rubygems: - # environment: release - # needs: [all-builds] - # if: ${{ startsWith(github.ref, 'refs/tags/') }} - # runs-on: ubuntu-latest - # steps: - # - uses: actions/checkout@v4 - - # - uses: rubygems/configure-rubygems-credentials@main - # with: - # # https://rubygems.org/profile/oidc/api_key_roles/rg_oidc_akr_p6x4xz53qtk948na3bgy - # role-to-assume: rg_oidc_akr_p6x4xz53qtk948na3bgy - - # - uses: jdx/mise-action@v2 - - # - uses: actions/download-artifact@v4 - # with: - # pattern: gem-* - # path: engine/language_client_ruby/pkg/ - # merge-multiple: true - - # - working-directory: engine/language_client_ruby - # run: | - # set -euxo pipefail - # find pkg - # for i in $(ls pkg/*.gem); do - # gem push $i - # done - - # publish-to-github: - # environment: release - # needs: [all-builds] - # if: ${{ startsWith(github.ref, 'refs/tags/') }} - # runs-on: ubuntu-latest - # steps: - # - uses: actions/checkout@v4 - - # - name: Get Changelog - # id: latest_release - # run: | - # echo "::set-output name=changelog::$(awk '/^## \[/{if (p) exit; p=1} p' CHANGELOG.md)" - - # - name: Create Release - # uses: mikepenz/action-gh-release@v1 #softprops/action-gh-release - # with: - # body: ${{steps.latest_release.outputs.changelog}} - - # publish-to-open-vsx: - # environment: release - # needs: [all-builds] - # runs-on: ubuntu-latest - # if: ${{ startsWith(github.ref, 'refs/tags/') || inputs.force_publish_vscode }} - # steps: - # - uses: actions/checkout@v4 - # - uses: jdx/mise-action@v2 - # - name: Install Dependencies - # run: pnpm install --frozen-lockfile - # working-directory: typescript/ - # - uses: actions/download-artifact@v4 - # with: - # name: baml-vscode-vsix - # path: typescript/vscode-ext/packages/out/ - # - name: Publish to open-vsx - # run: | - # cd typescript/vscode-ext/packages - # pnpm ovsx publish --packagePath ./out/*.vsix - # env: - # OVSX_PAT: ${{ secrets.OVSX_PAT }} - - # publish-to-vscode-marketplace: - # environment: release - # needs: [all-builds] - # runs-on: ubuntu-latest - # if: ${{ startsWith(github.ref, 'refs/tags/') || inputs.force_publish_vscode }} - # steps: - # - uses: actions/checkout@v4 - # - uses: jdx/mise-action@v2 - # - name: Install Dependencies - # run: pnpm install --frozen-lockfile - # working-directory: typescript/ - # - uses: actions/download-artifact@v4 - # with: - # name: baml-vscode-vsix - # path: typescript/vscode-ext/packages/out/ - # - name: Publish to VSCode Marketplace - # run: | - # cd typescript/vscode-ext/packages - # pnpm vsce publish --packagePath ./out/*.vsix - # env: - # VSCE_PAT: ${{ secrets.VSCODE_PAT }} + publish-to-rubygems: + environment: release + needs: [all-builds] + if: ${{ startsWith(github.ref, 'refs/tags/') }} + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: rubygems/configure-rubygems-credentials@main + with: + # https://rubygems.org/profile/oidc/api_key_roles/rg_oidc_akr_p6x4xz53qtk948na3bgy + role-to-assume: rg_oidc_akr_p6x4xz53qtk948na3bgy + + - uses: jdx/mise-action@v2 + + - uses: actions/download-artifact@v4 + with: + pattern: gem-* + path: engine/language_client_ruby/pkg/ + merge-multiple: true + + - working-directory: engine/language_client_ruby + run: | + set -euxo pipefail + find pkg + for i in $(ls pkg/*.gem); do + gem push $i + done + + publish-to-github: + environment: release + needs: [all-builds] + if: ${{ startsWith(github.ref, 'refs/tags/') }} + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Get Changelog + id: latest_release + run: | + echo "::set-output name=changelog::$(awk '/^## \[/{if (p) exit; p=1} p' CHANGELOG.md)" + + - name: Create Release + uses: mikepenz/action-gh-release@v1 #softprops/action-gh-release + with: + body: ${{steps.latest_release.outputs.changelog}} + + publish-to-open-vsx: + environment: release + needs: [all-builds] + runs-on: ubuntu-latest + if: ${{ startsWith(github.ref, 'refs/tags/') || inputs.force_publish_vscode }} + steps: + - uses: actions/checkout@v4 + - uses: jdx/mise-action@v2 + - name: Install Dependencies + run: pnpm install --frozen-lockfile + working-directory: typescript/ + - uses: actions/download-artifact@v4 + with: + name: baml-vscode-vsix + path: typescript/vscode-ext/packages/out/ + - name: Publish to open-vsx + run: | + cd typescript/vscode-ext/packages + pnpm ovsx publish --packagePath ./out/*.vsix + env: + OVSX_PAT: ${{ secrets.OVSX_PAT }} + + publish-to-vscode-marketplace: + environment: release + needs: [all-builds] + runs-on: ubuntu-latest + if: ${{ startsWith(github.ref, 'refs/tags/') || inputs.force_publish_vscode }} + steps: + - uses: actions/checkout@v4 + - uses: jdx/mise-action@v2 + - name: Install Dependencies + run: pnpm install --frozen-lockfile + working-directory: typescript/ + - uses: actions/download-artifact@v4 + with: + name: baml-vscode-vsix + path: typescript/vscode-ext/packages/out/ + - name: Publish to VSCode Marketplace + run: | + cd typescript/vscode-ext/packages + pnpm vsce publish --packagePath ./out/*.vsix + env: + VSCE_PAT: ${{ secrets.VSCODE_PAT }}