Skip to content

Add GitHub CI build #45

Add GitHub CI build

Add GitHub CI build #45

Workflow file for this run

name: CI
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
workflow_dispatch:
jobs:
build-requirements:
name: Build WebKit Requirements
runs-on: windows-latest
strategy:
matrix:
triplet: [x64-windows]
steps:
- uses: actions/checkout@v4
with:
repository: microsoft/vcpkg
- uses: actions/checkout@v4
with:
path: WebKitRequirements
# Download the latest vcpkg locally
- name: Install vcpkg
run: ./scripts/bootstrap.ps1 -disableMetrics
- name: Version information of vcpkg
id: vcpkg
run: ./vcpkg.exe version
# Build the individual ports
#
# The ordering corresponds to `WindowsRequirements.json`. Build of a port
# is conditional on its dependencies
- name: Build zlib
id: zlib
if: steps.vcpkg.outcome == 'success'
continue-on-error: true
run: ./vcpkg.exe install zlib --overlay-ports ./WebKitRequirements/ports --triplet ${{ matrix.triplet }}
- name: Read zlib config
if: steps.zlib.outcome == 'success' || steps.zlib.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/zlib/config-x64-windows-webkit-out.log
- name: Read zlib debug build log
if: steps.zlib.outcome == 'success' || steps.zlib.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/zlib/install-x64-windows-webkit-dbg-out.log
- name: Read zlib release build log
if: steps.zlib.outcome == 'success' || steps.zlib.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/zlib/install-x64-windows-webkit-rel-out.log
- name: Build brotli
id: brotli
if: steps.vcpkg.outcome == 'success'
continue-on-error: true
run: ./vcpkg.exe install brotli --overlay-ports ./WebKitRequirements/ports --triplet ${{ matrix.triplet }}
- name: Read brotli config
if: steps.brotli.outcome == 'success' || steps.brotli.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/brotli/config-x64-windows-webkit-out.log
- name: Read brotli debug build log
if: steps.brotli.outcome == 'success' || steps.brotli.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/brotli/install-x64-windows-webkit-dbg-out.log
- name: Read brotli release build log
if: steps.brotli.outcome == 'success' || steps.brotli.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/brotli/install-x64-windows-webkit-rel-out.log
- name: Build libressl
id: libressl
if: steps.vcpkg.outcome == 'success'
continue-on-error: true
run: ./vcpkg.exe install libressl[tools] --overlay-ports ./WebKitRequirements/ports --triplet ${{ matrix.triplet }}
- name: Read libressl config
if: steps.libressl.outcome == 'success' || steps.libressl.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/libressl/config-x64-windows-webkit-out.log
- name: Read libressl debug build log
if: steps.libressl.outcome == 'success' || steps.libressl.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/libressl/install-x64-windows-webkit-dbg-out.log
- name: Read libressl release build log
if: steps.libressl.outcome == 'success' || steps.libressl.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/libressl/install-x64-windows-webkit-rel-out.log
- name: Build nghttp2
id: nghttp2
if: steps.vcpkg.outcome == 'success'
continue-on-error: true
run: ./vcpkg.exe install nghttp2 --overlay-ports ./WebKitRequirements/ports --triplet ${{ matrix.triplet }}
- name: Read nghttp2 config
if: steps.nghttp2.outcome == 'success' || steps.nghttp2.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/nghttp2/config-x64-windows-webkit-out.log
- name: Read nghttp2 debug build log
if: steps.nghttp2.outcome == 'success' || steps.nghttp2.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/nghttp2/install-x64-windows-webkit-dbg-out.log
- name: Read nghttp2 release build log
if: steps.nghttp2.outcome == 'success' || steps.nghttp2.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/nghttp2/install-x64-windows-webkit-rel-out.log
- name: Build ngtcp2
id: ngtcp2
if: steps.libressl.outcome == 'success'
continue-on-error: true
run: ./vcpkg.exe install ngtcp2[libressl] --overlay-ports ./WebKitRequirements/ports --triplet ${{ matrix.triplet }}
- name: Read ngtcp2 config
if: steps.ngtcp2.outcome == 'success' || steps.ngtcp2.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/ngtcp2/config-x64-windows-webkit-out.log
- name: Read ngtcp2 debug build log
if: steps.ngtcp2.outcome == 'success' || steps.ngtcp2.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/ngtcp2/install-x64-windows-webkit-dbg-out.log
- name: Read ngtcp2 release build log
if: steps.ngtcp2.outcome == 'success' || steps.ngtcp2.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/ngtcp2/install-x64-windows-webkit-rel-out.log
- name: Build nghttp3
id: nghttp3
if: steps.vcpkg.outcome == 'success'
continue-on-error: true
run: ./vcpkg.exe install nghttp3 --overlay-ports ./WebKitRequirements/ports --triplet ${{ matrix.triplet }}
- name: Read nghttp3 config
if: steps.nghttp3.outcome == 'success' || steps.nghttp3.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/nghttp3/config-x64-windows-webkit-out.log
- name: Read nghttp3 debug build log
if: steps.nghttp3.outcome == 'success' || steps.nghttp3.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/nghttp3/install-x64-windows-webkit-dbg-out.log
- name: Read nghttp3 release build log
if: steps.nghttp3.outcome == 'success' || steps.nghttp3.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/nghttp3/install-x64-windows-webkit-rel-out.log
- name: Build curl
id: curl
if: |
steps.brotli.outcome == 'success' &&
steps.nghttp2.outcome == 'success' &&
steps.zlib.outcome == 'success' &&
steps.libressl.outcome == 'success' &&
steps.ngtcp2.outcome == 'success' &&
steps.nghttp3.outcome == 'success'
continue-on-error: true
run: ./vcpkg.exe install curl[libressl,http3,ipv6] --overlay-ports ./WebKitRequirements/ports --triplet ${{ matrix.triplet }}
- name: Read curl config
if: steps.curl.outcome == 'success' || steps.curl.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/curl/config-x64-windows-webkit-out.log
- name: Read curl debug build log
if: steps.curl.outcome == 'success' || steps.curl.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/curl/install-x64-windows-webkit-dbg-out.log
- name: Read curl release build log
if: steps.curl.outcome == 'success' || steps.curl.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/curl/install-x64-windows-webkit-rel-out.log
- name: Build icu
id: icu
if: steps.vcpkg.outcome == 'success'
continue-on-error: true
run: ./vcpkg.exe install icu --overlay-ports ./WebKitRequirements/ports --triplet ${{ matrix.triplet }}
- name: Read icu config
if: steps.icu.outcome == 'success' || steps.icu.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/icu/config-x64-windows-webkit-out.log
- name: Read icu debug build log
if: steps.icu.outcome == 'success' || steps.icu.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/icu/install-x64-windows-webkit-dbg-out.log
- name: Read icu release build log
if: steps.icu.outcome == 'success' || steps.icu.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/icu/install-x64-windows-webkit-rel-out.log
- name: Build libxml2
id: libxml2
if: steps.icu.outcome == 'success'
continue-on-error: true
run: ./vcpkg.exe install libxml2[xslt] --overlay-ports ./WebKitRequirements/ports --triplet ${{ matrix.triplet }}
- name: Read libxml2 config
if: steps.libxml2.outcome == 'success' || steps.libxml2.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/libxml2/config-x64-windows-webkit-out.log
- name: Read libxml2 debug build log
if: steps.libxml2.outcome == 'success' || steps.libxml2.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/libxml2/install-x64-windows-webkit-dbg-out.log
- name: Read libxml2 release build log
if: steps.libxml2.outcome == 'success' || steps.libxml2.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/libxml2/install-x64-windows-webkit-rel-out.log
- name: Build libxslt
id: libxslt
if: steps.libxml2.outcome == 'success'
continue-on-error: true
run: ./vcpkg.exe install libxslt --overlay-ports ./WebKitRequirements/ports --triplet ${{ matrix.triplet }}
- name: Read libxslt config
if: steps.libxslt.outcome == 'success' || steps.libxslt.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/libxslt/config-x64-windows-webkit-out.log
- name: Read libxslt debug build log
if: steps.libxslt.outcome == 'success' || steps.libxslt.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/libxslt/install-x64-windows-webkit-dbg-out.log
- name: Read libxslt release build log
if: steps.libxslt.outcome == 'success' || steps.libxslt.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/libxslt/install-x64-windows-webkit-rel-out.log
- name: Build lcms
id: lcms
if: steps.vcpkg.outcome == 'success'
continue-on-error: true
run: ./vcpkg.exe install lcms --overlay-ports ./WebKitRequirements/ports --triplet ${{ matrix.triplet }}
- name: Read lcms config
if: steps.lcms.outcome == 'success' || steps.lcms.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/lcms/config-x64-windows-webkit-out.log
- name: Read lcms debug build log
if: steps.lcms.outcome == 'success' || steps.lcms.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/lcms/install-x64-windows-webkit-dbg-out.log
- name: Read lcms release build log
if: steps.lcms.outcome == 'success' || steps.lcms.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/lcms/install-x64-windows-webkit-rel-out.log
- name: Build highway
id: highway
if: steps.vcpkg.outcome == 'success'
continue-on-error: true
run: ./vcpkg.exe install highway --overlay-ports ./WebKitRequirements/ports --triplet ${{ matrix.triplet }}
- name: Read highway config
if: steps.highway.outcome == 'success' || steps.highway.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/highway/config-x64-windows-webkit-out.log
- name: Read highway debug build log
if: steps.highway.outcome == 'success' || steps.highway.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/highway/install-x64-windows-webkit-dbg-out.log
- name: Read highway release build log
if: steps.highway.outcome == 'success' || steps.highway.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/highway/install-x64-windows-webkit-rel-out.log
- name: Build libpng
id: libpng
if: steps.zlib.outcome == 'success'
continue-on-error: true
run: ./vcpkg.exe install libpng --overlay-ports ./WebKitRequirements/ports --triplet ${{ matrix.triplet }}
- name: Read libpng config
if: steps.libpng.outcome == 'success' || steps.libpng.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/libpng/config-x64-windows-webkit-out.log
- name: Read libpng debug build log
if: steps.libpng.outcome == 'success' || steps.libpng.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/libpng/install-x64-windows-webkit-dbg-out.log
- name: Read libpng release build log
if: steps.libpng.outcome == 'success' || steps.libpng.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/libpng/install-x64-windows-webkit-rel-out.log
- name: Build libjpeg-turbo
id: libjpeg
if: steps.vcpkg.outcome == 'success'
continue-on-error: true
run: ./vcpkg.exe install libjpeg-turbo --overlay-ports ./WebKitRequirements/ports --triplet ${{ matrix.triplet }}
- name: Read libjpeg-turbo config
if: steps.libjpeg.outcome == 'success' || steps.libjpeg.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/libjpeg-turbo/config-x64-windows-webkit-out.log
- name: Read libjpeg-turbo debug build log
if: steps.libjpeg.outcome == 'success' || steps.libjpeg.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/libjpeg-turbo/install-x64-windows-webkit-dbg-out.log
- name: Read libjpeg-turbo release build log
if: steps.libjpeg.outcome == 'success' || steps.libjpeg.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/libjpeg-turbo/install-x64-windows-webkit-rel-out.log
- name: Build libwebp
id: libwebp
if: steps.vcpkg.outcome == 'success'
continue-on-error: true
run: ./vcpkg.exe install libwebp --overlay-ports ./WebKitRequirements/ports --triplet ${{ matrix.triplet }}
- name: Read libwebp config
if: steps.libwebp.outcome == 'success' || steps.libwebp.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/libwebp/config-x64-windows-webkit-out.log
- name: Read libwebp debug build log
if: steps.libwebp.outcome == 'success' || steps.libwebp.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/libwebp/install-x64-windows-webkit-dbg-out.log
- name: Read libwebp release build log
if: steps.libwebp.outcome == 'success' || steps.libwebp.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/libwebp/install-x64-windows-webkit-rel-out.log
- name: Build libjxl
id: libjxl
if: |
steps.brotli.outcome == 'success' &&
steps.highway.outcome == 'success' &&
steps.lcms.outcome == 'success'
continue-on-error: true
run: ./vcpkg.exe install libjxl --overlay-ports ./WebKitRequirements/ports --triplet ${{ matrix.triplet }}
- name: Read libjxl config
if: steps.libjxl.outcome == 'success' || steps.libjxl.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/libjxl/config-x64-windows-webkit-out.log
- name: Read libjxl debug build log
if: steps.libjxl.outcome == 'success' || steps.libjxl.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/libjxl/install-x64-windows-webkit-dbg-out.log
- name: Read libjxl release build log
if: steps.libjxl.outcome == 'success' || steps.libjxl.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/libjxl/install-x64-windows-webkit-rel-out.log
- name: Build sqlite3
id: sqlite3
if: steps.vcpkg.outcome == 'success'
continue-on-error: true
run: ./vcpkg.exe install sqlite3 --overlay-ports ./WebKitRequirements/ports --triplet ${{ matrix.triplet }}
- name: Read sqlite3 config
if: steps.sqlite3.outcome == 'success' || steps.sqlite3.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/sqlite3/config-x64-windows-webkit-out.log
- name: Read sqlite3 debug build log
if: steps.sqlite3.outcome == 'success' || steps.sqlite3.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/sqlite3/install-x64-windows-webkit-dbg-out.log
- name: Read sqlite3 release build log
if: steps.sqlite3.outcome == 'success' || steps.sqlite3.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/sqlite3/install-x64-windows-webkit-rel-out.log
- name: Build woff2
id: woff2
if: steps.brotli.outcome == 'success'
continue-on-error: true
run: ./vcpkg.exe install woff2 --overlay-ports ./WebKitRequirements/ports --triplet ${{ matrix.triplet }}
- name: Read woff2 config
if: steps.woff2.outcome == 'success' || steps.woff2.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/woff2/config-x64-windows-webkit-out.log
- name: Read woff2 debug build log
if: steps.woff2.outcome == 'success' || steps.woff2.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/woff2/install-x64-windows-webkit-dbg-out.log
- name: Read woff2 release build log
if: steps.woff2.outcome == 'success' || steps.woff2.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/woff2/install-x64-windows-webkit-rel-out.log
- name: Build pixman
id: pixman
if: steps.vcpkg.outcome == 'success'
continue-on-error: true
run: ./vcpkg.exe install pixman --overlay-ports ./WebKitRequirements/ports --triplet ${{ matrix.triplet }}
- name: Read pixman config
if: steps.pixman.outcome == 'success' || steps.pixman.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/pixman/config-x64-windows-webkit-out.log
- name: Read pixman debug build log
if: steps.pixman.outcome == 'success' || steps.pixman.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/pixman/install-x64-windows-webkit-dbg-out.log
- name: Read pixman release build log
if: steps.pixman.outcome == 'success' || steps.pixman.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/pixman/install-x64-windows-webkit-rel-out.log
- name: Build cairo
id: cairo
if: steps.libpng.outcome == 'success' && steps.pixman.outcome == 'success'
continue-on-error: true
run: ./vcpkg.exe install cairo --overlay-ports ./WebKitRequirements/ports --triplet ${{ matrix.triplet }}
- name: Read cairo config
if: steps.cairo.outcome == 'success' || steps.cairo.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/cairo/config-x64-windows-webkit-out.log
- name: Read cairo debug build log
if: steps.cairo.outcome == 'success' || steps.cairo.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/cairo/install-x64-windows-webkit-dbg-out.log
- name: Read cairo release build log
if: steps.cairo.outcome == 'success' || steps.cairo.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/cairo/install-x64-windows-webkit-rel-out.log
- name: Build libpsl
id: libpsl
if: steps.icu.outcome == 'success'
continue-on-error: true
run: ./vcpkg.exe install libpsl --overlay-ports ./WebKitRequirements/ports --triplet ${{ matrix.triplet }}
- name: Read libpsl config
if: steps.libpsl.outcome == 'success' || steps.libpsl.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/libpsl/config-x64-windows-webkit-out.log
- name: Read libpsl debug build log
if: steps.libpsl.outcome == 'success' || steps.libpsl.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/libpsl/install-x64-windows-webkit-dbg-out.log
- name: Read libpsl release build log
if: steps.libpsl.outcome == 'success' || steps.libpsl.outcome == 'failure'
continue-on-error: true
run: Get-Content ./buildtrees/libpsl/install-x64-windows-webkit-rel-out.log
# See if any of the previous build steps had an outcome of `failure`
#
# Each step sets `continue-on-error` so there needs to be a check
# otherwise the pipeline will be successful
- name: Build verification
if: |
steps.zlib.outcome == 'failure' ||
steps.brotli.outcome == 'failure' ||
steps.libressl.outcome == 'failure' ||
steps.nghttp2.outcome == 'failure' ||
steps.ngtcp2.outcome == 'failure' ||
steps.nghttp3.outcome == 'failure' ||
steps.curl.outcome == 'failure' ||
steps.icu.outcome == 'failure' ||
steps.libxml2.outcome == 'failure' ||
steps.libxslt.outcome == 'failure' ||
steps.lcms.outcome == 'failure' ||
steps.highway.outcome == 'failure' ||
steps.libpng.outcome == 'failure' ||
steps.libjpeg.outcome == 'failure' ||
steps.libwebp.outcome == 'failure' ||
steps.libjxl.outcome == 'failure' ||
steps.sqlite3.outcome == 'failure' ||
steps.woff2.outcome == 'failure' ||
steps.pixman.outcome == 'failure' ||
steps.cairo.outcome == 'failure' ||
steps.libpsl.outcome == 'failure'
run: exit 1