Skip to content

fix: pull --rebase before pushing binaries in CI #6

fix: pull --rebase before pushing binaries in CI

fix: pull --rebase before pushing binaries in CI #6

Workflow file for this run

name: Build QuickJS
on:
workflow_dispatch:
push:
paths:
- ".github/workflows/build.yml"
env:
QUICKJS_REPO: https://github.com/quickjs-ng/quickjs.git
jobs:
build-windows:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Clone QuickJS
run: git clone --depth 1 ${{ env.QUICKJS_REPO }} quickjs
- name: Build QuickJS
run: |
cmake -S quickjs -B build -G "Visual Studio 17 2022" -A x64 -DBUILD_SHARED_LIBS=ON
cmake --build build --config Release
- uses: ilammy/msvc-dev-cmd@v1
- name: Build shim
run: |
cl /LD /O2 /Febuild/Release/qjs_shim.dll shim~/qjs_shim.c /Iquickjs /link /LIBPATH:build/Release qjs.lib
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: win-x64
path: |
build/Release/qjs.dll
build/Release/qjs_shim.dll
build-linux:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Clone QuickJS
run: git clone --depth 1 ${{ env.QUICKJS_REPO }} quickjs
- name: Install dependencies
run: sudo apt-get update && sudo apt-get install -y build-essential cmake
- name: Build QuickJS
run: |
cmake -S quickjs -B build -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc)
- name: Build shim
run: |
gcc -shared -fPIC -O2 -o build/libqjs_shim.so shim~/qjs_shim.c \
-Iquickjs -Lbuild -lqjs
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: linux-x64
path: |
build/libqjs.so
build/libqjs_shim.so
build-macos-x64:
runs-on: macos-14
env:
MACOSX_DEPLOYMENT_TARGET: "11.0"
steps:
- uses: actions/checkout@v4
- name: Clone QuickJS
run: git clone --depth 1 ${{ env.QUICKJS_REPO }} quickjs
- name: Build QuickJS for x64
run: |
cmake -S quickjs -B build -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES=x86_64
cmake --build build -j$(sysctl -n hw.ncpu)
- name: Build shim
run: |
cc -shared -fPIC -O2 -arch x86_64 -o build/libqjs_shim.dylib shim~/qjs_shim.c \
-Iquickjs -Lbuild -lqjs
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: osx-x64
path: |
build/libqjs.dylib
build/libqjs_shim.dylib
build-macos-arm64:
runs-on: macos-14
env:
MACOSX_DEPLOYMENT_TARGET: "11.0"
steps:
- uses: actions/checkout@v4
- name: Clone QuickJS
run: git clone --depth 1 ${{ env.QUICKJS_REPO }} quickjs
- name: Build QuickJS for arm64
run: |
cmake -S quickjs -B build -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES=arm64
cmake --build build -j$(sysctl -n hw.ncpu)
- name: Build shim
run: |
cc -shared -fPIC -O2 -arch arm64 -o build/libqjs_shim.dylib shim~/qjs_shim.c \
-Iquickjs -Lbuild -lqjs
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: osx-arm64
path: |
build/libqjs.dylib
build/libqjs_shim.dylib
build-ios:
runs-on: macos-14
env:
IPHONEOS_DEPLOYMENT_TARGET: "12.0"
steps:
- uses: actions/checkout@v4
- name: Clone QuickJS
run: git clone --depth 1 ${{ env.QUICKJS_REPO }} quickjs
- name: Build QuickJS for iOS arm64
run: |
cmake -S quickjs -B build \
-DCMAKE_SYSTEM_NAME=iOS \
-DCMAKE_OSX_DEPLOYMENT_TARGET=12.0 \
-DCMAKE_OSX_ARCHITECTURES=arm64 \
-DBUILD_SHARED_LIBS=OFF \
-DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(sysctl -n hw.ncpu)
- name: Build shim
run: |
cc -c -O2 -o build/qjs_shim.o shim~/qjs_shim.c \
-Iquickjs -target arm64-apple-ios12.0 \
-isysroot $(xcrun --sdk iphoneos --show-sdk-path)
ar rcs build/libqjs_shim.a build/qjs_shim.o
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: ios-arm64
path: |
build/libqjs.a
build/libqjs_shim.a
build-android-arm64:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Clone QuickJS
run: git clone --depth 1 ${{ env.QUICKJS_REPO }} quickjs
- name: Setup NDK
uses: nttld/setup-ndk@v1
id: setup-ndk
with:
ndk-version: r26d
add-to-path: false
- name: Build QuickJS for Android arm64
env:
NDK: ${{ steps.setup-ndk.outputs.ndk-path }}
run: |
cmake -S quickjs -B build \
-DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=arm64-v8a \
-DANDROID_PLATFORM=android-21 \
-DBUILD_SHARED_LIBS=ON \
-DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc)
- name: Build shim
env:
NDK: ${{ steps.setup-ndk.outputs.ndk-path }}
run: |
$NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang \
-shared -fPIC -O2 -o build/libqjs_shim.so shim~/qjs_shim.c \
-Iquickjs -Lbuild -lqjs
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: android-arm64
path: |
build/libqjs.so
build/libqjs_shim.so
build-android-armv7:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Clone QuickJS
run: git clone --depth 1 ${{ env.QUICKJS_REPO }} quickjs
- name: Setup NDK
uses: nttld/setup-ndk@v1
id: setup-ndk
with:
ndk-version: r26d
add-to-path: false
- name: Build QuickJS for Android armv7
env:
NDK: ${{ steps.setup-ndk.outputs.ndk-path }}
run: |
cmake -S quickjs -B build \
-DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=armeabi-v7a \
-DANDROID_PLATFORM=android-21 \
-DBUILD_SHARED_LIBS=ON \
-DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc)
- name: Build shim
env:
NDK: ${{ steps.setup-ndk.outputs.ndk-path }}
run: |
$NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi21-clang \
-shared -fPIC -O2 -o build/libqjs_shim.so shim~/qjs_shim.c \
-Iquickjs -Lbuild -lqjs
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: android-armv7
path: |
build/libqjs.so
build/libqjs_shim.so
build-android-x86:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Clone QuickJS
run: git clone --depth 1 ${{ env.QUICKJS_REPO }} quickjs
- name: Patch x87 FPU guard for Android x86
run: |
sed -i 's/#if defined(__i386__) && !defined(_MSC_VER)/#if defined(__i386__) \&\& !defined(_MSC_VER) \&\& !defined(__ANDROID__)/' quickjs/cutils.h
- name: Setup NDK
uses: nttld/setup-ndk@v1
id: setup-ndk
with:
ndk-version: r26d
add-to-path: false
- name: Build QuickJS for Android x86
env:
NDK: ${{ steps.setup-ndk.outputs.ndk-path }}
run: |
cmake -S quickjs -B build \
-DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=x86 \
-DANDROID_PLATFORM=android-21 \
-DBUILD_SHARED_LIBS=ON \
-DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc)
- name: Build shim
env:
NDK: ${{ steps.setup-ndk.outputs.ndk-path }}
run: |
$NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android21-clang \
-shared -fPIC -O2 -o build/libqjs_shim.so shim~/qjs_shim.c \
-Iquickjs -Lbuild -lqjs
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: android-x86
path: |
build/libqjs.so
build/libqjs_shim.so
commit-binaries:
needs:
- build-windows
- build-linux
- build-macos-x64
- build-macos-arm64
- build-ios
- build-android-arm64
- build-android-armv7
- build-android-x86
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: artifacts
- name: Copy binaries to runtime folders
run: |
mkdir -p runtimes/win-x64/native
mkdir -p runtimes/linux-x64/native
mkdir -p runtimes/osx-x64/native
mkdir -p runtimes/osx-arm64/native
mkdir -p runtimes/ios-arm64/native
mkdir -p runtimes/android-arm64/native
mkdir -p runtimes/android-armv7/native
mkdir -p runtimes/android-x86/native
cp artifacts/win-x64/qjs.dll runtimes/win-x64/native/
cp artifacts/win-x64/qjs_shim.dll runtimes/win-x64/native/
cp artifacts/linux-x64/libqjs.so runtimes/linux-x64/native/qjs.so
cp artifacts/linux-x64/libqjs_shim.so runtimes/linux-x64/native/qjs_shim.so
cp artifacts/osx-x64/libqjs.dylib runtimes/osx-x64/native/qjs.dylib
cp artifacts/osx-x64/libqjs_shim.dylib runtimes/osx-x64/native/qjs_shim.dylib
cp artifacts/osx-arm64/libqjs.dylib runtimes/osx-arm64/native/qjs.dylib
cp artifacts/osx-arm64/libqjs_shim.dylib runtimes/osx-arm64/native/qjs_shim.dylib
cp artifacts/ios-arm64/libqjs.a runtimes/ios-arm64/native/qjs.a
cp artifacts/ios-arm64/libqjs_shim.a runtimes/ios-arm64/native/qjs_shim.a
cp artifacts/android-arm64/libqjs.so runtimes/android-arm64/native/qjs.so
cp artifacts/android-arm64/libqjs_shim.so runtimes/android-arm64/native/qjs_shim.so
cp artifacts/android-armv7/libqjs.so runtimes/android-armv7/native/qjs.so
cp artifacts/android-armv7/libqjs_shim.so runtimes/android-armv7/native/qjs_shim.so
cp artifacts/android-x86/libqjs.so runtimes/android-x86/native/qjs.so
cp artifacts/android-x86/libqjs_shim.so runtimes/android-x86/native/qjs_shim.so
- name: Commit and push
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add runtimes/
git diff --cached --quiet || git commit -m "build: update QuickJS binaries"
git pull --rebase
git push