Skip to content

BAML Release

BAML Release #15

Workflow file for this run

name: BAML Release
on:
push:
tags:
- "test-release/*.*"
- "gh-release-only/*.*"
- "*.*"
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
id-token: write
env:
DEBUG: napi:*
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 [email protected]
# 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]
steps:
- name: Build Changelog
id: github_release
uses: mikepenz/release-changelog-builder-action@v4
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Create Release
uses: mikepenz/[email protected] #softprops/action-gh-release
with:
body: ${{steps.github_release.outputs.changelog}}