mirror of
https://github.com/oven-sh/bun
synced 2026-02-09 10:28:47 +00:00
391 lines
15 KiB
YAML
391 lines
15 KiB
YAML
name: bun-macOS-x64
|
|
env:
|
|
REGISTRY: ghcr.io
|
|
IMAGE_NAME: ${{ github.repository }}
|
|
TEST_TAG: bun-test'
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
paths:
|
|
- "src/**/*"
|
|
- "test/**/*"
|
|
- "build.zig"
|
|
- "Makefile"
|
|
- "Dockerfile"
|
|
pull_request:
|
|
branches: [main]
|
|
paths:
|
|
- "src/**/*"
|
|
- "test/**/*"
|
|
- "build.zig"
|
|
- "Makefile"
|
|
- "Dockerfile"
|
|
# Allows you to run this workflow manually from the Actions tab
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
macos-object-files:
|
|
name: macOS Object
|
|
runs-on: zig-object
|
|
strategy:
|
|
matrix:
|
|
include:
|
|
# - cpu: westmere
|
|
# arch: x86_64
|
|
# tag: bun-obj-darwin-x64-baseline
|
|
- cpu: haswell
|
|
arch: x86_64
|
|
tag: bun-obj-darwin-x64
|
|
# - cpu: native
|
|
# arch: aarch64
|
|
# tag: bun-obj-darwin-aarch64
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: recursive
|
|
- uses: docker/setup-buildx-action@v2
|
|
id: buildx
|
|
with:
|
|
install: true
|
|
- name: Run
|
|
run: |
|
|
rm -rf ${{runner.temp}}/release
|
|
- name: Login to GitHub Container Registry
|
|
uses: docker/login-action@v2
|
|
with:
|
|
registry: ghcr.io
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
- name: Build and push
|
|
uses: docker/build-push-action@v3
|
|
if: runner.arch == 'X64'
|
|
with:
|
|
context: .
|
|
push: false
|
|
cache-from: type=gha
|
|
cache-to: type=gha,mode=min
|
|
build-args: |
|
|
ARCH=${{ matrix.arch }}
|
|
BUILDARCH=amd64
|
|
BUILD_MACHINE_ARCH=x86_64
|
|
CPU_TARGET=${{ matrix.cpu }}
|
|
TRIPLET=${{matrix.arch}}-macos-none
|
|
GIT_SHA=${{github.sha}}
|
|
platforms: linux/amd64
|
|
target: build_release_obj
|
|
outputs: type=local,dest=${{runner.temp}}/release
|
|
- name: Build and push
|
|
uses: docker/build-push-action@v3
|
|
if: runner.arch == 'ARM64'
|
|
with:
|
|
context: .
|
|
push: false
|
|
cache-from: type=gha
|
|
cache-to: type=gha,mode=min
|
|
build-args: |
|
|
ARCH=${{ matrix.arch }}
|
|
BUILDARCH=arm64
|
|
BUILD_MACHINE_ARCH=aarch64
|
|
CPU_TARGET=${{ matrix.cpu }}
|
|
TRIPLET=${{matrix.arch}}-macos-none
|
|
GIT_SHA=${{github.sha}}
|
|
platforms: linux/arm64
|
|
target: build_release_obj
|
|
outputs: type=local,dest=${{runner.temp}}/release
|
|
- uses: actions/upload-artifact@v3
|
|
with:
|
|
name: ${{ matrix.tag }}
|
|
path: ${{runner.temp}}/release/bun.o
|
|
macOS-cpp:
|
|
name: macOS C++
|
|
runs-on: ${{ matrix.runner }}
|
|
timeout-minutes: 90
|
|
strategy:
|
|
matrix:
|
|
include:
|
|
# - cpu: westmere
|
|
# arch: x86_64
|
|
# tag: bun-darwin-x64-baseline
|
|
# obj: bun-obj-darwin-x64-baseline
|
|
# runner: macos-11
|
|
# artifact: bun-obj-darwin-x64-baseline
|
|
# webkit_url: "https://github.com/oven-sh/WebKit/releases/download/dec30/bun-webkit-macos-amd64-lto.tar.gz"
|
|
# dependencies: true
|
|
# compile_obj: false
|
|
- cpu: haswell
|
|
arch: x86_64
|
|
tag: bun-darwin-x64
|
|
obj: bun-obj-darwin-x64
|
|
runner: macos-11
|
|
artifact: bun-obj-darwin-x64
|
|
webkit_url: "https://github.com/oven-sh/WebKit/releases/download/dec30/bun-webkit-macos-amd64-lto.tar.gz"
|
|
dependencies: true
|
|
compile_obj: false
|
|
# - cpu: westmere
|
|
# arch: x86_64
|
|
# tag: bun-darwin-x64-baseline
|
|
# obj: bun-obj-darwin-x64-baseline
|
|
# runner: macos-11
|
|
# artifact: bun-obj-darwin-x64-baseline
|
|
# webkit_url: "https://github.com/oven-sh/WebKit/releases/download/dec30/bun-webkit-macos-amd64-lto.tar.gz"
|
|
# dependencies: false
|
|
# compile_obj: true
|
|
- cpu: haswell
|
|
arch: x86_64
|
|
tag: bun-darwin-x64
|
|
obj: bun-obj-darwin-x64
|
|
runner: macos-11
|
|
artifact: bun-obj-darwin-x64
|
|
webkit_url: "https://github.com/oven-sh/WebKit/releases/download/dec30/bun-webkit-macos-amd64-lto.tar.gz"
|
|
dependencies: false
|
|
compile_obj: true
|
|
# - cpu: native
|
|
# arch: aarch64
|
|
# tag: bun-darwin-aarch64
|
|
# obj: bun-obj-darwin-aarch64
|
|
# artifact: bun-obj-darwin-aarch64
|
|
# webkit_url: "https://github.com/oven-sh/WebKit/releases/download/dec30/bun-webkit-macos-arm64-lto.tar.gz"
|
|
# runner: macos-arm64
|
|
# dependencies: true
|
|
# compile_obj: true
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Checkout submodules
|
|
run: git submodule update --init --recursive --depth=1 --progress -j $(sysctl -n hw.ncpu)
|
|
- name: Install dependencies
|
|
env:
|
|
CPU_TARGET: ${{ matrix.cpu }}
|
|
JSC_BASE_DIR: ${{ runner.temp }}/bun-webkit
|
|
JSC_LIB: ${{ runner.temp }}/bun-webkit/lib
|
|
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1
|
|
HOMEBREW_NO_AUTO_UPDATE: 1
|
|
HOMEBREW_NO_INSTALL_CLEANUP: 1
|
|
BUN_DEPLOY_DIR: ${{ runner.temp }}/release/bun
|
|
OBJ_DIR: ${{ runner.temp }}/bun-cpp-obj
|
|
BUN_DEPS_OUT_DIR: ${{runner.temp}}/bun-deps
|
|
run: |
|
|
brew install rust ccache llvm@15 pkg-config coreutils libtool cmake libiconv automake openssl@1.1 ninja gnu-sed pkg-config esbuild --force
|
|
echo "export PATH=$(brew --prefix coreutils)/libexec/gnubin:\$PATH" >> $GITHUB_ENV
|
|
echo "export PATH=$(brew --prefix llvm@15)/bin:\$PATH" >> $GITHUB_ENV
|
|
brew link --overwrite llvm@15
|
|
- name: Download WebKit
|
|
if: matrix.compile_obj
|
|
env:
|
|
CPU_TARGET: ${{ matrix.cpu }}
|
|
JSC_BASE_DIR: ${{ runner.temp }}/bun-webkit
|
|
JSC_LIB: ${{ runner.temp }}/bun-webkit/lib
|
|
BUN_DEPLOY_DIR: ${{ runner.temp }}/release/bun
|
|
OBJ_DIR: ${{ runner.temp }}/bun-cpp-obj
|
|
BUN_DEPS_OUT_DIR: ${{runner.temp}}/bun-deps
|
|
WEBKIT_RELEASE_DIR: ${{ runner.temp }}/bun-webkit
|
|
WEBKIT_RELEASE_DIR_LTO: ${{ runner.temp }}/bun-webkit
|
|
run: |
|
|
rm -rf $JSC_BASE_DIR
|
|
mkdir -p $JSC_BASE_DIR
|
|
curl -L ${{ matrix.webkit_url }} | tar -xz -C $JSC_BASE_DIR --strip-components=1
|
|
- name: ccache (dependencies)
|
|
uses: hendrikmuhs/ccache-action@v1.2
|
|
if: matrix.dependencies
|
|
with:
|
|
key: ${{ runner.os }}-ccache-${{ matrix.tag }}-dependencies
|
|
restore-keys: ${{ runner.os }}-ccache-${{ matrix.tag }}-dependencies
|
|
- name: ccache (c++)
|
|
uses: hendrikmuhs/ccache-action@v1.2
|
|
if: matrix.compile_obj
|
|
with:
|
|
key: ${{ runner.os }}-ccache-${{ matrix.tag }}-obj
|
|
restore-keys: ${{ runner.os }}-ccache-${{ matrix.tag }}-obj
|
|
- name: Compile dependencies
|
|
if: matrix.dependencies
|
|
env:
|
|
CPU_TARGET: ${{ matrix.cpu }}
|
|
JSC_BASE_DIR: ${{ runner.temp }}/bun-webkit
|
|
JSC_LIB: ${{ runner.temp }}/bun-webkit/lib
|
|
BUN_DEPLOY_DIR: ${{ runner.temp }}/release/bun
|
|
OBJ_DIR: ${{ runner.temp }}/bun-cpp-obj
|
|
BUN_DEPS_OUT_DIR: ${{runner.temp}}/bun-deps
|
|
WEBKIT_RELEASE_DIR: ${{ runner.temp }}/bun-webkit
|
|
WEBKIT_RELEASE_DIR_LTO: ${{ runner.temp }}/bun-webkit
|
|
run: |
|
|
mkdir -p $OBJ_DIR $BUN_DEPS_OUT_DIR
|
|
make vendor-without-check
|
|
- name: Compile C++
|
|
if: matrix.compile_obj
|
|
env:
|
|
CPU_TARGET: ${{ matrix.cpu }}
|
|
JSC_BASE_DIR: ${{ runner.temp }}/bun-webkit
|
|
JSC_LIB: ${{ runner.temp }}/bun-webkit/lib
|
|
BUN_DEPLOY_DIR: ${{ runner.temp }}/release/bun
|
|
OBJ_DIR: ${{ runner.temp }}/bun-cpp-obj
|
|
BUN_DEPS_OUT_DIR: ${{runner.temp}}/bun-deps
|
|
WEBKIT_RELEASE_DIR: ${{ runner.temp }}/bun-webkit
|
|
WEBKIT_RELEASE_DIR_LTO: ${{ runner.temp }}/bun-webkit
|
|
run: |
|
|
mkdir -p $OBJ_DIR $BUN_DEPS_OUT_DIR
|
|
make -j $(sysctl -n hw.ncpu) release-bindings
|
|
- name: Upload C++
|
|
if: matrix.compile_obj
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: ${{ matrix.tag }}-cpp
|
|
path: ${{ runner.temp }}/bun-cpp-obj
|
|
- name: Upload Dependencies
|
|
if: matrix.dependencies
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: ${{ matrix.tag }}-deps
|
|
path: ${{runner.temp}}/bun-deps
|
|
|
|
macOS:
|
|
name: macOS Link
|
|
runs-on: ${{ matrix.runner }}
|
|
needs: [macOS-cpp, macos-object-files]
|
|
timeout-minutes: 90
|
|
strategy:
|
|
matrix:
|
|
include:
|
|
# - cpu: westmere
|
|
# arch: x86_64
|
|
# tag: bun-darwin-x64-baseline
|
|
# obj: bun-obj-darwin-x64-baseline
|
|
# package: bun-darwin-x64
|
|
# runner: macos-11
|
|
# artifact: bun-obj-darwin-x64-baseline
|
|
# webkit_url: "https://github.com/oven-sh/WebKit/releases/download/dec30/bun-webkit-macos-amd64-lto.tar.gz"
|
|
- cpu: haswell
|
|
arch: x86_64
|
|
tag: bun-darwin-x64
|
|
obj: bun-obj-darwin-x64
|
|
package: bun-darwin-x64
|
|
runner: macos-11
|
|
artifact: bun-obj-darwin-x64
|
|
webkit_url: "https://github.com/oven-sh/WebKit/releases/download/dec30/bun-webkit-macos-amd64-lto.tar.gz"
|
|
# - cpu: native
|
|
# arch: aarch64
|
|
# tag: bun-darwin-aarch64
|
|
# obj: bun-obj-darwin-aarch64
|
|
# package: bun-darwin-aarch64
|
|
# artifact: bun-obj-darwin-aarch64
|
|
# webkit_url: "https://github.com/oven-sh/WebKit/releases/download/dec30/bun-webkit-macos-arm64-lto.tar.gz"
|
|
# runner: macos-arm64
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Checkout submodules
|
|
run: git submodule update --init --recursive --depth=1 --progress -j $(sysctl -n hw.ncpu)
|
|
- name: Install dependencies
|
|
env:
|
|
CPU_TARGET: ${{ matrix.cpu }}
|
|
JSC_BASE_DIR: ${{ runner.temp }}/bun-webkit
|
|
JSC_LIB: ${{ runner.temp }}/bun-webkit/lib
|
|
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1
|
|
HOMEBREW_NO_AUTO_UPDATE: 1
|
|
HOMEBREW_NO_INSTALL_CLEANUP: 1
|
|
BUN_DEPLOY_DIR: ${{ runner.temp }}/release/bun
|
|
OBJ_DIR: ${{ runner.temp }}/bun-cpp-obj
|
|
BUN_DEPS_OUT_DIR: ${{runner.temp}}/bun-deps
|
|
run: |
|
|
brew install rust ccache llvm@15 pkg-config coreutils libtool cmake libiconv automake openssl@1.1 ninja gnu-sed pkg-config esbuild --force
|
|
echo "export PATH=$(brew --prefix coreutils)/libexec/gnubin:\$PATH" >> $GITHUB_ENV
|
|
echo "export PATH=$(brew --prefix llvm@15)/bin:\$PATH" >> $GITHUB_ENV
|
|
brew link --overwrite llvm@15
|
|
- name: Download WebKit
|
|
env:
|
|
CPU_TARGET: ${{ matrix.cpu }}
|
|
JSC_BASE_DIR: ${{ runner.temp }}/bun-webkit
|
|
JSC_LIB: ${{ runner.temp }}/bun-webkit/lib
|
|
BUN_DEPLOY_DIR: ${{ runner.temp }}/release/bun
|
|
OBJ_DIR: ${{ runner.temp }}/bun-cpp-obj
|
|
BUN_DEPS_OUT_DIR: ${{runner.temp}}/bun-deps
|
|
BUN_RELEASE_DIR: ${{ runner.temp }}/release
|
|
WEBKIT_RELEASE_DIR: ${{ runner.temp }}/bun-webkit
|
|
WEBKIT_RELEASE_DIR_LTO: ${{ runner.temp }}/bun-webkit
|
|
run: |
|
|
rm -rf $JSC_BASE_DIR
|
|
mkdir -p $JSC_BASE_DIR
|
|
curl -L ${{ matrix.webkit_url }} | tar -xz -C $JSC_BASE_DIR --strip-components=1
|
|
- name: Download C++
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: ${{ matrix.tag }}-cpp
|
|
path: ${{ runner.temp }}/bun-cpp-obj
|
|
- name: Download Dependencies
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: ${{ matrix.tag }}-deps
|
|
path: ${{ runner.temp }}/bun-deps
|
|
- name: Download Object
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: ${{ matrix.obj }}
|
|
path: ${{ runner.temp }}/release
|
|
- name: ccache (link)
|
|
uses: hendrikmuhs/ccache-action@v1.2
|
|
with:
|
|
key: ${{ runner.os }}-ccache-${{ matrix.tag }}-link
|
|
restore-keys: ${{ runner.os }}-ccache-${{ matrix.tag }}-link
|
|
- name: Link
|
|
env:
|
|
CPU_TARGET: ${{ matrix.cpu }}
|
|
JSC_BASE_DIR: ${{ runner.temp }}/bun-webkit
|
|
JSC_LIB: ${{ runner.temp }}/bun-webkit/lib
|
|
BUN_DEPLOY_DIR: ${{ runner.temp }}/release/bun
|
|
OBJ_DIR: ${{ runner.temp }}/bun-cpp-obj
|
|
BUN_DEPS_OUT_DIR: ${{runner.temp}}/bun-deps
|
|
BUN_RELEASE_DIR: ${{ runner.temp }}/release
|
|
WEBKIT_RELEASE_DIR: ${{ runner.temp }}/bun-webkit
|
|
WEBKIT_RELEASE_DIR_LTO: ${{ runner.temp }}/bun-webkit
|
|
run: |
|
|
rm -rf packages/${{ matrix.package }}
|
|
mkdir -p packages/${{ matrix.package }}
|
|
mv ${{ runner.temp }}/release/* packages/${{ matrix.package }}/
|
|
make webcrypto bun-link-lld-release copy-to-bun-release-dir-bin
|
|
- name: Zip
|
|
env:
|
|
CPU_TARGET: ${{ matrix.cpu }}
|
|
JSC_BASE_DIR: ${{ runner.temp }}/bun-webkit
|
|
JSC_LIB: ${{ runner.temp }}/bun-webkit/lib
|
|
BUN_DEPLOY_DIR: ${{ runner.temp }}/release/bun
|
|
OBJ_DIR: ${{ runner.temp }}/bun-cpp-obj
|
|
BUN_DEPS_OUT_DIR: ${{runner.temp}}/bun-deps
|
|
BUN_RELEASE_DIR: ${{ runner.temp }}/release
|
|
WEBKIT_RELEASE_DIR: ${{ runner.temp }}/bun-webkit
|
|
WEBKIT_RELEASE_DIR_LTO: ${{ runner.temp }}/bun-webkit
|
|
run: |
|
|
cd ${{runner.temp}}/release
|
|
chmod +x bun-profile bun
|
|
|
|
mkdir ${{matrix.tag}}-profile
|
|
mkdir ${{matrix.tag}}
|
|
|
|
/usr/bin/strip -S bun
|
|
|
|
mv bun-profile ${{matrix.tag}}-profile/bun-profile
|
|
mv bun ${{matrix.tag}}/bun
|
|
|
|
zip -r ${{matrix.tag}}-profile.zip ${{matrix.tag}}-profile
|
|
zip -r ${{matrix.tag}}.zip ${{matrix.tag}}
|
|
- uses: actions/upload-artifact@v3
|
|
with:
|
|
name: ${{matrix.tag}}-profile
|
|
path: ${{runner.temp}}/release/${{matrix.tag}}-profile.zip
|
|
- uses: actions/upload-artifact@v3
|
|
with:
|
|
name: ${{matrix.tag}}
|
|
path: ${{runner.temp}}/release/${{matrix.tag}}.zip
|
|
- name: Release
|
|
id: release
|
|
uses: ncipollo/release-action@v1
|
|
if: github.ref == 'refs/heads/main'
|
|
with:
|
|
prerelease: true
|
|
body: "This canary release of Bun corresponds to the commit [${{ github.sha }}]"
|
|
allowUpdates: true
|
|
replacesArtifacts: true
|
|
generateReleaseNotes: true
|
|
artifactErrorsFailBuild: true
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
name: "Canary (${{github.sha}})"
|
|
tag: "canary"
|
|
artifacts: "${{runner.temp}}/release/${{matrix.tag}}.zip,${{runner.temp}}/release/${{matrix.tag}}-profile.zip"
|