mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
This change adds and alternate method for triggering try changes. Instead of comments, changes are triggered via applying labels to pull requests. The action will remove the label from the request and start the requested jobs. This will require creating at least a few labels: - T-full - T-linux-wpt-2013 - T-linux-wpt-2020 - T-macos - T-windows More labels can be added as we support more configurations. The good thing about this change is that try jobs against the actual branch in the pull request instead of the master branch. This means that changes to CI can be tested (unlike for comment processing). One bit caveat with this change is that when adding multiple labels, a CI job is triggered for each. Only one real build will run for each label, but whether or more try jobs is triggered is a race condition. The first CI job to successfully remove the label will actually trigger the job. If the same job removes two compatible labels, then they can share a build (for instance two types of WPT linux jobs). If not there will be two. Note that this is at least as efficient as the current behavior.
125 lines
4.2 KiB
YAML
125 lines
4.2 KiB
YAML
name: Windows
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
unit-tests:
|
|
required: false
|
|
default: false
|
|
type: boolean
|
|
upload:
|
|
required: false
|
|
default: false
|
|
type: boolean
|
|
github-release-id:
|
|
required: false
|
|
type: string
|
|
workflow_dispatch:
|
|
inputs:
|
|
unit-tests:
|
|
required: false
|
|
default: false
|
|
type: boolean
|
|
upload:
|
|
required: false
|
|
default: false
|
|
type: boolean
|
|
push:
|
|
branches: ["try-windows"]
|
|
|
|
env:
|
|
RUST_BACKTRACE: 1
|
|
SHELL: /bin/bash
|
|
CCACHE: "ccache"
|
|
CARGO_TARGET_DIR: C:\\a\\servo\\servo\\target
|
|
# clang_sys will search msys path before Program Files\LLVM
|
|
# so we need to override this behaviour until we update clang-sys
|
|
# https://github.com/KyleMayes/clang-sys/issues/150
|
|
LIBCLANG_PATH: C:\\Program Files\\LLVM\\bin
|
|
|
|
jobs:
|
|
build:
|
|
name: Windows Build
|
|
runs-on: windows-2019
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
if: github.event_name != 'issue_comment' && github.event_name != 'pull_request_target'
|
|
with:
|
|
fetch-depth: 2
|
|
# This is necessary to checkout the pull request if this run was triggered
|
|
# via an `issue_comment` action on a pull request.
|
|
- uses: actions/checkout@v3
|
|
if: github.event_name == 'issue_comment' || github.event_name == 'pull_request_target'
|
|
with:
|
|
ref: refs/pull/${{ github.event.issue.number || github.event.number }}/head
|
|
fetch-depth: 2
|
|
- name: ccache
|
|
uses: hendrikmuhs/ccache-action@v1.2
|
|
- name: Install taplo
|
|
uses: baptiste0928/cargo-install@v2
|
|
with:
|
|
crate: taplo-cli
|
|
locked: true
|
|
- name: Install wixtoolset
|
|
run: |
|
|
choco install wixtoolset
|
|
echo "C:\\Program Files (x86)\\WiX Toolset v3.11\\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
|
|
- name: Bootstrap
|
|
run: |
|
|
python -m pip install --upgrade pip virtualenv
|
|
python mach fetch
|
|
python mach bootstrap-gstreamer
|
|
- name: Release build
|
|
run: python mach build --release
|
|
- name: Copy resources
|
|
run: cp D:\a\servo\servo\resources C:\a\servo\servo -Recurse
|
|
- name: Smoketest
|
|
run: python mach smoketest --angle --release
|
|
- name: Unit tests
|
|
if: ${{ inputs.unit-tests || github.ref_name == 'try-windows' }}
|
|
run: python mach test-unit --release
|
|
- name: Rename build timing
|
|
run: cp C:\a\servo\servo\target\cargo-timings C:\a\servo\servo\target\cargo-timings-windows -Recurse
|
|
- name: Archive build timing
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: cargo-timings
|
|
# Using a wildcard here ensures that the archive includes the path.
|
|
path: C:\\a\\servo\\servo\\target\\cargo-timings-*
|
|
- name: Package
|
|
run: python mach package --release
|
|
- name: Upload package
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: win
|
|
# These files are available
|
|
# MSI Installer: C:\a\servo\servo\target\release\msi\Installer.msi
|
|
# Bundle: C:\a\servo\servo\target\release\msi\Servo.exe
|
|
# Zip: C:\a\servo\servo\target\release\msi\Servo.zip
|
|
path: C:\\a\\servo\\servo\\target/release/msi/Servo.exe
|
|
- name: Upload nightly
|
|
if: ${{ inputs.upload }}
|
|
run: |
|
|
python mach upload-nightly windows-msvc --secret-from-environment `
|
|
--github-release-id ${{ inputs.github-release-id }}
|
|
env:
|
|
S3_UPLOAD_CREDENTIALS: ${{ secrets.S3_UPLOAD_CREDENTIALS }}
|
|
NIGHTLY_REPO_TOKEN: ${{ secrets.NIGHTLY_REPO_TOKEN }}
|
|
NIGHTLY_REPO: ${{ github.repository_owner }}/servo-nightly-builds
|
|
|
|
result:
|
|
name: Result
|
|
runs-on: ubuntu-latest
|
|
if: always()
|
|
# needs all build to detect cancellation
|
|
needs:
|
|
- "build"
|
|
|
|
steps:
|
|
- name: Mark the job as successful
|
|
run: exit 0
|
|
if: ${{ !contains(needs.*.result, 'failure') && !contains(needs.*.result, 'cancelled') }}
|
|
- name: Mark the job as unsuccessful
|
|
run: exit 1
|
|
if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')
|
|
|