From 3ce71cda73c9840d36b99c20aecd190125791ea3 Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Fri, 27 Nov 2020 09:05:59 -0500 Subject: [PATCH 1/5] Add build github actions workflows for mac/windows/linux. --- .github/workflows/main.yml | 1750 +++++++++++++++++++++++++++++++++++ components/style/build.rs | 2 +- etc/ci/generate_workflow.py | 59 ++ etc/ci/workflow.mako | 196 ++++ 4 files changed, 2006 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/main.yml create mode 100644 etc/ci/generate_workflow.py create mode 100644 etc/ci/workflow.mako diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 00000000000..4a1cbde4318 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,1750 @@ +name: CI + +on: + # Triggers the workflow on push or pull request events but only for the master branch + push: + branches: [ "master", "github-actions-dev", "auto", "try", "try-linux", "try-mac" ] + pull_request: + branches: [ "master", "github-actions-dev" ] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +env: + RUST_BACKTRACE: 1 + SHELL: /bin/bash + +jobs: + build-win: + name: Build (Windows) + runs-on: windows-2019 + steps: + - name: Clone + run: | + mkdir c:/Repo + git clone https://github.com/${{ github.repository }} --depth 2 c:/Repo + cd c:/Repo + git fetch origin ${{ github.ref }} + git checkout ${{ github.sha }} + - name: Bootstrap + working-directory: c:/Repo + run: | + python -m pip install --upgrade pip virtualenv + python mach fetch + - name: Release build + working-directory: c:/Repo + run: python mach build --release --media-stack=dummy + - name: Unit tests + working-directory: c:/Repo + run: python mach test-unit --release + - name: Smoketest + working-directory: c:/Repo + run: python mach smoketest --angle + + build-mac: + name: Build (macOS) + runs-on: macos-10.15 + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 2 + - name: Bootstrap + run: | + python3 -m pip install --upgrade pip virtualenv + brew bundle install --verbose --no-upgrade --file=etc/taskcluster/macos/Brewfile + brew bundle install --verbose --no-upgrade --file=etc/taskcluster/macos/Brewfile-build + rm -rf /usr/local/etc/openssl + rm -rf /usr/local/etc/openssl@1.1 + brew install openssl@1.1 gnu-tar + - name: Release build + run: | + export OPENSSL_INCLUDE_DIR="$(brew --prefix openssl)/include" + export OPENSSL_LIB_DIR="$(brew --prefix openssl)/lib" + export PKG_CONFIG_PATH="$(brew --prefix libffi)/lib/pkgconfig/" + export PKG_CONFIG_PATH="$(brew --prefix zlib)/lib/pkgconfig/:$PKG_CONFIG_PATH" + python3 ./mach build --release + - name: Smoketest + run: python3 ./mach smoketest + - name: Package binary + run: gtar -czf target.tar.gz target/release/servo target/release/*.dylib resources + - name: Archive binary + uses: actions/upload-artifact@v2 + with: + name: release-binary-macos + path: target.tar.gz + + # mac-wpt1: + # #needs: build-mac + # runs-on: macos-10.15 + # steps: + # - uses: actions/checkout@v2 + # with: + # fetch-depth: 2 + + # #- name: Download release binary + # # uses: actions/download-artifact@v2 + # # with: + # # name: release-binary-macos + + # - name: Fake build + # run: | + # wget https://joshmatthews.net/release-binary-macos.zip + # unzip release-binary-macos.zip + + # - name: Prep test environment + # run: | + # brew install gnu-tar + # gtar -xzf target.tar.gz + # python3 -m pip install --upgrade pip virtualenv + # brew bundle install --verbose --no-upgrade --file=etc/taskcluster/macos/Brewfile + # - name: Smoketest + # run: python3 ./mach smoketest + # - name: Run tests + # run: | + # python3 ./mach test-wpt --release --processes=3 --timeout-multiplier=8 --total-chunks=20 --this-chunk=1 --log-raw=test-wpt.log --log-servojson=wpt-jsonsummary.log --always-succeed | cat + # python3 ./mach filter-intermittents wpt-jsonsummary.log --log-intermittents=intermittents.log --log-filteredsummary=filtered-wpt-summary.log --tracker-api=default --reporter-api=default + + # - name: Archive logs + # uses: actions/upload-artifact@v2 + # with: + # name: wpt1-logs-macos + # path: | + # test-wpt.log + # wpt-jsonsummary.log + # filtered-wpt-summary.log + # intermittents.log + # mac-wpt2: + # #needs: build-mac + # runs-on: macos-10.15 + # steps: + # - uses: actions/checkout@v2 + # with: + # fetch-depth: 2 + + # #- name: Download release binary + # # uses: actions/download-artifact@v2 + # # with: + # # name: release-binary-macos + + # - name: Fake build + # run: | + # wget https://joshmatthews.net/release-binary-macos.zip + # unzip release-binary-macos.zip + + # - name: Prep test environment + # run: | + # brew install gnu-tar + # gtar -xzf target.tar.gz + # python3 -m pip install --upgrade pip virtualenv + # brew bundle install --verbose --no-upgrade --file=etc/taskcluster/macos/Brewfile + # - name: Smoketest + # run: python3 ./mach smoketest + # - name: Run tests + # run: | + # python3 ./mach test-wpt --release --processes=3 --timeout-multiplier=8 --total-chunks=20 --this-chunk=2 --log-raw=test-wpt.log --log-servojson=wpt-jsonsummary.log --always-succeed | cat + # python3 ./mach filter-intermittents wpt-jsonsummary.log --log-intermittents=intermittents.log --log-filteredsummary=filtered-wpt-summary.log --tracker-api=default --reporter-api=default + + # - name: Archive logs + # uses: actions/upload-artifact@v2 + # with: + # name: wpt2-logs-macos + # path: | + # test-wpt.log + # wpt-jsonsummary.log + # filtered-wpt-summary.log + # intermittents.log + # mac-wpt3: + # #needs: build-mac + # runs-on: macos-10.15 + # steps: + # - uses: actions/checkout@v2 + # with: + # fetch-depth: 2 + + # #- name: Download release binary + # # uses: actions/download-artifact@v2 + # # with: + # # name: release-binary-macos + + # - name: Fake build + # run: | + # wget https://joshmatthews.net/release-binary-macos.zip + # unzip release-binary-macos.zip + + # - name: Prep test environment + # run: | + # brew install gnu-tar + # gtar -xzf target.tar.gz + # python3 -m pip install --upgrade pip virtualenv + # brew bundle install --verbose --no-upgrade --file=etc/taskcluster/macos/Brewfile + # - name: Smoketest + # run: python3 ./mach smoketest + # - name: Run tests + # run: | + # python3 ./mach test-wpt --release --processes=3 --timeout-multiplier=8 --total-chunks=20 --this-chunk=3 --log-raw=test-wpt.log --log-servojson=wpt-jsonsummary.log --always-succeed | cat + # python3 ./mach filter-intermittents wpt-jsonsummary.log --log-intermittents=intermittents.log --log-filteredsummary=filtered-wpt-summary.log --tracker-api=default --reporter-api=default + + # - name: Archive logs + # uses: actions/upload-artifact@v2 + # with: + # name: wpt3-logs-macos + # path: | + # test-wpt.log + # wpt-jsonsummary.log + # filtered-wpt-summary.log + # intermittents.log + # mac-wpt4: + # #needs: build-mac + # runs-on: macos-10.15 + # steps: + # - uses: actions/checkout@v2 + # with: + # fetch-depth: 2 + + # #- name: Download release binary + # # uses: actions/download-artifact@v2 + # # with: + # # name: release-binary-macos + + # - name: Fake build + # run: | + # wget https://joshmatthews.net/release-binary-macos.zip + # unzip release-binary-macos.zip + + # - name: Prep test environment + # run: | + # brew install gnu-tar + # gtar -xzf target.tar.gz + # python3 -m pip install --upgrade pip virtualenv + # brew bundle install --verbose --no-upgrade --file=etc/taskcluster/macos/Brewfile + # - name: Smoketest + # run: python3 ./mach smoketest + # - name: Run tests + # run: | + # python3 ./mach test-wpt --release --processes=3 --timeout-multiplier=8 --total-chunks=20 --this-chunk=4 --log-raw=test-wpt.log --log-servojson=wpt-jsonsummary.log --always-succeed | cat + # python3 ./mach filter-intermittents wpt-jsonsummary.log --log-intermittents=intermittents.log --log-filteredsummary=filtered-wpt-summary.log --tracker-api=default --reporter-api=default + + # - name: Archive logs + # uses: actions/upload-artifact@v2 + # with: + # name: wpt4-logs-macos + # path: | + # test-wpt.log + # wpt-jsonsummary.log + # filtered-wpt-summary.log + # intermittents.log + # mac-wpt5: + # #needs: build-mac + # runs-on: macos-10.15 + # steps: + # - uses: actions/checkout@v2 + # with: + # fetch-depth: 2 + + # #- name: Download release binary + # # uses: actions/download-artifact@v2 + # # with: + # # name: release-binary-macos + + # - name: Fake build + # run: | + # wget https://joshmatthews.net/release-binary-macos.zip + # unzip release-binary-macos.zip + + # - name: Prep test environment + # run: | + # brew install gnu-tar + # gtar -xzf target.tar.gz + # python3 -m pip install --upgrade pip virtualenv + # brew bundle install --verbose --no-upgrade --file=etc/taskcluster/macos/Brewfile + # - name: Smoketest + # run: python3 ./mach smoketest + # - name: Run tests + # run: | + # python3 ./mach test-wpt --release --processes=3 --timeout-multiplier=8 --total-chunks=20 --this-chunk=5 --log-raw=test-wpt.log --log-servojson=wpt-jsonsummary.log --always-succeed | cat + # python3 ./mach filter-intermittents wpt-jsonsummary.log --log-intermittents=intermittents.log --log-filteredsummary=filtered-wpt-summary.log --tracker-api=default --reporter-api=default + + # - name: Archive logs + # uses: actions/upload-artifact@v2 + # with: + # name: wpt5-logs-macos + # path: | + # test-wpt.log + # wpt-jsonsummary.log + # filtered-wpt-summary.log + # intermittents.log + # mac-wpt6: + # #needs: build-mac + # runs-on: macos-10.15 + # steps: + # - uses: actions/checkout@v2 + # with: + # fetch-depth: 2 + + # #- name: Download release binary + # # uses: actions/download-artifact@v2 + # # with: + # # name: release-binary-macos + + # - name: Fake build + # run: | + # wget https://joshmatthews.net/release-binary-macos.zip + # unzip release-binary-macos.zip + + # - name: Prep test environment + # run: | + # brew install gnu-tar + # gtar -xzf target.tar.gz + # python3 -m pip install --upgrade pip virtualenv + # brew bundle install --verbose --no-upgrade --file=etc/taskcluster/macos/Brewfile + # - name: Smoketest + # run: python3 ./mach smoketest + # - name: Run tests + # run: | + # python3 ./mach test-wpt --release --processes=3 --timeout-multiplier=8 --total-chunks=20 --this-chunk=6 --log-raw=test-wpt.log --log-servojson=wpt-jsonsummary.log --always-succeed | cat + # python3 ./mach filter-intermittents wpt-jsonsummary.log --log-intermittents=intermittents.log --log-filteredsummary=filtered-wpt-summary.log --tracker-api=default --reporter-api=default + + # - name: Archive logs + # uses: actions/upload-artifact@v2 + # with: + # name: wpt6-logs-macos + # path: | + # test-wpt.log + # wpt-jsonsummary.log + # filtered-wpt-summary.log + # intermittents.log + # mac-wpt7: + # #needs: build-mac + # runs-on: macos-10.15 + # steps: + # - uses: actions/checkout@v2 + # with: + # fetch-depth: 2 + + # #- name: Download release binary + # # uses: actions/download-artifact@v2 + # # with: + # # name: release-binary-macos + + # - name: Fake build + # run: | + # wget https://joshmatthews.net/release-binary-macos.zip + # unzip release-binary-macos.zip + + # - name: Prep test environment + # run: | + # brew install gnu-tar + # gtar -xzf target.tar.gz + # python3 -m pip install --upgrade pip virtualenv + # brew bundle install --verbose --no-upgrade --file=etc/taskcluster/macos/Brewfile + # - name: Smoketest + # run: python3 ./mach smoketest + # - name: Run tests + # run: | + # python3 ./mach test-wpt --release --processes=3 --timeout-multiplier=8 --total-chunks=20 --this-chunk=7 --log-raw=test-wpt.log --log-servojson=wpt-jsonsummary.log --always-succeed | cat + # python3 ./mach filter-intermittents wpt-jsonsummary.log --log-intermittents=intermittents.log --log-filteredsummary=filtered-wpt-summary.log --tracker-api=default --reporter-api=default + + # - name: Archive logs + # uses: actions/upload-artifact@v2 + # with: + # name: wpt7-logs-macos + # path: | + # test-wpt.log + # wpt-jsonsummary.log + # filtered-wpt-summary.log + # intermittents.log + # mac-wpt8: + # #needs: build-mac + # runs-on: macos-10.15 + # steps: + # - uses: actions/checkout@v2 + # with: + # fetch-depth: 2 + + # #- name: Download release binary + # # uses: actions/download-artifact@v2 + # # with: + # # name: release-binary-macos + + # - name: Fake build + # run: | + # wget https://joshmatthews.net/release-binary-macos.zip + # unzip release-binary-macos.zip + + # - name: Prep test environment + # run: | + # brew install gnu-tar + # gtar -xzf target.tar.gz + # python3 -m pip install --upgrade pip virtualenv + # brew bundle install --verbose --no-upgrade --file=etc/taskcluster/macos/Brewfile + # - name: Smoketest + # run: python3 ./mach smoketest + # - name: Run tests + # run: | + # python3 ./mach test-wpt --release --processes=3 --timeout-multiplier=8 --total-chunks=20 --this-chunk=8 --log-raw=test-wpt.log --log-servojson=wpt-jsonsummary.log --always-succeed | cat + # python3 ./mach filter-intermittents wpt-jsonsummary.log --log-intermittents=intermittents.log --log-filteredsummary=filtered-wpt-summary.log --tracker-api=default --reporter-api=default + + # - name: Archive logs + # uses: actions/upload-artifact@v2 + # with: + # name: wpt8-logs-macos + # path: | + # test-wpt.log + # wpt-jsonsummary.log + # filtered-wpt-summary.log + # intermittents.log + # mac-wpt9: + # #needs: build-mac + # runs-on: macos-10.15 + # steps: + # - uses: actions/checkout@v2 + # with: + # fetch-depth: 2 + + # #- name: Download release binary + # # uses: actions/download-artifact@v2 + # # with: + # # name: release-binary-macos + + # - name: Fake build + # run: | + # wget https://joshmatthews.net/release-binary-macos.zip + # unzip release-binary-macos.zip + + # - name: Prep test environment + # run: | + # brew install gnu-tar + # gtar -xzf target.tar.gz + # python3 -m pip install --upgrade pip virtualenv + # brew bundle install --verbose --no-upgrade --file=etc/taskcluster/macos/Brewfile + # - name: Smoketest + # run: python3 ./mach smoketest + # - name: Run tests + # run: | + # python3 ./mach test-wpt --release --processes=3 --timeout-multiplier=8 --total-chunks=20 --this-chunk=9 --log-raw=test-wpt.log --log-servojson=wpt-jsonsummary.log --always-succeed | cat + # python3 ./mach filter-intermittents wpt-jsonsummary.log --log-intermittents=intermittents.log --log-filteredsummary=filtered-wpt-summary.log --tracker-api=default --reporter-api=default + + # - name: Archive logs + # uses: actions/upload-artifact@v2 + # with: + # name: wpt9-logs-macos + # path: | + # test-wpt.log + # wpt-jsonsummary.log + # filtered-wpt-summary.log + # intermittents.log + # mac-wpt10: + # #needs: build-mac + # runs-on: macos-10.15 + # steps: + # - uses: actions/checkout@v2 + # with: + # fetch-depth: 2 + + # #- name: Download release binary + # # uses: actions/download-artifact@v2 + # # with: + # # name: release-binary-macos + + # - name: Fake build + # run: | + # wget https://joshmatthews.net/release-binary-macos.zip + # unzip release-binary-macos.zip + + # - name: Prep test environment + # run: | + # brew install gnu-tar + # gtar -xzf target.tar.gz + # python3 -m pip install --upgrade pip virtualenv + # brew bundle install --verbose --no-upgrade --file=etc/taskcluster/macos/Brewfile + # - name: Smoketest + # run: python3 ./mach smoketest + # - name: Run tests + # run: | + # python3 ./mach test-wpt --release --processes=3 --timeout-multiplier=8 --total-chunks=20 --this-chunk=10 --log-raw=test-wpt.log --log-servojson=wpt-jsonsummary.log --always-succeed | cat + # python3 ./mach filter-intermittents wpt-jsonsummary.log --log-intermittents=intermittents.log --log-filteredsummary=filtered-wpt-summary.log --tracker-api=default --reporter-api=default + + # - name: Archive logs + # uses: actions/upload-artifact@v2 + # with: + # name: wpt10-logs-macos + # path: | + # test-wpt.log + # wpt-jsonsummary.log + # filtered-wpt-summary.log + # intermittents.log + # mac-wpt11: + # #needs: build-mac + # runs-on: macos-10.15 + # steps: + # - uses: actions/checkout@v2 + # with: + # fetch-depth: 2 + + # #- name: Download release binary + # # uses: actions/download-artifact@v2 + # # with: + # # name: release-binary-macos + + # - name: Fake build + # run: | + # wget https://joshmatthews.net/release-binary-macos.zip + # unzip release-binary-macos.zip + + # - name: Prep test environment + # run: | + # brew install gnu-tar + # gtar -xzf target.tar.gz + # python3 -m pip install --upgrade pip virtualenv + # brew bundle install --verbose --no-upgrade --file=etc/taskcluster/macos/Brewfile + # - name: Smoketest + # run: python3 ./mach smoketest + # - name: Run tests + # run: | + # python3 ./mach test-wpt --release --processes=3 --timeout-multiplier=8 --total-chunks=20 --this-chunk=11 --log-raw=test-wpt.log --log-servojson=wpt-jsonsummary.log --always-succeed | cat + # python3 ./mach filter-intermittents wpt-jsonsummary.log --log-intermittents=intermittents.log --log-filteredsummary=filtered-wpt-summary.log --tracker-api=default --reporter-api=default + + # - name: Archive logs + # uses: actions/upload-artifact@v2 + # with: + # name: wpt11-logs-macos + # path: | + # test-wpt.log + # wpt-jsonsummary.log + # filtered-wpt-summary.log + # intermittents.log + # mac-wpt12: + # #needs: build-mac + # runs-on: macos-10.15 + # steps: + # - uses: actions/checkout@v2 + # with: + # fetch-depth: 2 + + # #- name: Download release binary + # # uses: actions/download-artifact@v2 + # # with: + # # name: release-binary-macos + + # - name: Fake build + # run: | + # wget https://joshmatthews.net/release-binary-macos.zip + # unzip release-binary-macos.zip + + # - name: Prep test environment + # run: | + # brew install gnu-tar + # gtar -xzf target.tar.gz + # python3 -m pip install --upgrade pip virtualenv + # brew bundle install --verbose --no-upgrade --file=etc/taskcluster/macos/Brewfile + # - name: Smoketest + # run: python3 ./mach smoketest + # - name: Run tests + # run: | + # python3 ./mach test-wpt --release --processes=3 --timeout-multiplier=8 --total-chunks=20 --this-chunk=12 --log-raw=test-wpt.log --log-servojson=wpt-jsonsummary.log --always-succeed | cat + # python3 ./mach filter-intermittents wpt-jsonsummary.log --log-intermittents=intermittents.log --log-filteredsummary=filtered-wpt-summary.log --tracker-api=default --reporter-api=default + + # - name: Archive logs + # uses: actions/upload-artifact@v2 + # with: + # name: wpt12-logs-macos + # path: | + # test-wpt.log + # wpt-jsonsummary.log + # filtered-wpt-summary.log + # intermittents.log + # mac-wpt13: + # #needs: build-mac + # runs-on: macos-10.15 + # steps: + # - uses: actions/checkout@v2 + # with: + # fetch-depth: 2 + + # #- name: Download release binary + # # uses: actions/download-artifact@v2 + # # with: + # # name: release-binary-macos + + # - name: Fake build + # run: | + # wget https://joshmatthews.net/release-binary-macos.zip + # unzip release-binary-macos.zip + + # - name: Prep test environment + # run: | + # brew install gnu-tar + # gtar -xzf target.tar.gz + # python3 -m pip install --upgrade pip virtualenv + # brew bundle install --verbose --no-upgrade --file=etc/taskcluster/macos/Brewfile + # - name: Smoketest + # run: python3 ./mach smoketest + # - name: Run tests + # run: | + # python3 ./mach test-wpt --release --processes=3 --timeout-multiplier=8 --total-chunks=20 --this-chunk=13 --log-raw=test-wpt.log --log-servojson=wpt-jsonsummary.log --always-succeed | cat + # python3 ./mach filter-intermittents wpt-jsonsummary.log --log-intermittents=intermittents.log --log-filteredsummary=filtered-wpt-summary.log --tracker-api=default --reporter-api=default + + # - name: Archive logs + # uses: actions/upload-artifact@v2 + # with: + # name: wpt13-logs-macos + # path: | + # test-wpt.log + # wpt-jsonsummary.log + # filtered-wpt-summary.log + # intermittents.log + # mac-wpt14: + # #needs: build-mac + # runs-on: macos-10.15 + # steps: + # - uses: actions/checkout@v2 + # with: + # fetch-depth: 2 + + # #- name: Download release binary + # # uses: actions/download-artifact@v2 + # # with: + # # name: release-binary-macos + + # - name: Fake build + # run: | + # wget https://joshmatthews.net/release-binary-macos.zip + # unzip release-binary-macos.zip + + # - name: Prep test environment + # run: | + # brew install gnu-tar + # gtar -xzf target.tar.gz + # python3 -m pip install --upgrade pip virtualenv + # brew bundle install --verbose --no-upgrade --file=etc/taskcluster/macos/Brewfile + # - name: Smoketest + # run: python3 ./mach smoketest + # - name: Run tests + # run: | + # python3 ./mach test-wpt --release --processes=3 --timeout-multiplier=8 --total-chunks=20 --this-chunk=14 --log-raw=test-wpt.log --log-servojson=wpt-jsonsummary.log --always-succeed | cat + # python3 ./mach filter-intermittents wpt-jsonsummary.log --log-intermittents=intermittents.log --log-filteredsummary=filtered-wpt-summary.log --tracker-api=default --reporter-api=default + + # - name: Archive logs + # uses: actions/upload-artifact@v2 + # with: + # name: wpt14-logs-macos + # path: | + # test-wpt.log + # wpt-jsonsummary.log + # filtered-wpt-summary.log + # intermittents.log + # mac-wpt15: + # #needs: build-mac + # runs-on: macos-10.15 + # steps: + # - uses: actions/checkout@v2 + # with: + # fetch-depth: 2 + + # #- name: Download release binary + # # uses: actions/download-artifact@v2 + # # with: + # # name: release-binary-macos + + # - name: Fake build + # run: | + # wget https://joshmatthews.net/release-binary-macos.zip + # unzip release-binary-macos.zip + + # - name: Prep test environment + # run: | + # brew install gnu-tar + # gtar -xzf target.tar.gz + # python3 -m pip install --upgrade pip virtualenv + # brew bundle install --verbose --no-upgrade --file=etc/taskcluster/macos/Brewfile + # - name: Smoketest + # run: python3 ./mach smoketest + # - name: Run tests + # run: | + # python3 ./mach test-wpt --release --processes=3 --timeout-multiplier=8 --total-chunks=20 --this-chunk=15 --log-raw=test-wpt.log --log-servojson=wpt-jsonsummary.log --always-succeed | cat + # python3 ./mach filter-intermittents wpt-jsonsummary.log --log-intermittents=intermittents.log --log-filteredsummary=filtered-wpt-summary.log --tracker-api=default --reporter-api=default + + # - name: Archive logs + # uses: actions/upload-artifact@v2 + # with: + # name: wpt15-logs-macos + # path: | + # test-wpt.log + # wpt-jsonsummary.log + # filtered-wpt-summary.log + # intermittents.log + # mac-wpt16: + # #needs: build-mac + # runs-on: macos-10.15 + # steps: + # - uses: actions/checkout@v2 + # with: + # fetch-depth: 2 + + # #- name: Download release binary + # # uses: actions/download-artifact@v2 + # # with: + # # name: release-binary-macos + + # - name: Fake build + # run: | + # wget https://joshmatthews.net/release-binary-macos.zip + # unzip release-binary-macos.zip + + # - name: Prep test environment + # run: | + # brew install gnu-tar + # gtar -xzf target.tar.gz + # python3 -m pip install --upgrade pip virtualenv + # brew bundle install --verbose --no-upgrade --file=etc/taskcluster/macos/Brewfile + # - name: Smoketest + # run: python3 ./mach smoketest + # - name: Run tests + # run: | + # python3 ./mach test-wpt --release --processes=3 --timeout-multiplier=8 --total-chunks=20 --this-chunk=16 --log-raw=test-wpt.log --log-servojson=wpt-jsonsummary.log --always-succeed | cat + # python3 ./mach filter-intermittents wpt-jsonsummary.log --log-intermittents=intermittents.log --log-filteredsummary=filtered-wpt-summary.log --tracker-api=default --reporter-api=default + + # - name: Archive logs + # uses: actions/upload-artifact@v2 + # with: + # name: wpt16-logs-macos + # path: | + # test-wpt.log + # wpt-jsonsummary.log + # filtered-wpt-summary.log + # intermittents.log + # mac-wpt17: + # #needs: build-mac + # runs-on: macos-10.15 + # steps: + # - uses: actions/checkout@v2 + # with: + # fetch-depth: 2 + + # #- name: Download release binary + # # uses: actions/download-artifact@v2 + # # with: + # # name: release-binary-macos + + # - name: Fake build + # run: | + # wget https://joshmatthews.net/release-binary-macos.zip + # unzip release-binary-macos.zip + + # - name: Prep test environment + # run: | + # brew install gnu-tar + # gtar -xzf target.tar.gz + # python3 -m pip install --upgrade pip virtualenv + # brew bundle install --verbose --no-upgrade --file=etc/taskcluster/macos/Brewfile + # - name: Smoketest + # run: python3 ./mach smoketest + # - name: Run tests + # run: | + # python3 ./mach test-wpt --release --processes=3 --timeout-multiplier=8 --total-chunks=20 --this-chunk=17 --log-raw=test-wpt.log --log-servojson=wpt-jsonsummary.log --always-succeed | cat + # python3 ./mach filter-intermittents wpt-jsonsummary.log --log-intermittents=intermittents.log --log-filteredsummary=filtered-wpt-summary.log --tracker-api=default --reporter-api=default + + # - name: Archive logs + # uses: actions/upload-artifact@v2 + # with: + # name: wpt17-logs-macos + # path: | + # test-wpt.log + # wpt-jsonsummary.log + # filtered-wpt-summary.log + # intermittents.log + # mac-wpt18: + # #needs: build-mac + # runs-on: macos-10.15 + # steps: + # - uses: actions/checkout@v2 + # with: + # fetch-depth: 2 + + # #- name: Download release binary + # # uses: actions/download-artifact@v2 + # # with: + # # name: release-binary-macos + + # - name: Fake build + # run: | + # wget https://joshmatthews.net/release-binary-macos.zip + # unzip release-binary-macos.zip + + # - name: Prep test environment + # run: | + # brew install gnu-tar + # gtar -xzf target.tar.gz + # python3 -m pip install --upgrade pip virtualenv + # brew bundle install --verbose --no-upgrade --file=etc/taskcluster/macos/Brewfile + # - name: Smoketest + # run: python3 ./mach smoketest + # - name: Run tests + # run: | + # python3 ./mach test-wpt --release --processes=3 --timeout-multiplier=8 --total-chunks=20 --this-chunk=18 --log-raw=test-wpt.log --log-servojson=wpt-jsonsummary.log --always-succeed | cat + # python3 ./mach filter-intermittents wpt-jsonsummary.log --log-intermittents=intermittents.log --log-filteredsummary=filtered-wpt-summary.log --tracker-api=default --reporter-api=default + + # - name: Archive logs + # uses: actions/upload-artifact@v2 + # with: + # name: wpt18-logs-macos + # path: | + # test-wpt.log + # wpt-jsonsummary.log + # filtered-wpt-summary.log + # intermittents.log + # mac-wpt19: + # #needs: build-mac + # runs-on: macos-10.15 + # steps: + # - uses: actions/checkout@v2 + # with: + # fetch-depth: 2 + + # #- name: Download release binary + # # uses: actions/download-artifact@v2 + # # with: + # # name: release-binary-macos + + # - name: Fake build + # run: | + # wget https://joshmatthews.net/release-binary-macos.zip + # unzip release-binary-macos.zip + + # - name: Prep test environment + # run: | + # brew install gnu-tar + # gtar -xzf target.tar.gz + # python3 -m pip install --upgrade pip virtualenv + # brew bundle install --verbose --no-upgrade --file=etc/taskcluster/macos/Brewfile + # - name: Smoketest + # run: python3 ./mach smoketest + # - name: Run tests + # run: | + # python3 ./mach test-wpt --release --processes=3 --timeout-multiplier=8 --total-chunks=20 --this-chunk=19 --log-raw=test-wpt.log --log-servojson=wpt-jsonsummary.log --always-succeed | cat + # python3 ./mach filter-intermittents wpt-jsonsummary.log --log-intermittents=intermittents.log --log-filteredsummary=filtered-wpt-summary.log --tracker-api=default --reporter-api=default + + # - name: Archive logs + # uses: actions/upload-artifact@v2 + # with: + # name: wpt19-logs-macos + # path: | + # test-wpt.log + # wpt-jsonsummary.log + # filtered-wpt-summary.log + # intermittents.log + # mac-wpt20: + # #needs: build-mac + # runs-on: macos-10.15 + # steps: + # - uses: actions/checkout@v2 + # with: + # fetch-depth: 2 + + # #- name: Download release binary + # # uses: actions/download-artifact@v2 + # # with: + # # name: release-binary-macos + + # - name: Fake build + # run: | + # wget https://joshmatthews.net/release-binary-macos.zip + # unzip release-binary-macos.zip + + # - name: Prep test environment + # run: | + # brew install gnu-tar + # gtar -xzf target.tar.gz + # python3 -m pip install --upgrade pip virtualenv + # brew bundle install --verbose --no-upgrade --file=etc/taskcluster/macos/Brewfile + # - name: Smoketest + # run: python3 ./mach smoketest + # - name: Run tests + # run: | + # python3 ./mach test-wpt --release --processes=3 --timeout-multiplier=8 --total-chunks=20 --this-chunk=20 --log-raw=test-wpt.log --log-servojson=wpt-jsonsummary.log --always-succeed | cat + # python3 ./mach filter-intermittents wpt-jsonsummary.log --log-intermittents=intermittents.log --log-filteredsummary=filtered-wpt-summary.log --tracker-api=default --reporter-api=default + + # - name: Archive logs + # uses: actions/upload-artifact@v2 + # with: + # name: wpt20-logs-macos + # path: | + # test-wpt.log + # wpt-jsonsummary.log + # filtered-wpt-summary.log + # intermittents.log + + build-linux: + name: Build (Linux) + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 2 + - name: Bootstrap + run: | + python3 -m pip install --upgrade pip virtualenv + sudo apt update + python3 ./mach bootstrap + - name: Release build + run: python3 ./mach build --release + - name: Package binary + run: tar -czf target.tar.gz target/release/servo resources + - name: Archive binary + uses: actions/upload-artifact@v2 + with: + name: release-binary + path: target.tar.gz + + # linux-wpt1: + # #needs: build-linux + # runs-on: ubuntu-20.04 + # steps: + # - uses: actions/checkout@v2 + # with: + # fetch-depth: 2 + + # #- name: Download release binary + # # uses: actions/download-artifact@v2 + # # with: + # # name: release-binary + + # - name: Fake build + # run: | + # wget https://joshmatthews.net/release-binary.zip + # unzip release-binary.zip + + # - name: Prep test environment + # run: | + # tar -xzf target.tar.gz + # python3 -m pip install --upgrade pip virtualenv + # sudo apt update + # sudo apt install -qy --no-install-recommends libgl1 libssl1.1 libdbus-1-3 libxcb-xfixes0-dev libxcb-shape0-dev libunwind8 libegl1-mesa + # wget http://mirrors.kernel.org/ubuntu/pool/main/libf/libffi/libffi6_3.2.1-8_amd64.deb + # sudo apt install ./libffi6_3.2.1-8_amd64.deb + # python3 ./mach bootstrap-gstreamer + + # - name: Run tests + # run: | + # python3 ./mach test-wpt --release --processes=2 --total-chunks=20 --this-chunk=1 --log-raw=test-wpt.log --log-servojson=wpt-jsonsummary.log --always-succeed | cat + # python3 ./mach filter-intermittents wpt-jsonsummary.log --log-intermittents=intermittents.log --log-filteredsummary=filtered-wpt-summary.log --tracker-api=default --reporter-api=default + + # - name: Archive logs + # uses: actions/upload-artifact@v2 + # with: + # name: wpt1-logs-linux + # path: | + # test-wpt.log + # wpt-jsonsummary.log + # filtered-wpt-summary.log + # intermittents.log + # linux-wpt2: + # #needs: build-linux + # runs-on: ubuntu-20.04 + # steps: + # - uses: actions/checkout@v2 + # with: + # fetch-depth: 2 + + # #- name: Download release binary + # # uses: actions/download-artifact@v2 + # # with: + # # name: release-binary + + # - name: Fake build + # run: | + # wget https://joshmatthews.net/release-binary.zip + # unzip release-binary.zip + + # - name: Prep test environment + # run: | + # tar -xzf target.tar.gz + # python3 -m pip install --upgrade pip virtualenv + # sudo apt update + # sudo apt install -qy --no-install-recommends libgl1 libssl1.1 libdbus-1-3 libxcb-xfixes0-dev libxcb-shape0-dev libunwind8 libegl1-mesa + # wget http://mirrors.kernel.org/ubuntu/pool/main/libf/libffi/libffi6_3.2.1-8_amd64.deb + # sudo apt install ./libffi6_3.2.1-8_amd64.deb + # python3 ./mach bootstrap-gstreamer + + # - name: Run tests + # run: | + # python3 ./mach test-wpt --release --processes=2 --total-chunks=20 --this-chunk=2 --log-raw=test-wpt.log --log-servojson=wpt-jsonsummary.log --always-succeed | cat + # python3 ./mach filter-intermittents wpt-jsonsummary.log --log-intermittents=intermittents.log --log-filteredsummary=filtered-wpt-summary.log --tracker-api=default --reporter-api=default + + # - name: Archive logs + # uses: actions/upload-artifact@v2 + # with: + # name: wpt2-logs-linux + # path: | + # test-wpt.log + # wpt-jsonsummary.log + # filtered-wpt-summary.log + # intermittents.log + # linux-wpt3: + # #needs: build-linux + # runs-on: ubuntu-20.04 + # steps: + # - uses: actions/checkout@v2 + # with: + # fetch-depth: 2 + + # #- name: Download release binary + # # uses: actions/download-artifact@v2 + # # with: + # # name: release-binary + + # - name: Fake build + # run: | + # wget https://joshmatthews.net/release-binary.zip + # unzip release-binary.zip + + # - name: Prep test environment + # run: | + # tar -xzf target.tar.gz + # python3 -m pip install --upgrade pip virtualenv + # sudo apt update + # sudo apt install -qy --no-install-recommends libgl1 libssl1.1 libdbus-1-3 libxcb-xfixes0-dev libxcb-shape0-dev libunwind8 libegl1-mesa + # wget http://mirrors.kernel.org/ubuntu/pool/main/libf/libffi/libffi6_3.2.1-8_amd64.deb + # sudo apt install ./libffi6_3.2.1-8_amd64.deb + # python3 ./mach bootstrap-gstreamer + + # - name: Run tests + # run: | + # python3 ./mach test-wpt --release --processes=2 --total-chunks=20 --this-chunk=3 --log-raw=test-wpt.log --log-servojson=wpt-jsonsummary.log --always-succeed | cat + # python3 ./mach filter-intermittents wpt-jsonsummary.log --log-intermittents=intermittents.log --log-filteredsummary=filtered-wpt-summary.log --tracker-api=default --reporter-api=default + + # - name: Archive logs + # uses: actions/upload-artifact@v2 + # with: + # name: wpt3-logs-linux + # path: | + # test-wpt.log + # wpt-jsonsummary.log + # filtered-wpt-summary.log + # intermittents.log + # linux-wpt4: + # #needs: build-linux + # runs-on: ubuntu-20.04 + # steps: + # - uses: actions/checkout@v2 + # with: + # fetch-depth: 2 + + # #- name: Download release binary + # # uses: actions/download-artifact@v2 + # # with: + # # name: release-binary + + # - name: Fake build + # run: | + # wget https://joshmatthews.net/release-binary.zip + # unzip release-binary.zip + + # - name: Prep test environment + # run: | + # tar -xzf target.tar.gz + # python3 -m pip install --upgrade pip virtualenv + # sudo apt update + # sudo apt install -qy --no-install-recommends libgl1 libssl1.1 libdbus-1-3 libxcb-xfixes0-dev libxcb-shape0-dev libunwind8 libegl1-mesa + # wget http://mirrors.kernel.org/ubuntu/pool/main/libf/libffi/libffi6_3.2.1-8_amd64.deb + # sudo apt install ./libffi6_3.2.1-8_amd64.deb + # python3 ./mach bootstrap-gstreamer + + # - name: Run tests + # run: | + # python3 ./mach test-wpt --release --processes=2 --total-chunks=20 --this-chunk=4 --log-raw=test-wpt.log --log-servojson=wpt-jsonsummary.log --always-succeed | cat + # python3 ./mach filter-intermittents wpt-jsonsummary.log --log-intermittents=intermittents.log --log-filteredsummary=filtered-wpt-summary.log --tracker-api=default --reporter-api=default + + # - name: Archive logs + # uses: actions/upload-artifact@v2 + # with: + # name: wpt4-logs-linux + # path: | + # test-wpt.log + # wpt-jsonsummary.log + # filtered-wpt-summary.log + # intermittents.log + # linux-wpt5: + # #needs: build-linux + # runs-on: ubuntu-20.04 + # steps: + # - uses: actions/checkout@v2 + # with: + # fetch-depth: 2 + + # #- name: Download release binary + # # uses: actions/download-artifact@v2 + # # with: + # # name: release-binary + + # - name: Fake build + # run: | + # wget https://joshmatthews.net/release-binary.zip + # unzip release-binary.zip + + # - name: Prep test environment + # run: | + # tar -xzf target.tar.gz + # python3 -m pip install --upgrade pip virtualenv + # sudo apt update + # sudo apt install -qy --no-install-recommends libgl1 libssl1.1 libdbus-1-3 libxcb-xfixes0-dev libxcb-shape0-dev libunwind8 libegl1-mesa + # wget http://mirrors.kernel.org/ubuntu/pool/main/libf/libffi/libffi6_3.2.1-8_amd64.deb + # sudo apt install ./libffi6_3.2.1-8_amd64.deb + # python3 ./mach bootstrap-gstreamer + + # - name: Run tests + # run: | + # python3 ./mach test-wpt --release --processes=2 --total-chunks=20 --this-chunk=5 --log-raw=test-wpt.log --log-servojson=wpt-jsonsummary.log --always-succeed | cat + # python3 ./mach filter-intermittents wpt-jsonsummary.log --log-intermittents=intermittents.log --log-filteredsummary=filtered-wpt-summary.log --tracker-api=default --reporter-api=default + + # - name: Archive logs + # uses: actions/upload-artifact@v2 + # with: + # name: wpt5-logs-linux + # path: | + # test-wpt.log + # wpt-jsonsummary.log + # filtered-wpt-summary.log + # intermittents.log + # linux-wpt6: + # #needs: build-linux + # runs-on: ubuntu-20.04 + # steps: + # - uses: actions/checkout@v2 + # with: + # fetch-depth: 2 + + # #- name: Download release binary + # # uses: actions/download-artifact@v2 + # # with: + # # name: release-binary + + # - name: Fake build + # run: | + # wget https://joshmatthews.net/release-binary.zip + # unzip release-binary.zip + + # - name: Prep test environment + # run: | + # tar -xzf target.tar.gz + # python3 -m pip install --upgrade pip virtualenv + # sudo apt update + # sudo apt install -qy --no-install-recommends libgl1 libssl1.1 libdbus-1-3 libxcb-xfixes0-dev libxcb-shape0-dev libunwind8 libegl1-mesa + # wget http://mirrors.kernel.org/ubuntu/pool/main/libf/libffi/libffi6_3.2.1-8_amd64.deb + # sudo apt install ./libffi6_3.2.1-8_amd64.deb + # python3 ./mach bootstrap-gstreamer + + # - name: Run tests + # run: | + # python3 ./mach test-wpt --release --processes=2 --total-chunks=20 --this-chunk=6 --log-raw=test-wpt.log --log-servojson=wpt-jsonsummary.log --always-succeed | cat + # python3 ./mach filter-intermittents wpt-jsonsummary.log --log-intermittents=intermittents.log --log-filteredsummary=filtered-wpt-summary.log --tracker-api=default --reporter-api=default + + # - name: Archive logs + # uses: actions/upload-artifact@v2 + # with: + # name: wpt6-logs-linux + # path: | + # test-wpt.log + # wpt-jsonsummary.log + # filtered-wpt-summary.log + # intermittents.log + # linux-wpt7: + # #needs: build-linux + # runs-on: ubuntu-20.04 + # steps: + # - uses: actions/checkout@v2 + # with: + # fetch-depth: 2 + + # #- name: Download release binary + # # uses: actions/download-artifact@v2 + # # with: + # # name: release-binary + + # - name: Fake build + # run: | + # wget https://joshmatthews.net/release-binary.zip + # unzip release-binary.zip + + # - name: Prep test environment + # run: | + # tar -xzf target.tar.gz + # python3 -m pip install --upgrade pip virtualenv + # sudo apt update + # sudo apt install -qy --no-install-recommends libgl1 libssl1.1 libdbus-1-3 libxcb-xfixes0-dev libxcb-shape0-dev libunwind8 libegl1-mesa + # wget http://mirrors.kernel.org/ubuntu/pool/main/libf/libffi/libffi6_3.2.1-8_amd64.deb + # sudo apt install ./libffi6_3.2.1-8_amd64.deb + # python3 ./mach bootstrap-gstreamer + + # - name: Run tests + # run: | + # python3 ./mach test-wpt --release --processes=2 --total-chunks=20 --this-chunk=7 --log-raw=test-wpt.log --log-servojson=wpt-jsonsummary.log --always-succeed | cat + # python3 ./mach filter-intermittents wpt-jsonsummary.log --log-intermittents=intermittents.log --log-filteredsummary=filtered-wpt-summary.log --tracker-api=default --reporter-api=default + + # - name: Archive logs + # uses: actions/upload-artifact@v2 + # with: + # name: wpt7-logs-linux + # path: | + # test-wpt.log + # wpt-jsonsummary.log + # filtered-wpt-summary.log + # intermittents.log + # linux-wpt8: + # #needs: build-linux + # runs-on: ubuntu-20.04 + # steps: + # - uses: actions/checkout@v2 + # with: + # fetch-depth: 2 + + # #- name: Download release binary + # # uses: actions/download-artifact@v2 + # # with: + # # name: release-binary + + # - name: Fake build + # run: | + # wget https://joshmatthews.net/release-binary.zip + # unzip release-binary.zip + + # - name: Prep test environment + # run: | + # tar -xzf target.tar.gz + # python3 -m pip install --upgrade pip virtualenv + # sudo apt update + # sudo apt install -qy --no-install-recommends libgl1 libssl1.1 libdbus-1-3 libxcb-xfixes0-dev libxcb-shape0-dev libunwind8 libegl1-mesa + # wget http://mirrors.kernel.org/ubuntu/pool/main/libf/libffi/libffi6_3.2.1-8_amd64.deb + # sudo apt install ./libffi6_3.2.1-8_amd64.deb + # python3 ./mach bootstrap-gstreamer + + # - name: Run tests + # run: | + # python3 ./mach test-wpt --release --processes=2 --total-chunks=20 --this-chunk=8 --log-raw=test-wpt.log --log-servojson=wpt-jsonsummary.log --always-succeed | cat + # python3 ./mach filter-intermittents wpt-jsonsummary.log --log-intermittents=intermittents.log --log-filteredsummary=filtered-wpt-summary.log --tracker-api=default --reporter-api=default + + # - name: Archive logs + # uses: actions/upload-artifact@v2 + # with: + # name: wpt8-logs-linux + # path: | + # test-wpt.log + # wpt-jsonsummary.log + # filtered-wpt-summary.log + # intermittents.log + # linux-wpt9: + # #needs: build-linux + # runs-on: ubuntu-20.04 + # steps: + # - uses: actions/checkout@v2 + # with: + # fetch-depth: 2 + + # #- name: Download release binary + # # uses: actions/download-artifact@v2 + # # with: + # # name: release-binary + + # - name: Fake build + # run: | + # wget https://joshmatthews.net/release-binary.zip + # unzip release-binary.zip + + # - name: Prep test environment + # run: | + # tar -xzf target.tar.gz + # python3 -m pip install --upgrade pip virtualenv + # sudo apt update + # sudo apt install -qy --no-install-recommends libgl1 libssl1.1 libdbus-1-3 libxcb-xfixes0-dev libxcb-shape0-dev libunwind8 libegl1-mesa + # wget http://mirrors.kernel.org/ubuntu/pool/main/libf/libffi/libffi6_3.2.1-8_amd64.deb + # sudo apt install ./libffi6_3.2.1-8_amd64.deb + # python3 ./mach bootstrap-gstreamer + + # - name: Run tests + # run: | + # python3 ./mach test-wpt --release --processes=2 --total-chunks=20 --this-chunk=9 --log-raw=test-wpt.log --log-servojson=wpt-jsonsummary.log --always-succeed | cat + # python3 ./mach filter-intermittents wpt-jsonsummary.log --log-intermittents=intermittents.log --log-filteredsummary=filtered-wpt-summary.log --tracker-api=default --reporter-api=default + + # - name: Archive logs + # uses: actions/upload-artifact@v2 + # with: + # name: wpt9-logs-linux + # path: | + # test-wpt.log + # wpt-jsonsummary.log + # filtered-wpt-summary.log + # intermittents.log + # linux-wpt10: + # #needs: build-linux + # runs-on: ubuntu-20.04 + # steps: + # - uses: actions/checkout@v2 + # with: + # fetch-depth: 2 + + # #- name: Download release binary + # # uses: actions/download-artifact@v2 + # # with: + # # name: release-binary + + # - name: Fake build + # run: | + # wget https://joshmatthews.net/release-binary.zip + # unzip release-binary.zip + + # - name: Prep test environment + # run: | + # tar -xzf target.tar.gz + # python3 -m pip install --upgrade pip virtualenv + # sudo apt update + # sudo apt install -qy --no-install-recommends libgl1 libssl1.1 libdbus-1-3 libxcb-xfixes0-dev libxcb-shape0-dev libunwind8 libegl1-mesa + # wget http://mirrors.kernel.org/ubuntu/pool/main/libf/libffi/libffi6_3.2.1-8_amd64.deb + # sudo apt install ./libffi6_3.2.1-8_amd64.deb + # python3 ./mach bootstrap-gstreamer + + # - name: Run tests + # run: | + # python3 ./mach test-wpt --release --processes=2 --total-chunks=20 --this-chunk=10 --log-raw=test-wpt.log --log-servojson=wpt-jsonsummary.log --always-succeed | cat + # python3 ./mach filter-intermittents wpt-jsonsummary.log --log-intermittents=intermittents.log --log-filteredsummary=filtered-wpt-summary.log --tracker-api=default --reporter-api=default + + # - name: Archive logs + # uses: actions/upload-artifact@v2 + # with: + # name: wpt10-logs-linux + # path: | + # test-wpt.log + # wpt-jsonsummary.log + # filtered-wpt-summary.log + # intermittents.log + # linux-wpt11: + # #needs: build-linux + # runs-on: ubuntu-20.04 + # steps: + # - uses: actions/checkout@v2 + # with: + # fetch-depth: 2 + + # #- name: Download release binary + # # uses: actions/download-artifact@v2 + # # with: + # # name: release-binary + + # - name: Fake build + # run: | + # wget https://joshmatthews.net/release-binary.zip + # unzip release-binary.zip + + # - name: Prep test environment + # run: | + # tar -xzf target.tar.gz + # python3 -m pip install --upgrade pip virtualenv + # sudo apt update + # sudo apt install -qy --no-install-recommends libgl1 libssl1.1 libdbus-1-3 libxcb-xfixes0-dev libxcb-shape0-dev libunwind8 libegl1-mesa + # wget http://mirrors.kernel.org/ubuntu/pool/main/libf/libffi/libffi6_3.2.1-8_amd64.deb + # sudo apt install ./libffi6_3.2.1-8_amd64.deb + # python3 ./mach bootstrap-gstreamer + + # - name: Run tests + # run: | + # python3 ./mach test-wpt --release --processes=2 --total-chunks=20 --this-chunk=11 --log-raw=test-wpt.log --log-servojson=wpt-jsonsummary.log --always-succeed | cat + # python3 ./mach filter-intermittents wpt-jsonsummary.log --log-intermittents=intermittents.log --log-filteredsummary=filtered-wpt-summary.log --tracker-api=default --reporter-api=default + + # - name: Archive logs + # uses: actions/upload-artifact@v2 + # with: + # name: wpt11-logs-linux + # path: | + # test-wpt.log + # wpt-jsonsummary.log + # filtered-wpt-summary.log + # intermittents.log + # linux-wpt12: + # #needs: build-linux + # runs-on: ubuntu-20.04 + # steps: + # - uses: actions/checkout@v2 + # with: + # fetch-depth: 2 + + # #- name: Download release binary + # # uses: actions/download-artifact@v2 + # # with: + # # name: release-binary + + # - name: Fake build + # run: | + # wget https://joshmatthews.net/release-binary.zip + # unzip release-binary.zip + + # - name: Prep test environment + # run: | + # tar -xzf target.tar.gz + # python3 -m pip install --upgrade pip virtualenv + # sudo apt update + # sudo apt install -qy --no-install-recommends libgl1 libssl1.1 libdbus-1-3 libxcb-xfixes0-dev libxcb-shape0-dev libunwind8 libegl1-mesa + # wget http://mirrors.kernel.org/ubuntu/pool/main/libf/libffi/libffi6_3.2.1-8_amd64.deb + # sudo apt install ./libffi6_3.2.1-8_amd64.deb + # python3 ./mach bootstrap-gstreamer + + # - name: Run tests + # run: | + # python3 ./mach test-wpt --release --processes=2 --total-chunks=20 --this-chunk=12 --log-raw=test-wpt.log --log-servojson=wpt-jsonsummary.log --always-succeed | cat + # python3 ./mach filter-intermittents wpt-jsonsummary.log --log-intermittents=intermittents.log --log-filteredsummary=filtered-wpt-summary.log --tracker-api=default --reporter-api=default + + # - name: Archive logs + # uses: actions/upload-artifact@v2 + # with: + # name: wpt12-logs-linux + # path: | + # test-wpt.log + # wpt-jsonsummary.log + # filtered-wpt-summary.log + # intermittents.log + # linux-wpt13: + # #needs: build-linux + # runs-on: ubuntu-20.04 + # steps: + # - uses: actions/checkout@v2 + # with: + # fetch-depth: 2 + + # #- name: Download release binary + # # uses: actions/download-artifact@v2 + # # with: + # # name: release-binary + + # - name: Fake build + # run: | + # wget https://joshmatthews.net/release-binary.zip + # unzip release-binary.zip + + # - name: Prep test environment + # run: | + # tar -xzf target.tar.gz + # python3 -m pip install --upgrade pip virtualenv + # sudo apt update + # sudo apt install -qy --no-install-recommends libgl1 libssl1.1 libdbus-1-3 libxcb-xfixes0-dev libxcb-shape0-dev libunwind8 libegl1-mesa + # wget http://mirrors.kernel.org/ubuntu/pool/main/libf/libffi/libffi6_3.2.1-8_amd64.deb + # sudo apt install ./libffi6_3.2.1-8_amd64.deb + # python3 ./mach bootstrap-gstreamer + + # - name: Run tests + # run: | + # python3 ./mach test-wpt --release --processes=2 --total-chunks=20 --this-chunk=13 --log-raw=test-wpt.log --log-servojson=wpt-jsonsummary.log --always-succeed | cat + # python3 ./mach filter-intermittents wpt-jsonsummary.log --log-intermittents=intermittents.log --log-filteredsummary=filtered-wpt-summary.log --tracker-api=default --reporter-api=default + + # - name: Archive logs + # uses: actions/upload-artifact@v2 + # with: + # name: wpt13-logs-linux + # path: | + # test-wpt.log + # wpt-jsonsummary.log + # filtered-wpt-summary.log + # intermittents.log + # linux-wpt14: + # #needs: build-linux + # runs-on: ubuntu-20.04 + # steps: + # - uses: actions/checkout@v2 + # with: + # fetch-depth: 2 + + # #- name: Download release binary + # # uses: actions/download-artifact@v2 + # # with: + # # name: release-binary + + # - name: Fake build + # run: | + # wget https://joshmatthews.net/release-binary.zip + # unzip release-binary.zip + + # - name: Prep test environment + # run: | + # tar -xzf target.tar.gz + # python3 -m pip install --upgrade pip virtualenv + # sudo apt update + # sudo apt install -qy --no-install-recommends libgl1 libssl1.1 libdbus-1-3 libxcb-xfixes0-dev libxcb-shape0-dev libunwind8 libegl1-mesa + # wget http://mirrors.kernel.org/ubuntu/pool/main/libf/libffi/libffi6_3.2.1-8_amd64.deb + # sudo apt install ./libffi6_3.2.1-8_amd64.deb + # python3 ./mach bootstrap-gstreamer + + # - name: Run tests + # run: | + # python3 ./mach test-wpt --release --processes=2 --total-chunks=20 --this-chunk=14 --log-raw=test-wpt.log --log-servojson=wpt-jsonsummary.log --always-succeed | cat + # python3 ./mach filter-intermittents wpt-jsonsummary.log --log-intermittents=intermittents.log --log-filteredsummary=filtered-wpt-summary.log --tracker-api=default --reporter-api=default + + # - name: Archive logs + # uses: actions/upload-artifact@v2 + # with: + # name: wpt14-logs-linux + # path: | + # test-wpt.log + # wpt-jsonsummary.log + # filtered-wpt-summary.log + # intermittents.log + # linux-wpt15: + # #needs: build-linux + # runs-on: ubuntu-20.04 + # steps: + # - uses: actions/checkout@v2 + # with: + # fetch-depth: 2 + + # #- name: Download release binary + # # uses: actions/download-artifact@v2 + # # with: + # # name: release-binary + + # - name: Fake build + # run: | + # wget https://joshmatthews.net/release-binary.zip + # unzip release-binary.zip + + # - name: Prep test environment + # run: | + # tar -xzf target.tar.gz + # python3 -m pip install --upgrade pip virtualenv + # sudo apt update + # sudo apt install -qy --no-install-recommends libgl1 libssl1.1 libdbus-1-3 libxcb-xfixes0-dev libxcb-shape0-dev libunwind8 libegl1-mesa + # wget http://mirrors.kernel.org/ubuntu/pool/main/libf/libffi/libffi6_3.2.1-8_amd64.deb + # sudo apt install ./libffi6_3.2.1-8_amd64.deb + # python3 ./mach bootstrap-gstreamer + + # - name: Run tests + # run: | + # python3 ./mach test-wpt --release --processes=2 --total-chunks=20 --this-chunk=15 --log-raw=test-wpt.log --log-servojson=wpt-jsonsummary.log --always-succeed | cat + # python3 ./mach filter-intermittents wpt-jsonsummary.log --log-intermittents=intermittents.log --log-filteredsummary=filtered-wpt-summary.log --tracker-api=default --reporter-api=default + + # - name: Archive logs + # uses: actions/upload-artifact@v2 + # with: + # name: wpt15-logs-linux + # path: | + # test-wpt.log + # wpt-jsonsummary.log + # filtered-wpt-summary.log + # intermittents.log + # linux-wpt16: + # #needs: build-linux + # runs-on: ubuntu-20.04 + # steps: + # - uses: actions/checkout@v2 + # with: + # fetch-depth: 2 + + # #- name: Download release binary + # # uses: actions/download-artifact@v2 + # # with: + # # name: release-binary + + # - name: Fake build + # run: | + # wget https://joshmatthews.net/release-binary.zip + # unzip release-binary.zip + + # - name: Prep test environment + # run: | + # tar -xzf target.tar.gz + # python3 -m pip install --upgrade pip virtualenv + # sudo apt update + # sudo apt install -qy --no-install-recommends libgl1 libssl1.1 libdbus-1-3 libxcb-xfixes0-dev libxcb-shape0-dev libunwind8 libegl1-mesa + # wget http://mirrors.kernel.org/ubuntu/pool/main/libf/libffi/libffi6_3.2.1-8_amd64.deb + # sudo apt install ./libffi6_3.2.1-8_amd64.deb + # python3 ./mach bootstrap-gstreamer + + # - name: Run tests + # run: | + # python3 ./mach test-wpt --release --processes=2 --total-chunks=20 --this-chunk=16 --log-raw=test-wpt.log --log-servojson=wpt-jsonsummary.log --always-succeed | cat + # python3 ./mach filter-intermittents wpt-jsonsummary.log --log-intermittents=intermittents.log --log-filteredsummary=filtered-wpt-summary.log --tracker-api=default --reporter-api=default + + # - name: Archive logs + # uses: actions/upload-artifact@v2 + # with: + # name: wpt16-logs-linux + # path: | + # test-wpt.log + # wpt-jsonsummary.log + # filtered-wpt-summary.log + # intermittents.log + # linux-wpt17: + # #needs: build-linux + # runs-on: ubuntu-20.04 + # steps: + # - uses: actions/checkout@v2 + # with: + # fetch-depth: 2 + + # #- name: Download release binary + # # uses: actions/download-artifact@v2 + # # with: + # # name: release-binary + + # - name: Fake build + # run: | + # wget https://joshmatthews.net/release-binary.zip + # unzip release-binary.zip + + # - name: Prep test environment + # run: | + # tar -xzf target.tar.gz + # python3 -m pip install --upgrade pip virtualenv + # sudo apt update + # sudo apt install -qy --no-install-recommends libgl1 libssl1.1 libdbus-1-3 libxcb-xfixes0-dev libxcb-shape0-dev libunwind8 libegl1-mesa + # wget http://mirrors.kernel.org/ubuntu/pool/main/libf/libffi/libffi6_3.2.1-8_amd64.deb + # sudo apt install ./libffi6_3.2.1-8_amd64.deb + # python3 ./mach bootstrap-gstreamer + + # - name: Run tests + # run: | + # python3 ./mach test-wpt --release --processes=2 --total-chunks=20 --this-chunk=17 --log-raw=test-wpt.log --log-servojson=wpt-jsonsummary.log --always-succeed | cat + # python3 ./mach filter-intermittents wpt-jsonsummary.log --log-intermittents=intermittents.log --log-filteredsummary=filtered-wpt-summary.log --tracker-api=default --reporter-api=default + + # - name: Archive logs + # uses: actions/upload-artifact@v2 + # with: + # name: wpt17-logs-linux + # path: | + # test-wpt.log + # wpt-jsonsummary.log + # filtered-wpt-summary.log + # intermittents.log + # linux-wpt18: + # #needs: build-linux + # runs-on: ubuntu-20.04 + # steps: + # - uses: actions/checkout@v2 + # with: + # fetch-depth: 2 + + # #- name: Download release binary + # # uses: actions/download-artifact@v2 + # # with: + # # name: release-binary + + # - name: Fake build + # run: | + # wget https://joshmatthews.net/release-binary.zip + # unzip release-binary.zip + + # - name: Prep test environment + # run: | + # tar -xzf target.tar.gz + # python3 -m pip install --upgrade pip virtualenv + # sudo apt update + # sudo apt install -qy --no-install-recommends libgl1 libssl1.1 libdbus-1-3 libxcb-xfixes0-dev libxcb-shape0-dev libunwind8 libegl1-mesa + # wget http://mirrors.kernel.org/ubuntu/pool/main/libf/libffi/libffi6_3.2.1-8_amd64.deb + # sudo apt install ./libffi6_3.2.1-8_amd64.deb + # python3 ./mach bootstrap-gstreamer + + # - name: Run tests + # run: | + # python3 ./mach test-wpt --release --processes=2 --total-chunks=20 --this-chunk=18 --log-raw=test-wpt.log --log-servojson=wpt-jsonsummary.log --always-succeed | cat + # python3 ./mach filter-intermittents wpt-jsonsummary.log --log-intermittents=intermittents.log --log-filteredsummary=filtered-wpt-summary.log --tracker-api=default --reporter-api=default + + # - name: Archive logs + # uses: actions/upload-artifact@v2 + # with: + # name: wpt18-logs-linux + # path: | + # test-wpt.log + # wpt-jsonsummary.log + # filtered-wpt-summary.log + # intermittents.log + # linux-wpt19: + # #needs: build-linux + # runs-on: ubuntu-20.04 + # steps: + # - uses: actions/checkout@v2 + # with: + # fetch-depth: 2 + + # #- name: Download release binary + # # uses: actions/download-artifact@v2 + # # with: + # # name: release-binary + + # - name: Fake build + # run: | + # wget https://joshmatthews.net/release-binary.zip + # unzip release-binary.zip + + # - name: Prep test environment + # run: | + # tar -xzf target.tar.gz + # python3 -m pip install --upgrade pip virtualenv + # sudo apt update + # sudo apt install -qy --no-install-recommends libgl1 libssl1.1 libdbus-1-3 libxcb-xfixes0-dev libxcb-shape0-dev libunwind8 libegl1-mesa + # wget http://mirrors.kernel.org/ubuntu/pool/main/libf/libffi/libffi6_3.2.1-8_amd64.deb + # sudo apt install ./libffi6_3.2.1-8_amd64.deb + # python3 ./mach bootstrap-gstreamer + + # - name: Run tests + # run: | + # python3 ./mach test-wpt --release --processes=2 --total-chunks=20 --this-chunk=19 --log-raw=test-wpt.log --log-servojson=wpt-jsonsummary.log --always-succeed | cat + # python3 ./mach filter-intermittents wpt-jsonsummary.log --log-intermittents=intermittents.log --log-filteredsummary=filtered-wpt-summary.log --tracker-api=default --reporter-api=default + + # - name: Archive logs + # uses: actions/upload-artifact@v2 + # with: + # name: wpt19-logs-linux + # path: | + # test-wpt.log + # wpt-jsonsummary.log + # filtered-wpt-summary.log + # intermittents.log + # linux-wpt20: + # #needs: build-linux + # runs-on: ubuntu-20.04 + # steps: + # - uses: actions/checkout@v2 + # with: + # fetch-depth: 2 + + # #- name: Download release binary + # # uses: actions/download-artifact@v2 + # # with: + # # name: release-binary + + # - name: Fake build + # run: | + # wget https://joshmatthews.net/release-binary.zip + # unzip release-binary.zip + + # - name: Prep test environment + # run: | + # tar -xzf target.tar.gz + # python3 -m pip install --upgrade pip virtualenv + # sudo apt update + # sudo apt install -qy --no-install-recommends libgl1 libssl1.1 libdbus-1-3 libxcb-xfixes0-dev libxcb-shape0-dev libunwind8 libegl1-mesa + # wget http://mirrors.kernel.org/ubuntu/pool/main/libf/libffi/libffi6_3.2.1-8_amd64.deb + # sudo apt install ./libffi6_3.2.1-8_amd64.deb + # python3 ./mach bootstrap-gstreamer + + # - name: Run tests + # run: | + # python3 ./mach test-wpt --release --processes=2 --total-chunks=20 --this-chunk=20 --log-raw=test-wpt.log --log-servojson=wpt-jsonsummary.log --always-succeed | cat + # python3 ./mach filter-intermittents wpt-jsonsummary.log --log-intermittents=intermittents.log --log-filteredsummary=filtered-wpt-summary.log --tracker-api=default --reporter-api=default + + # - name: Archive logs + # uses: actions/upload-artifact@v2 + # with: + # name: wpt20-logs-linux + # path: | + # test-wpt.log + # wpt-jsonsummary.log + # filtered-wpt-summary.log + # intermittents.log + + build_result: + name: homu build finished + runs-on: ubuntu-latest + needs: ["build-win", "build-mac", "build-linux"] + steps: + - name: Mark the job as successful + run: exit 0 + if: success() + - name: Mark the job as unsuccessful + run: exit 1 + if: "!success()" diff --git a/components/style/build.rs b/components/style/build.rs index 2247e876181..d8f87f8bae5 100644 --- a/components/style/build.rs +++ b/components/style/build.rs @@ -21,7 +21,7 @@ mod build_gecko { lazy_static! { pub static ref PYTHON: String = env::var("PYTHON3").ok().unwrap_or_else(|| { let candidates = if cfg!(windows) { - ["python3.exe"] + ["python.exe"] } else { ["python3"] }; diff --git a/etc/ci/generate_workflow.py b/etc/ci/generate_workflow.py new file mode 100644 index 00000000000..9abf03e4784 --- /dev/null +++ b/etc/ci/generate_workflow.py @@ -0,0 +1,59 @@ +# Copyright 2021 The Servo Project Developers. See the COPYRIGHT +# file at the top-level directory of this distribution. +# +# Licensed under the Apache License, Version 2.0 or the MIT license +# , at your +# option. This file may not be copied, modified, or distributed +# except according to those terms. + +import os.path +import sys + +BASE = os.path.dirname(__file__.replace('\\', '/')) +sys.path.insert(0, os.path.join( + BASE, "..", "..", "components", "style", "properties", "Mako-1.1.2-py2.py3-none-any.whl" +)) + +from mako import exceptions # noqa +from mako.lookup import TemplateLookup # noqa +from mako.template import Template # noqa + + +def abort(message): + print(message, file=sys.stderr) + sys.exit(1) + + +def render(filename, **context): + try: + lookup = TemplateLookup(directories=[BASE], + input_encoding="utf8", + strict_undefined=True) + template = Template(open(os.path.join(BASE, filename), "rb").read(), + filename=filename, + input_encoding="utf8", + lookup=lookup, + strict_undefined=True) + # Uncomment to debug generated Python code: + # write("/tmp", "mako_%s.py" % os.path.basename(filename), template.code) + return template.render(**context) + except Exception: + # Uncomment to see a traceback in generated Python code: + # raise + abort(exceptions.text_error_template().render()) + + +def main(): + with open(os.path.join(".github", "workflows", "main.yml"), 'w') as f: + f.write(render( + 'workflow.mako', + total_chunks=20, + GITHUB_REPOSITORY="${{ github.repository }}", + GITHUB_REF="${{ github.ref }}", + GITHUB_SHA="${{ github.sha }}", + )) + + +if __name__ == "__main__": + main() diff --git a/etc/ci/workflow.mako b/etc/ci/workflow.mako new file mode 100644 index 00000000000..bd8f4c3bf45 --- /dev/null +++ b/etc/ci/workflow.mako @@ -0,0 +1,196 @@ +name: CI + +on: + # Triggers the workflow on push or pull request events but only for the master branch + push: + branches: [ "master", "github-actions-dev", "auto", "try", "try-linux", "try-mac" ] + pull_request: + branches: [ "master", "github-actions-dev" ] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +env: + RUST_BACKTRACE: 1 + SHELL: /bin/bash + +jobs: + build-win: + name: Build (Windows) + runs-on: windows-2019 + steps: + - name: Clone + run: | + mkdir c:/Repo + git clone https://github.com/${ GITHUB_REPOSITORY } --depth 2 c:/Repo + cd c:/Repo + git fetch origin ${ GITHUB_REF } + git checkout ${ GITHUB_SHA } + - name: Bootstrap + working-directory: c:/Repo + run: | + python -m pip install --upgrade pip virtualenv + python mach fetch + - name: Release build + working-directory: c:/Repo + run: python mach build --release --media-stack=dummy + - name: Unit tests + working-directory: c:/Repo + run: python mach test-unit --release + - name: Smoketest + working-directory: c:/Repo + run: python mach smoketest --angle + + build-mac: + name: Build (macOS) + runs-on: macos-10.15 + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 2 + - name: Bootstrap + run: | + python3 -m pip install --upgrade pip virtualenv + brew bundle install --verbose --no-upgrade --file=etc/taskcluster/macos/Brewfile + brew bundle install --verbose --no-upgrade --file=etc/taskcluster/macos/Brewfile-build + rm -rf /usr/local/etc/openssl + rm -rf /usr/local/etc/openssl@1.1 + brew install openssl@1.1 gnu-tar + - name: Release build + run: | + export OPENSSL_INCLUDE_DIR="$(brew --prefix openssl)/include" + export OPENSSL_LIB_DIR="$(brew --prefix openssl)/lib" + export PKG_CONFIG_PATH="$(brew --prefix libffi)/lib/pkgconfig/" + export PKG_CONFIG_PATH="$(brew --prefix zlib)/lib/pkgconfig/:$PKG_CONFIG_PATH" + python3 ./mach build --release + - name: Smoketest + run: python3 ./mach smoketest + - name: Package binary + run: gtar -czf target.tar.gz target/release/servo target/release/*.dylib resources + - name: Archive binary + uses: actions/upload-artifact@v2 + with: + name: release-binary-macos + path: target.tar.gz + +% for chunk in range(1, total_chunks + 1): + # mac-wpt${chunk}: + # #needs: build-mac + # runs-on: macos-10.15 + # steps: + # - uses: actions/checkout@v2 + # with: + # fetch-depth: 2 + + # #- name: Download release binary + # # uses: actions/download-artifact@v2 + # # with: + # # name: release-binary-macos + + # - name: Fake build + # run: | + # wget https://joshmatthews.net/release-binary-macos.zip + # unzip release-binary-macos.zip + + # - name: Prep test environment + # run: | + # brew install gnu-tar + # gtar -xzf target.tar.gz + # python3 -m pip install --upgrade pip virtualenv + # brew bundle install --verbose --no-upgrade --file=etc/taskcluster/macos/Brewfile + # - name: Smoketest + # run: python3 ./mach smoketest + # - name: Run tests + # run: | + # python3 ./mach test-wpt --release --processes=3 --timeout-multiplier=8 --total-chunks=${total_chunks} --this-chunk=${chunk} --log-raw=test-wpt.log --log-servojson=wpt-jsonsummary.log --always-succeed | cat + # python3 ./mach filter-intermittents wpt-jsonsummary.log --log-intermittents=intermittents.log --log-filteredsummary=filtered-wpt-summary.log --tracker-api=default --reporter-api=default + + # - name: Archive logs + # uses: actions/upload-artifact@v2 + # with: + # name: wpt${chunk}-logs-macos + # path: | + # test-wpt.log + # wpt-jsonsummary.log + # filtered-wpt-summary.log + # intermittents.log +% endfor + + build-linux: + name: Build (Linux) + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 2 + - name: Bootstrap + run: | + python3 -m pip install --upgrade pip virtualenv + sudo apt update + python3 ./mach bootstrap + - name: Release build + run: python3 ./mach build --release + - name: Package binary + run: tar -czf target.tar.gz target/release/servo resources + - name: Archive binary + uses: actions/upload-artifact@v2 + with: + name: release-binary + path: target.tar.gz + +% for chunk in range(1, total_chunks + 1): + # linux-wpt${chunk}: + # #needs: build-linux + # runs-on: ubuntu-20.04 + # steps: + # - uses: actions/checkout@v2 + # with: + # fetch-depth: 2 + + # #- name: Download release binary + # # uses: actions/download-artifact@v2 + # # with: + # # name: release-binary + + # - name: Fake build + # run: | + # wget https://joshmatthews.net/release-binary.zip + # unzip release-binary.zip + + # - name: Prep test environment + # run: | + # tar -xzf target.tar.gz + # python3 -m pip install --upgrade pip virtualenv + # sudo apt update + # sudo apt install -qy --no-install-recommends libgl1 libssl1.1 libdbus-1-3 libxcb-xfixes0-dev libxcb-shape0-dev libunwind8 libegl1-mesa + # wget http://mirrors.kernel.org/ubuntu/pool/main/libf/libffi/libffi6_3.2.1-8_amd64.deb + # sudo apt install ./libffi6_3.2.1-8_amd64.deb + # python3 ./mach bootstrap-gstreamer + + # - name: Run tests + # run: | + # python3 ./mach test-wpt --release --processes=2 --total-chunks=${total_chunks} --this-chunk=${chunk} --log-raw=test-wpt.log --log-servojson=wpt-jsonsummary.log --always-succeed | cat + # python3 ./mach filter-intermittents wpt-jsonsummary.log --log-intermittents=intermittents.log --log-filteredsummary=filtered-wpt-summary.log --tracker-api=default --reporter-api=default + + # - name: Archive logs + # uses: actions/upload-artifact@v2 + # with: + # name: wpt${chunk}-logs-linux + # path: | + # test-wpt.log + # wpt-jsonsummary.log + # filtered-wpt-summary.log + # intermittents.log +% endfor + + build_result: + name: homu build finished + runs-on: ubuntu-latest + needs: ["build-win", "build-mac", "build-linux"] + steps: + - name: Mark the job as successful + run: exit 0 + if: success() + - name: Mark the job as unsuccessful + run: exit 1 + if: "!success()" From 30143558b3d902f9e5f43f93179b6f17d17fcd5b Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Thu, 18 Feb 2021 23:36:14 -0500 Subject: [PATCH 2/5] Don't package gstreamer when it's disabled. --- python/servo/build_commands.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/python/servo/build_commands.py b/python/servo/build_commands.py index 7095cfbcad4..11b53be6a89 100644 --- a/python/servo/build_commands.py +++ b/python/servo/build_commands.py @@ -193,7 +193,9 @@ class MachCommands(CommandBase): if not uwp: uwp = target and 'uwp' in target - features += self.pick_media_stack(media_stack, target) + media_stack = self.pick_media_stack(media_stack, target) + features += media_stack + has_media_stack = media_stack[0] == "media-gstreamer" target_path = base_path = self.get_target_dir() if android: @@ -726,9 +728,10 @@ class MachCommands(CommandBase): status = 1 # copy needed gstreamer DLLs in to servo.exe dir - print("Packaging gstreamer DLLs") - if not package_gstreamer_dlls(env, servo_exe_dir, target_triple, uwp): - status = 1 + if has_media_stack: + print("Packaging gstreamer DLLs") + if not package_gstreamer_dlls(env, servo_exe_dir, target_triple, uwp): + status = 1 # UWP app packaging already bundles all required DLLs for us. print("Packaging MSVC DLLs") @@ -741,7 +744,7 @@ class MachCommands(CommandBase): ) assert os.path.exists(servo_exe_dir) - if not package_gstreamer_dylibs(servo_exe_dir): + if has_media_stack and not package_gstreamer_dylibs(servo_exe_dir): return 1 # On the Mac, set a lovely icon. This makes it easier to pick out the Servo binary in tools From a6b872a9d1fec5f572fe53fc85d863f7bce78036 Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Thu, 25 Feb 2021 10:02:41 -0500 Subject: [PATCH 3/5] Ensure clang-cl is always used in windows builds. --- python/servo/build_commands.py | 10 +--------- python/servo/command_base.py | 8 ++++++++ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/python/servo/build_commands.py b/python/servo/build_commands.py index 11b53be6a89..1d537acd0e9 100644 --- a/python/servo/build_commands.py +++ b/python/servo/build_commands.py @@ -653,15 +653,7 @@ class MachCommands(CommandBase): for key in env: print((key, env[key])) - if sys.platform == "win32": - env.setdefault("CC", "clang-cl.exe") - env.setdefault("CXX", "clang-cl.exe") - if uwp: - env.setdefault("TARGET_CFLAGS", "") - env.setdefault("TARGET_CXXFLAGS", "") - env["TARGET_CFLAGS"] += " -DWINAPI_FAMILY=WINAPI_FAMILY_APP" - env["TARGET_CXXFLAGS"] += " -DWINAPI_FAMILY=WINAPI_FAMILY_APP" - else: + if sys.platform != "win32": env.setdefault("CC", "clang") env.setdefault("CXX", "clang++") diff --git a/python/servo/command_base.py b/python/servo/command_base.py index fb1c79b8b3c..42d8535f768 100644 --- a/python/servo/command_base.py +++ b/python/servo/command_base.py @@ -610,6 +610,14 @@ install them, let us know by filing a bug!") extra_path += [self.msvc_package_dir("nuget")] extra_path += [path.join(self.msvc_package_dir("xargo"))] + env.setdefault("CC", "clang-cl.exe") + env.setdefault("CXX", "clang-cl.exe") + if uwp: + env.setdefault("TARGET_CFLAGS", "") + env.setdefault("TARGET_CXXFLAGS", "") + env["TARGET_CFLAGS"] += " -DWINAPI_FAMILY=WINAPI_FAMILY_APP" + env["TARGET_CXXFLAGS"] += " -DWINAPI_FAMILY=WINAPI_FAMILY_APP" + arch = (target or host_triple()).split('-')[0] vcpkg_arch = { "x86_64": "x64-windows", From 3f39dde189ff4f29ddd56d7f04a6e5be3cd61c0e Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Thu, 25 Feb 2021 23:53:51 -0500 Subject: [PATCH 4/5] Adjust size test for debug/release differences. --- components/layout/tests/size_of.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/components/layout/tests/size_of.rs b/components/layout/tests/size_of.rs index e2cec625075..74314a38cae 100644 --- a/components/layout/tests/size_of.rs +++ b/components/layout/tests/size_of.rs @@ -10,7 +10,10 @@ extern crate size_of_test; use layout::Fragment; use layout::SpecificFragmentInfo; +#[cfg(debug_assertions)] size_of_test!(test_size_of_fragment, Fragment, 176); +#[cfg(not(debug_assertions))] +size_of_test!(test_size_of_fragment, Fragment, 152); size_of_test!( test_size_of_specific_fragment_info, SpecificFragmentInfo, From c66255ba5e308726f7e9ffcea85577e3c56bb206 Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Sat, 6 Mar 2021 12:41:51 -0500 Subject: [PATCH 5/5] Copy to C: on Windows instead of manually cloning. --- .github/workflows/main.yml | 20 +++++++++----------- etc/ci/generate_workflow.py | 4 +--- etc/ci/workflow.mako | 20 +++++++++----------- 3 files changed, 19 insertions(+), 25 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 4a1cbde4318..13e6e51228a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -19,26 +19,24 @@ jobs: name: Build (Windows) runs-on: windows-2019 steps: - - name: Clone - run: | - mkdir c:/Repo - git clone https://github.com/${{ github.repository }} --depth 2 c:/Repo - cd c:/Repo - git fetch origin ${{ github.ref }} - git checkout ${{ github.sha }} + - uses: actions/checkout@v2 + with: + fetch-depth: 2 + - name: Copy to C drive + run: cp D:\a C:\ -Recurse - name: Bootstrap - working-directory: c:/Repo + working-directory: "C:\\a\\${{ github.event.repository.name }}\\${{ github.event.repository.name }}" run: | python -m pip install --upgrade pip virtualenv python mach fetch - name: Release build - working-directory: c:/Repo + working-directory: "C:\\a\\${{ github.event.repository.name }}\\${{ github.event.repository.name }}" run: python mach build --release --media-stack=dummy - name: Unit tests - working-directory: c:/Repo + working-directory: "C:\\a\\${{ github.event.repository.name }}\\${{ github.event.repository.name }}" run: python mach test-unit --release - name: Smoketest - working-directory: c:/Repo + working-directory: "C:\\a\\${{ github.event.repository.name }}\\${{ github.event.repository.name }}" run: python mach smoketest --angle build-mac: diff --git a/etc/ci/generate_workflow.py b/etc/ci/generate_workflow.py index 9abf03e4784..92bb0e7faaa 100644 --- a/etc/ci/generate_workflow.py +++ b/etc/ci/generate_workflow.py @@ -49,9 +49,7 @@ def main(): f.write(render( 'workflow.mako', total_chunks=20, - GITHUB_REPOSITORY="${{ github.repository }}", - GITHUB_REF="${{ github.ref }}", - GITHUB_SHA="${{ github.sha }}", + REPOSITORY_NAME="${{ github.event.repository.name }}", )) diff --git a/etc/ci/workflow.mako b/etc/ci/workflow.mako index bd8f4c3bf45..abc2ae26be6 100644 --- a/etc/ci/workflow.mako +++ b/etc/ci/workflow.mako @@ -19,26 +19,24 @@ jobs: name: Build (Windows) runs-on: windows-2019 steps: - - name: Clone - run: | - mkdir c:/Repo - git clone https://github.com/${ GITHUB_REPOSITORY } --depth 2 c:/Repo - cd c:/Repo - git fetch origin ${ GITHUB_REF } - git checkout ${ GITHUB_SHA } + - uses: actions/checkout@v2 + with: + fetch-depth: 2 + - name: Copy to C drive + run: cp D:\a C:\ -Recurse - name: Bootstrap - working-directory: c:/Repo + working-directory: "C:\\a\\${ REPOSITORY_NAME }\\${ REPOSITORY_NAME }" run: | python -m pip install --upgrade pip virtualenv python mach fetch - name: Release build - working-directory: c:/Repo + working-directory: "C:\\a\\${ REPOSITORY_NAME }\\${ REPOSITORY_NAME }" run: python mach build --release --media-stack=dummy - name: Unit tests - working-directory: c:/Repo + working-directory: "C:\\a\\${ REPOSITORY_NAME }\\${ REPOSITORY_NAME }" run: python mach test-unit --release - name: Smoketest - working-directory: c:/Repo + working-directory: "C:\\a\\${ REPOSITORY_NAME }\\${ REPOSITORY_NAME }" run: python mach smoketest --angle build-mac: