From cbf2612a967aab89c5f8eba7fae929c165231990 Mon Sep 17 00:00:00 2001 From: Vaibhav Gupta Date: Tue, 18 Jun 2024 12:22:29 -0700 Subject: [PATCH] create release --- .github/workflows/release.yml | 619 +++++++++++++++++----------------- 1 file changed, 310 insertions(+), 309 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c8ffe6dfb..01d0a14fc 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -4,6 +4,7 @@ on: push: tags: - "test-release/*.*" + - "gh-release-only/*.*" - "*.*" concurrency: @@ -18,318 +19,318 @@ env: APP_NAME: baml MACOSX_DEPLOYMENT_TARGET: "10.13" jobs: - build-wasm: - runs-on: ubuntu-latest - name: Build WASM - steps: - - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@stable - with: - toolchain: stable - targets: wasm32-unknown-unknown - - uses: Swatinem/rust-cache@v2 - with: - workspaces: engine - - name: Bindgen - run: cargo install -f wasm-bindgen-cli@0.2.92 - working-directory: engine/baml-schema-wasm - - uses: pnpm/action-setup@v3 - with: - version: 8 - run_install: false - # Set up Node.js - - name: Setup Node.js - uses: actions/setup-node@v3 - with: - cache: "pnpm" - node-version: 20 - cache-dependency-path: | - typescript/**/pnpm-lock.yaml - - name: Install Dependencies - run: pnpm install --frozen-lockfile - working-directory: typescript/ - - name: Build Typescript Project - run: pnpm run build - working-directory: typescript/ - - # Build the VSCode Extension - - name: Build VSCode Extension - id: build - run: | - pnpm run vscode:package - VERSION=$(cat package.json| grep version | cut -d ' ' -f 4 | sed 's/[",]//g') - echo "version=$VERSION" >> $GITHUB_OUTPUT - working-directory: typescript/vscode-ext/packages - - # Upload the artifact (helpful for debugging and manual downloads) - - name: Upload VSCode Extension Artifact - uses: actions/upload-artifact@v4 - with: - name: baml-vscode.vsix - path: typescript/vscode-ext/packages/baml-extension-${{ steps.build.outputs.version }}.vsix - if-no-files-found: error - - # Upload the artifact (helpful for debugging and manual downloads) - - name: Upload VSCode Extension Artifact - uses: actions/upload-artifact@v4 - with: - name: baml-out - path: typescript/vscode-ext/packages/vscode/out - if-no-files-found: error - - # upload the lang server artifact - - name: Upload VSCode Lang Server Extension Artifact - uses: actions/upload-artifact@v4 - with: - name: language-server - path: typescript/vscode-ext/packages/language-server/out - if-no-files-found: error - - - name: VSCode Playground Artifact - uses: actions/upload-artifact@v4 - with: - name: vscode-playground - path: typescript/vscode-ext/packages/web-panel/dist - if-no-files-found: error - - build-release: - strategy: - fail-fast: true - matrix: - _: - - target: aarch64-apple-darwin - host: macos-14 - node_build: pnpm build --target aarch64-apple-darwin - - # Disabled as python is not supported on aarch64 windows - # - target: aarch64-pc-windows-msvc - # host: windows-latest - # node_build: pnpm build --target aarch64-pc-windows-msvc - - - target: aarch64-unknown-linux-gnu - host: ubuntu-latest - node_build: pnpm build --target aarch64-unknown-linux-gnu --use-napi-cross - - - target: x86_64-apple-darwin - host: macos-latest - node_build: pnpm build --target x86_64-apple-darwin - - - target: x86_64-pc-windows-msvc - host: windows-latest - node_build: pnpm build --target x86_64-pc-windows-msvc - - - target: x86_64-unknown-linux-gnu - host: ubuntu-latest - node_build: pnpm build --target x86_64-unknown-linux-gnu --use-napi-cross - - name: Build ${{ matrix._.target }} - runs-on: ${{ matrix._.host }} - steps: - - uses: actions/checkout@v4 - # Install python set up - - uses: actions/setup-python@v5 - with: - python-version: "3.8" - architecture: ${{ matrix._.host == 'windows-latest' && 'x64' || null }} - # Install node set up - - uses: pnpm/action-setup@v3 - with: - version: 9.0.6 - run_install: false - - uses: actions/setup-node@v4 - with: - node-version: 20 - cache: pnpm - cache-dependency-path: | - engine/language_client_typescript/pnpm-lock.yaml - # Install rust - - uses: dtolnay/rust-toolchain@stable - with: - toolchain: stable - targets: ${{ matrix._.target }} - # Install steps - - name: PNPM Install - run: pnpm install --frozen-lockfile - working-directory: engine/language_client_typescript - # Rust caching - - uses: Swatinem/rust-cache@v2 - with: - workspaces: engine - - name: Install aarch64-linux-gnu - if: matrix._.target == 'aarch64-unknown-linux-gnu' - run: sudo apt-get install gcc-aarch64-linux-gnu -y - - # This doesn't work aarch64, so we build each target separately - # - name: Build Rust - # run: cargo build --release --target ${{ matrix._.target }} - # working-directory: engine - - # Build Node - - name: PNPM Build - run: ${{ matrix._.node_build }} - working-directory: engine/language_client_typescript - - # Build Python - - name: Build Python - uses: PyO3/maturin-action@v1 - with: - target: ${{ matrix._.target }} - command: build - args: --release --out engine/language_client_python/dist --manifest-path engine/language_client_python/Cargo.toml - sccache: "true" - manylinux: ${{ matrix._.host == 'ubuntu-latest' && 'auto' || null }} - before-script-linux: | - if command -v yum &> /dev/null; then - yum update -y && yum install -y perl-core openssl openssl-devel pkgconfig libatomic - else - # If we're running on debian-based system. - apt update -y && apt-get install -y libssl-dev openssl pkg-config - fi - - # Upload - - name: Upload Python - uses: actions/upload-artifact@v4 - with: - name: wheels-${{ matrix._.target }} - path: engine/language_client_python/dist - if-no-files-found: error - - - name: Upload artifact - uses: actions/upload-artifact@v4 - with: - name: bindings-${{ matrix._.target }} - path: engine/language_client_typescript/*.node - if-no-files-found: error - - publish-to-pypi: - environment: release - needs: [build-release, build-wasm] - 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-* - - - run: mkdir dist && mv wheels-*/* dist - # 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 - if: ${{ !startsWith(github.ref, 'refs/tags/test-release') }} - uses: pypa/gh-action-pypi-publish@release/v1 - - publish-to-npm: - environment: release - needs: [build-release, build-wasm] - runs-on: ubuntu-latest - env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: 20 - - - name: setup pnpm - uses: pnpm/action-setup@v3 - with: - version: 9.0.6 - package_json_file: engine/language_client_typescript/package.json - run_install: false - - - name: Setup node - uses: actions/setup-node@v4 - with: - node-version: 20 - cache: pnpm - cache-dependency-path: engine/language_client_typescript/pnpm-lock.yaml - registry-url: "https://registry.npmjs.org" - - - name: Install dependencies - run: pnpm install - working-directory: engine/language_client_typescript - - - uses: actions/download-artifact@v4 - with: - pattern: bindings-* - path: engine/language_client_typescript/artifacts - - - name: create npm dirs - run: pnpm napi create-npm-dirs - working-directory: engine/language_client_typescript - - - name: Move artifacts - run: pnpm artifacts - working-directory: engine/language_client_typescript - - - name: Publish - if: ${{ !startsWith(github.ref, 'refs/tags/test-release') }} - run: | - npm publish --access public - working-directory: engine/language_client_typescript - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - - publish-vscode: - environment: release - needs: [build-release, build-wasm] - if: ${{ !startsWith(github.ref, 'refs/tags/test-release') }} - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - # Get all the artifacts - - name: Get artifact - uses: actions/download-artifact@v4 - with: - name: baml-vscode.vsix - path: typescript/vscode-ext/packages - - name: Get artifact - uses: actions/download-artifact@v4 - with: - name: baml-out - path: typescript/vscode-ext/packages/vscode/out - - name: Get artifact - uses: actions/download-artifact@v4 - with: - name: language-server - path: typescript/vscode-ext/packages/language-server/out - - name: Get artifact - uses: actions/download-artifact@v4 - with: - pattern: vscode-playground - path: typescript/vscode-ext/packages/web-panel/dist - - - name: setup pnpm - uses: pnpm/action-setup@v3 - with: - version: 9.0.6 - package_json_file: typescript/package.json - run_install: false - # Set up Node.js - - name: Setup Node.js - uses: actions/setup-node@v3 - with: - cache: "pnpm" - node-version: 20 - cache-dependency-path: typescript/pnpm-lock.yaml - - - name: Install Dependencies - run: pnpm install --frozen-lockfile - working-directory: typescript/ - - name: Publish - if: ${{ !startsWith(github.ref, 'refs/tags/test-release') }} - run: | - pnpm run vscode:publish --no-git-tag-version -p ${{ secrets.VSCODE_PAT }} - working-directory: typescript/vscode-ext/packages + # build-wasm: + # runs-on: ubuntu-latest + # name: Build WASM + # steps: + # - uses: actions/checkout@v4 + # - uses: dtolnay/rust-toolchain@stable + # with: + # toolchain: stable + # targets: wasm32-unknown-unknown + # - uses: Swatinem/rust-cache@v2 + # with: + # workspaces: engine + # - name: Bindgen + # run: cargo install -f wasm-bindgen-cli@0.2.92 + # working-directory: engine/baml-schema-wasm + # - uses: pnpm/action-setup@v3 + # with: + # version: 8 + # run_install: false + # # Set up Node.js + # - name: Setup Node.js + # uses: actions/setup-node@v3 + # with: + # cache: "pnpm" + # node-version: 20 + # cache-dependency-path: | + # typescript/**/pnpm-lock.yaml + # - name: Install Dependencies + # run: pnpm install --frozen-lockfile + # working-directory: typescript/ + # - name: Build Typescript Project + # run: pnpm run build + # working-directory: typescript/ + + # # Build the VSCode Extension + # - name: Build VSCode Extension + # id: build + # run: | + # pnpm run vscode:package + # VERSION=$(cat package.json| grep version | cut -d ' ' -f 4 | sed 's/[",]//g') + # echo "version=$VERSION" >> $GITHUB_OUTPUT + # working-directory: typescript/vscode-ext/packages + + # # Upload the artifact (helpful for debugging and manual downloads) + # - name: Upload VSCode Extension Artifact + # uses: actions/upload-artifact@v4 + # with: + # name: baml-vscode.vsix + # path: typescript/vscode-ext/packages/baml-extension-${{ steps.build.outputs.version }}.vsix + # if-no-files-found: error + + # # Upload the artifact (helpful for debugging and manual downloads) + # - name: Upload VSCode Extension Artifact + # uses: actions/upload-artifact@v4 + # with: + # name: baml-out + # path: typescript/vscode-ext/packages/vscode/out + # if-no-files-found: error + + # # upload the lang server artifact + # - name: Upload VSCode Lang Server Extension Artifact + # uses: actions/upload-artifact@v4 + # with: + # name: language-server + # path: typescript/vscode-ext/packages/language-server/out + # if-no-files-found: error + + # - name: VSCode Playground Artifact + # uses: actions/upload-artifact@v4 + # with: + # name: vscode-playground + # path: typescript/vscode-ext/packages/web-panel/dist + # if-no-files-found: error + + # build-release: + # strategy: + # fail-fast: true + # matrix: + # _: + # - target: aarch64-apple-darwin + # host: macos-14 + # node_build: pnpm build --target aarch64-apple-darwin + + # # Disabled as python is not supported on aarch64 windows + # # - target: aarch64-pc-windows-msvc + # # host: windows-latest + # # node_build: pnpm build --target aarch64-pc-windows-msvc + + # - target: aarch64-unknown-linux-gnu + # host: ubuntu-latest + # node_build: pnpm build --target aarch64-unknown-linux-gnu --use-napi-cross + + # - target: x86_64-apple-darwin + # host: macos-latest + # node_build: pnpm build --target x86_64-apple-darwin + + # - target: x86_64-pc-windows-msvc + # host: windows-latest + # node_build: pnpm build --target x86_64-pc-windows-msvc + + # - target: x86_64-unknown-linux-gnu + # host: ubuntu-latest + # node_build: pnpm build --target x86_64-unknown-linux-gnu --use-napi-cross + + # name: Build ${{ matrix._.target }} + # runs-on: ${{ matrix._.host }} + # steps: + # - uses: actions/checkout@v4 + # # Install python set up + # - uses: actions/setup-python@v5 + # with: + # python-version: "3.8" + # architecture: ${{ matrix._.host == 'windows-latest' && 'x64' || null }} + # # Install node set up + # - uses: pnpm/action-setup@v3 + # with: + # version: 9.0.6 + # run_install: false + # - uses: actions/setup-node@v4 + # with: + # node-version: 20 + # cache: pnpm + # cache-dependency-path: | + # engine/language_client_typescript/pnpm-lock.yaml + # # Install rust + # - uses: dtolnay/rust-toolchain@stable + # with: + # toolchain: stable + # targets: ${{ matrix._.target }} + # # Install steps + # - name: PNPM Install + # run: pnpm install --frozen-lockfile + # working-directory: engine/language_client_typescript + # # Rust caching + # - uses: Swatinem/rust-cache@v2 + # with: + # workspaces: engine + # - name: Install aarch64-linux-gnu + # if: matrix._.target == 'aarch64-unknown-linux-gnu' + # run: sudo apt-get install gcc-aarch64-linux-gnu -y + + # # This doesn't work aarch64, so we build each target separately + # # - name: Build Rust + # # run: cargo build --release --target ${{ matrix._.target }} + # # working-directory: engine + + # # Build Node + # - name: PNPM Build + # run: ${{ matrix._.node_build }} + # working-directory: engine/language_client_typescript + + # # Build Python + # - name: Build Python + # uses: PyO3/maturin-action@v1 + # with: + # target: ${{ matrix._.target }} + # command: build + # args: --release --out engine/language_client_python/dist --manifest-path engine/language_client_python/Cargo.toml + # sccache: "true" + # manylinux: ${{ matrix._.host == 'ubuntu-latest' && 'auto' || null }} + # before-script-linux: | + # if command -v yum &> /dev/null; then + # yum update -y && yum install -y perl-core openssl openssl-devel pkgconfig libatomic + # else + # # If we're running on debian-based system. + # apt update -y && apt-get install -y libssl-dev openssl pkg-config + # fi + + # # Upload + # - name: Upload Python + # uses: actions/upload-artifact@v4 + # with: + # name: wheels-${{ matrix._.target }} + # path: engine/language_client_python/dist + # if-no-files-found: error + + # - name: Upload artifact + # uses: actions/upload-artifact@v4 + # with: + # name: bindings-${{ matrix._.target }} + # path: engine/language_client_typescript/*.node + # if-no-files-found: error + + # publish-to-pypi: + # environment: release + # needs: [build-release, build-wasm] + # 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-* + + # - run: mkdir dist && mv wheels-*/* dist + # # 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 + # if: ${{ !startsWith(github.ref, 'refs/tags/test-release') }} + # uses: pypa/gh-action-pypi-publish@release/v1 + + # publish-to-npm: + # environment: release + # needs: [build-release, build-wasm] + # runs-on: ubuntu-latest + # env: + # NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + # steps: + # - uses: actions/checkout@v4 + # - uses: actions/setup-node@v4 + # with: + # node-version: 20 + + # - name: setup pnpm + # uses: pnpm/action-setup@v3 + # with: + # version: 9.0.6 + # package_json_file: engine/language_client_typescript/package.json + # run_install: false + + # - name: Setup node + # uses: actions/setup-node@v4 + # with: + # node-version: 20 + # cache: pnpm + # cache-dependency-path: engine/language_client_typescript/pnpm-lock.yaml + # registry-url: "https://registry.npmjs.org" + + # - name: Install dependencies + # run: pnpm install + # working-directory: engine/language_client_typescript + + # - uses: actions/download-artifact@v4 + # with: + # pattern: bindings-* + # path: engine/language_client_typescript/artifacts + + # - name: create npm dirs + # run: pnpm napi create-npm-dirs + # working-directory: engine/language_client_typescript + + # - name: Move artifacts + # run: pnpm artifacts + # working-directory: engine/language_client_typescript + + # - name: Publish + # if: ${{ !startsWith(github.ref, 'refs/tags/test-release') }} + # run: | + # npm publish --access public + # working-directory: engine/language_client_typescript + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + + # publish-vscode: + # environment: release + # needs: [build-release, build-wasm] + # if: ${{ !startsWith(github.ref, 'refs/tags/test-release') }} + # runs-on: ubuntu-latest + # steps: + # - uses: actions/checkout@v4 + + # # Get all the artifacts + # - name: Get artifact + # uses: actions/download-artifact@v4 + # with: + # name: baml-vscode.vsix + # path: typescript/vscode-ext/packages + # - name: Get artifact + # uses: actions/download-artifact@v4 + # with: + # name: baml-out + # path: typescript/vscode-ext/packages/vscode/out + # - name: Get artifact + # uses: actions/download-artifact@v4 + # with: + # name: language-server + # path: typescript/vscode-ext/packages/language-server/out + # - name: Get artifact + # uses: actions/download-artifact@v4 + # with: + # pattern: vscode-playground + # path: typescript/vscode-ext/packages/web-panel/dist + + # - name: setup pnpm + # uses: pnpm/action-setup@v3 + # with: + # version: 9.0.6 + # package_json_file: typescript/package.json + # run_install: false + # # Set up Node.js + # - name: Setup Node.js + # uses: actions/setup-node@v3 + # with: + # cache: "pnpm" + # node-version: 20 + # cache-dependency-path: typescript/pnpm-lock.yaml + + # - name: Install Dependencies + # run: pnpm install --frozen-lockfile + # working-directory: typescript/ + # - name: Publish + # if: ${{ !startsWith(github.ref, 'refs/tags/test-release') }} + # run: | + # pnpm run vscode:publish --no-git-tag-version -p ${{ secrets.VSCODE_PAT }} + # working-directory: typescript/vscode-ext/packages release-github: runs-on: ubuntu-latest - needs: [publish-to-pypi, publish-to-npm, publish-vscode] + # needs: [publish-to-pypi, publish-to-npm, publish-vscode] steps: - name: Build Changelog id: github_release