Make CI faster [skip skia] #227
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 }} |