Skip to content

Make CI faster [skip skia] #228

Make CI faster [skip skia]

Make CI faster [skip skia] #228

Workflow file for this run

name: Build skia
on:
push:
branches:
- release
tags-ignore:
- '**'
env:
MACOSX_DEPLOYMENT_TARGET: '10.13'
jobs:
build:
if: "!contains(github.event.head_commit.message, 'skip skia')"
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-14, windows-latest]
name: stable - ${{ matrix.os }} - build skia
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: List llvm dir
if: matrix.os == 'windows-latest'
run: ls -R "C:\Program Files\LLVM"
shell: bash
- name: Setup node
uses: actions/setup-node@v4
with:
node-version: 18
cache: 'yarn'
- uses: actions/setup-python@v5
with:
python-version: '3.x'
architecture: 'x64'
- name: Set env
run: echo "${PWD}/depot_tools" >> $GITHUB_PATH
shell: bash
- name: Install tools on macOS
run: brew install ninja llvm
if: matrix.os == 'macos-14'
- name: Install tools on Windows
if: matrix.os == 'windows-latest'
run: |
choco install llvm ninja -y
choco upgrade llvm
pip install certifi
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
if: matrix.os == 'ubuntu-latest'
with:
registry: ghcr.io
username: ${{ secrets.GH_CONTAINER_UNAME }}
password: ${{ secrets.GH_TOKEN }}
- name: Sync deps on host
run: python ./tools/git-sync-deps
if: matrix.os == 'ubuntu-latest'
working-directory: skia
- name: Compile skia
if: matrix.os == 'ubuntu-latest'
run: |
docker pull ghcr.io/brooooooklyn/canvas/ubuntu-builder:jammy
docker tag ghcr.io/brooooooklyn/canvas/ubuntu-builder:jammy builder
docker run --user "$(id -u):$(id -g)" -e PYTHONHTTPSVERIFY=0 -e SKIP_SYNC_SK_DEPS=0 --rm -v $(pwd):/canvas -w /canvas builder node ./scripts/build-skia.js
- name: Compile skia
if: matrix.os == 'macos-14'
env:
PYTHONHTTPSVERIFY: 0
run: |
export PATH="/opt/homebrew/opt/llvm/bin:$PATH"
clang --version
node ./scripts/build-skia.js --target=x86_64-apple-darwin
- name: Compile skia
shell: powershell
if: matrix.os == 'windows-latest'
env:
PYTHONHTTPSVERIFY: 0
run: node ./scripts/build-skia.js
- name: Install dependencies
run: yarn install --immutable --mode=skip-build
- name: Upload release
run: node ./scripts/release-skia-binary.js --upload
shell: bash
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
build-apple-silicon:
if: "!contains(github.event.head_commit.message, 'skip skia')"
name: stable - apple-silicon - build skia
runs-on: macos-14
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Setup node
uses: actions/setup-node@v4
with:
node-version: 18
cache: 'yarn'
- uses: actions/setup-python@v5
with:
python-version: '3.x'
architecture: 'x64'
- name: Set env
run: echo "${PWD}/depot_tools" >> $GITHUB_PATH
shell: bash
- name: Install tools on macOS
run: brew install ninja llvm
- name: Compile skia
run: |
export PATH="/opt/homebrew/opt/llvm/bin:$PATH"
clang --version
node ./scripts/build-skia.js --target=aarch64-apple-darwin
env:
MACOSX_DEPLOYMENT_TARGET: '11.0'
- name: Install dependencies
run: yarn install --immutable --mode=skip-build
- name: Upload release
run: node ./scripts/release-skia-binary.js --upload --target=aarch64-apple-darwin
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
build-x64-linux-musl:
if: "!contains(github.event.head_commit.message, 'skip skia')"
name: stable - linux-x64-musl - build skia
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Setup node
uses: actions/setup-node@v4
with:
node-version: 18
cache: 'yarn'
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ secrets.GH_CONTAINER_UNAME }}
password: ${{ secrets.GH_TOKEN }}
- name: Compile skia
run: |
docker pull ghcr.io/brooooooklyn/canvas/musl-builder:lts
docker tag ghcr.io/brooooooklyn/canvas/musl-builder:lts builder
docker run --user "$(id -u):$(id -g)" --rm -v $(pwd):/canvas -w /canvas builder node ./scripts/build-skia.js
env:
PYTHONHTTPSVERIFY: 0
- name: Install dependencies
run: yarn install --immutable --mode=skip-build
- name: Upload release
run: node ./scripts/release-skia-binary.js --upload --target=x86_64-unknown-linux-musl
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
build-aarch64-linux-gnu:
if: "!contains(github.event.head_commit.message, 'skip skia')"
name: stable - aarch64-linux - build skia
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Setup node
uses: actions/setup-node@v4
with:
node-version: 18
cache: 'yarn'
- uses: actions/setup-python@v5
with:
python-version: '3.x'
architecture: 'x64'
- name: Sync deps on host
run: python ./tools/git-sync-deps
working-directory: skia
- name: Compile skia
run: |
docker pull ghcr.io/brooooooklyn/canvas/ubuntu-builder:jammy-aarch64
docker tag ghcr.io/brooooooklyn/canvas/ubuntu-builder:jammy-aarch64 builder
docker run --user "$(id -u):$(id -g)" -e SKIP_SYNC_SK_DEPS=0 --rm -v $(pwd):/canvas -w /canvas builder node ./scripts/build-skia.js --target=aarch64-unknown-linux-gnu
- name: Install dependencies
run: yarn install --immutable --mode=skip-build
- name: Upload release
run: node ./scripts/release-skia-binary.js --upload --target=aarch64-unknown-linux-gnu
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
build-aarch64-linux-musl:
if: "!contains(github.event.head_commit.message, 'skip skia')"
name: stable - linux-aarch64-musl - build skia
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Setup node
uses: actions/setup-node@v4
with:
node-version: 18
cache: 'yarn'
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ secrets.GH_CONTAINER_UNAME }}
password: ${{ secrets.GH_TOKEN }}
- name: Compile skia
run: |
docker pull ghcr.io/brooooooklyn/canvas/musl-builder:lts
docker tag ghcr.io/brooooooklyn/canvas/musl-builder:lts builder
docker run --user "$(id -u):$(id -g)" --rm -v $(pwd):/canvas -w /canvas builder node ./scripts/build-skia.js --target=aarch64-unknown-linux-musl
env:
PYTHONHTTPSVERIFY: 0
- name: Install dependencies
run: yarn install --immutable --mode=skip-build
- name: Upload release
run: node ./scripts/release-skia-binary.js --upload --target=aarch64-unknown-linux-musl
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
build-armv7-linux-gnu:
if: "!contains(github.event.head_commit.message, 'skip skia')"
name: stable - armv7-linux - build skia
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Setup node
uses: actions/setup-node@v4
with:
node-version: 18
cache: 'yarn'
- uses: actions/setup-python@v5
with:
python-version: '3.x'
architecture: 'x64'
- name: Set env
run: echo "${PWD}/depot_tools" >> $GITHUB_PATH
shell: bash
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
with:
platforms: linux/arm/v7
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
platforms: linux/arm/v7
- name: Install cross compile tools
run: |
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
echo "deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-16 main" | sudo tee -a /etc/apt/sources.list > /dev/null
echo "deb-src http://apt.llvm.org/jammy/ llvm-toolchain-jammy-16 main" | sudo tee -a /etc/apt/sources.list > /dev/null
sudo apt-get update
sudo apt-get install llvm-16 clang-16 lld-16 gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf -y
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
docker buildx build --load --platform linux/arm/v7 -t ubuntu:jammy-armv7 . -f jammy-armv7.Dockerfile
docker run --rm -dt --name ubuntu-jammy-armv7 ubuntu:jammy-armv7
sudo mkdir -p /usr/arm-linux-gnueabihf/lib/llvm-14
sudo docker cp ubuntu-jammy-armv7:/usr/lib/llvm-14/lib /usr/arm-linux-gnueabihf/lib/llvm-14/lib
sudo docker cp ubuntu-jammy-armv7:/usr/lib/llvm-14/include /usr/arm-linux-gnueabihf/lib/llvm-14/include
docker stop ubuntu-jammy-armv7
- name: Compile skia
run: node ./scripts/build-skia.js --target=armv7-unknown-linux-gnueabihf
- name: Install dependencies
run: yarn install --immutable --mode=skip-build
- name: Upload release
run: node ./scripts/release-skia-binary.js --upload --target=armv7-unknown-linux-gnueabihf
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
build-aarch64-linux-android:
if: "!contains(github.event.head_commit.message, 'skip skia')"
name: stable - aarch64-linux-android - build skia
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Setup node
uses: actions/setup-node@v4
with:
node-version: 18
cache: 'yarn'
- uses: actions/setup-python@v5
with:
python-version: '3.x'
architecture: 'x64'
- name: Set env
run: echo "${PWD}/depot_tools" >> $GITHUB_PATH
shell: bash
- name: Compile skia
run: node ./scripts/build-skia.js --target=aarch64-linux-android
- name: Install dependencies
run: yarn install --immutable --mode=skip-build
- name: Upload release
run: node ./scripts/release-skia-binary.js --upload --target=aarch64-linux-android
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}