ci: Switch to version 4 of GitHub artifact actions (#31357)

* ci: Switch to version 4 of GitHub artifact actions

This switches to version 4 of the GitHub artifact actions, which
requires producing a single artifact per job and adding merge steps. In
addition, the names of artifacts are standardized:

- Build: <profile>-binary-<platform>
- Full WPT results (only on failure): wpt-full-logs-<platform>-<layout>
- Filtered WPT results (only on failure): wpt-filtered-logs-<platform>-<layout>

* Delete merged build timings and combine with Result job

* Always archives logs even after test failures

* Correct the name of the log files for WPT import
This commit is contained in:
Martin Robinson 2024-02-17 17:59:43 +01:00 committed by GitHub
parent d5c9e569bf
commit 1cc546c4fc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 144 additions and 133 deletions

View file

@ -70,20 +70,19 @@ jobs:
ANDROID_NDK_ROOT: ${{ steps.setup-ndk.outputs.ndk-path }} ANDROID_NDK_ROOT: ${{ steps.setup-ndk.outputs.ndk-path }}
run: | run: |
python3 ./mach build --android --target ${{ matrix.arch }} --${{ inputs.profile }} python3 ./mach build --android --target ${{ matrix.arch }} --${{ inputs.profile }}
cp -r target/cargo-timings target/cargo-timings-android-${{ matrix.arch }}
# TODO: This is disabled since APK crashes during startup. # TODO: This is disabled since APK crashes during startup.
# See https://github.com/servo/servo/issues/31134 # See https://github.com/servo/servo/issues/31134
# - name: Script tests # - name: Script tests
# run: ./mach test-android-startup # run: ./mach test-android-startup
- name: Rename build timing
run: cp -r target/cargo-timings target/cargo-timings-android-${{ matrix.arch }}
- name: Archive build timing - name: Archive build timing
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v4
with: with:
name: cargo-timings name: cargo-timings-android-${{ matrix.arch }}
# Using a wildcard here ensures that the archive includes the path. # Using a wildcard here ensures that the archive includes the path.
path: target/cargo-timings-* path: target/cargo-timings-*
- name: Upload APK artifact for mach package - name: Upload APK artifact for mach package
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v4
with: with:
name: android-${{ matrix.arch }}-${{ inputs.profile }} name: ${{ inputs.profile }}-binary-android-${{ matrix.arch }}
path: target/android/${{ matrix.arch }}/${{ inputs.profile }}/servoapp.apk path: target/android/${{ matrix.arch }}/${{ inputs.profile }}/servoapp.apk

View file

@ -20,8 +20,10 @@ on:
env: env:
RUST_BACKTRACE: 1 RUST_BACKTRACE: 1
SHELL: /bin/bash SHELL: /bin/bash
WPT_COMMAND_LINE_ARG: "${{ inputs.wpt-layout == 'layout-2013' && '--legacy-layout' || '' }}"
GST_PLUGIN_FEATURE_RANK: pulsesink:NONE,alsasink:NONE,jacksink:NONE,fakesink:MAX GST_PLUGIN_FEATURE_RANK: pulsesink:NONE,alsasink:NONE,jacksink:NONE,fakesink:MAX
INTERMITTENT_TRACKER_DASHBOARD_SECRET: ${{ !inputs.wpt-sync-from-upstream && secrets.INTERMITTENT_TRACKER_DASHBOARD_SECRET || '' }}
WPT_LAYOUT_ARG: "${{ inputs.wpt-layout == 'layout-2013' && '--legacy-layout' || '' }}"
WPT_ALWAYS_SUCCEED_ARG: "${{ inputs.wpt-sync-from-upstream && '--always-succeed' || '' }}"
jobs: jobs:
linux-wpt: linux-wpt:
@ -45,12 +47,12 @@ jobs:
with: with:
ref: refs/pull/${{ github.event.number }}/head ref: refs/pull/${{ github.event.number }}/head
fetch-depth: 2 fetch-depth: 2
- uses: actions/download-artifact@v3 - uses: actions/download-artifact@v4
with: with:
name: release-binary name: ${{ inputs.profile }}-binary-linux
path: release-binary path: ${{ inputs.profile }}-binary-linux
- name: unPackage binary - name: unPackage binary
run: tar -xzf release-binary/target.tar.gz run: tar -xzf ${{ inputs.profile }}-binary-linux/target.tar.gz
- name: Bootstrap dependencies - name: Bootstrap dependencies
run: | run: |
python3 -m pip install --upgrade pip python3 -m pip install --upgrade pip
@ -62,75 +64,66 @@ jobs:
run: | run: |
./mach update-wpt --sync --patch ./mach update-wpt --sync --patch
- name: Run tests - name: Run tests
if: ${{ !inputs.wpt-sync-from-upstream }}
run: | run: |
python3 ./mach test-wpt $WPT_COMMAND_LINE_ARG ${{ inputs.wpt-tests-to-run }} \ mkdir -p wpt-filtered-logs/linux-${{ inputs.wpt-layout }}
mkdir -p wpt-full-logs/linux-${{ inputs.wpt-layout }}
python3 ./mach test-wpt \
$WPT_LAYOUT_ARG \
$WPT_ALWAYS_SUCCEED_ARG \
${{ inputs.wpt-tests-to-run }} \
--${{ inputs.profile }} --processes $(nproc) --timeout-multiplier 2 \ --${{ inputs.profile }} --processes $(nproc) --timeout-multiplier 2 \
--total-chunks ${{ env.max_chunk_id }} --this-chunk ${{ matrix.chunk_id }} \ --total-chunks ${{ env.max_chunk_id }} --this-chunk ${{ matrix.chunk_id }} \
--log-raw test-wpt.${{ matrix.chunk_id }}.log \ --log-raw wpt-full-logs/linux-${{ inputs.wpt-layout }}/${{ matrix.chunk_id }}.log \
--log-raw-unexpected unexpected-test-wpt.${{ matrix.chunk_id }}.log \ --log-raw-unexpected wpt-filtered-logs/linux-${{ inputs.wpt-layout }}/${{ matrix.chunk_id }}.log \
--filter-intermittents filtered-test-wpt.${{ matrix.chunk_id }}.json --filter-intermittents wpt-filtered-logs/linux-${{ inputs.wpt-layout }}/${{ matrix.chunk_id }}.json
env: env:
GITHUB_CONTEXT: ${{ toJson(github) }} GITHUB_CONTEXT: ${{ toJson(github) }}
INTERMITTENT_TRACKER_DASHBOARD_SECRET: ${{ secrets.INTERMITTENT_TRACKER_DASHBOARD_SECRET }} - name: Archive results (filtered)
- name: Run tests (sync) uses: actions/upload-artifact@v4
if: ${{ inputs.wpt-sync-from-upstream }} if: ${{ always() }}
run: |
python3 ./mach test-wpt $WPT_COMMAND_LINE_ARG \
--${{ inputs.profile }} --processes $(nproc) --timeout-multiplier 2 \
--total-chunks ${{ env.max_chunk_id }} --this-chunk ${{ matrix.chunk_id }} \
--log-raw test-wpt.${{ matrix.chunk_id }}.log \
--always-succeed
- name: Archive filtered results
uses: actions/upload-artifact@v3
if: ${{ always() && !inputs.wpt-sync-from-upstream }}
with: with:
name: wpt-filtered-results-linux-${{ inputs.wpt-layout }} name: wpt-filtered-logs-linux-${{ inputs.wpt-layout }}-${{ matrix.chunk_id }}
path: | path: wpt-filtered-logs/*/
filtered-test-wpt.${{ matrix.chunk_id }}.json - name: Archive results (full)
unexpected-test-wpt.${{ matrix.chunk_id }}.log uses: actions/upload-artifact@v4
- name: Archive logs if: ${{ always() }}
uses: actions/upload-artifact@v3
if: ${{ failure() && !inputs.wpt-sync-from-upstream }}
with: with:
name: wpt-logs-linux-${{ inputs.wpt-layout }} name: wpt-full-logs-linux-${{ inputs.wpt-layout }}-${{ matrix.chunk_id }}
path: | path: wpt-full-logs/*/
test-wpt.${{ matrix.chunk_id }}.log
- name: Archive logs
uses: actions/upload-artifact@v3
if: ${{ inputs.wpt-sync-from-upstream }}
with:
name: wpt-logs-linux-${{ inputs.wpt-layout }}
path: |
test-wpt.${{ matrix.chunk_id }}.log
wpt-jsonsummary.${{ matrix.chunk_id }}.log
report-test-results: report-test-results:
name: Report WPT Results name: Process WPT Results
runs-on: ubuntu-latest runs-on: ubuntu-latest
if: ${{ always() && !cancelled() && !inputs.wpt-sync-from-upstream }} if: ${{ always() }}
needs: needs: linux-wpt
- "linux-wpt"
steps: steps:
- name: Merge logs (filtered)
uses: actions/upload-artifact/merge@v4
with:
name: wpt-filtered-logs-linux-${{ inputs.wpt-layout }}
pattern: wpt-filtered-logs-linux-${{ inputs.wpt-layout }}-*
delete-merged: true
- name: Merge logs (full)
uses: actions/upload-artifact/merge@v4
with:
name: wpt-full-logs-linux-${{ inputs.wpt-layout }}
pattern: wpt-full-logs-linux-${{ inputs.wpt-layout }}-*
delete-merged: true
- uses: actions/checkout@v3 - uses: actions/checkout@v3
if: ${{ !cancelled() && !inputs.wpt-sync-from-upstream }}
with: with:
fetch-depth: 2 fetch-depth: 2
- uses: actions/download-artifact@v3 - uses: actions/download-artifact@v4
if: ${{ !cancelled() && !inputs.wpt-sync-from-upstream }}
with: with:
name: wpt-filtered-results-linux-${{ inputs.wpt-layout }} name: wpt-filtered-logs-linux-${{ inputs.wpt-layout }}
path: wpt-filtered-results-linux path: results
- name: Create aggregated unexpected results - name: Report results
if: ${{ !cancelled() && !inputs.wpt-sync-from-upstream }}
run: | run: |
cat wpt-filtered-results-linux/*.log > unexpected-test-wpt-${{ inputs.wpt-layout }}.log etc/ci/report_aggregated_expected_results.py \
- name: Archive aggregate results --tag="linux-wpt-${{ inputs.wpt-layout }}" \
uses: actions/upload-artifact@v3 results/linux-${{ inputs.wpt-layout }}/*.json
with:
name: wpt-filtered-results-linux
path: |
unexpected-test-wpt-${{ inputs.wpt-layout }}.log
- name: Comment on PR with results
run: |
etc/ci/report_aggregated_expected_results.py --tag="linux-wpt-${{ inputs.wpt-layout }}" wpt-filtered-results-linux/*.json
env: env:
GITHUB_CONTEXT: ${{ toJson(github) }} GITHUB_CONTEXT: ${{ toJson(github) }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View file

@ -105,7 +105,9 @@ jobs:
- name: Tidy - name: Tidy
run: python3 ./mach test-tidy --no-progress --all run: python3 ./mach test-tidy --no-progress --all
- name: Build (${{ inputs.profile }}) - name: Build (${{ inputs.profile }})
run: python3 ./mach build --${{ inputs.profile }} run: |
python3 ./mach build --${{ inputs.profile }}
cp -r target/cargo-timings target/cargo-timings-linux
- name: Smoketest - name: Smoketest
run: xvfb-run python3 ./mach smoketest --${{ inputs.profile }} run: xvfb-run python3 ./mach smoketest --${{ inputs.profile }}
- name: Script tests - name: Script tests
@ -117,12 +119,10 @@ jobs:
timeout_minutes: 20 timeout_minutes: 20
max_attempts: 2 # https://github.com/servo/servo/issues/30683 max_attempts: 2 # https://github.com/servo/servo/issues/30683
command: python ./mach test-unit --${{ inputs.profile }} command: python ./mach test-unit --${{ inputs.profile }}
- name: Rename build timing
run: cp -r target/cargo-timings target/cargo-timings-linux
- name: Archive build timing - name: Archive build timing
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v4
with: with:
name: cargo-timings name: cargo-timings-linux
# Using a wildcard here ensures that the archive includes the path. # Using a wildcard here ensures that the archive includes the path.
path: target/cargo-timings-* path: target/cargo-timings-*
- name: Lockfile check - name: Lockfile check
@ -130,7 +130,7 @@ jobs:
- name: Build mach package - name: Build mach package
run: python3 ./mach package --${{ inputs.profile }} run: python3 ./mach package --${{ inputs.profile }}
- name: Upload artifact for mach package - name: Upload artifact for mach package
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v4
with: with:
name: linux name: linux
path: target/${{ inputs.profile }}/servo-tech-demo.tar.gz path: target/${{ inputs.profile }}/servo-tech-demo.tar.gz
@ -147,9 +147,9 @@ jobs:
- name: Build package for target - name: Build package for target
run: tar -czf target.tar.gz target/${{ inputs.profile }}/servo resources run: tar -czf target.tar.gz target/${{ inputs.profile }}/servo resources
- name: Upload artifact for target - name: Upload artifact for target
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v4
with: with:
name: release-binary name: ${{ inputs.profile }}-binary-linux
path: target.tar.gz path: target.tar.gz
wpt-2020: wpt-2020:

View file

@ -41,9 +41,9 @@ jobs:
with: with:
ref: refs/pull/${{ github.event.number }}/head ref: refs/pull/${{ github.event.number }}/head
fetch-depth: 2 fetch-depth: 2
- uses: actions/download-artifact@v3 - uses: actions/download-artifact@v4
with: with:
name: release-binary-macos name: ${{ inputs.profile }}-binary-macos
- name: Prep test environment - name: Prep test environment
run: | run: |
gtar -xzf target.tar.gz gtar -xzf target.tar.gz
@ -53,53 +53,60 @@ jobs:
run: python3 ./mach smoketest --${{ inputs.profile }} run: python3 ./mach smoketest --${{ inputs.profile }}
- name: Run tests - name: Run tests
run: | run: |
mkdir -p wpt-filtered-logs/macos-${{ inputs.wpt-layout }}
mkdir -p wpt-full-logs/macos-${{ inputs.wpt-layout }}
python3 ./mach test-wpt $WPT_COMMAND_LINE_ARG ${{ inputs.wpt-tests-to-run }} \ python3 ./mach test-wpt $WPT_COMMAND_LINE_ARG ${{ inputs.wpt-tests-to-run }} \
--${{ inputs.profile }} --processes $(sysctl -n hw.logicalcpu) --timeout-multiplier 8 \ --${{ inputs.profile }} --processes $(sysctl -n hw.logicalcpu) --timeout-multiplier 8 \
--total-chunks ${{ env.max_chunk_id }} --this-chunk ${{ matrix.chunk_id }} \ --total-chunks ${{ env.max_chunk_id }} --this-chunk ${{ matrix.chunk_id }} \
--log-raw test-wpt.${{ matrix.chunk_id }}.log \ --log-raw wpt-full-logs/macos-${{ inputs.wpt-layout }}/${{ matrix.chunk_id }}.log \
--log-raw-unexpected unexpected-test-wpt.${{ matrix.chunk_id }}.log \ --log-raw-unexpected wpt-filtered-logs/macos-${{ inputs.wpt-layout }}/${{ matrix.chunk_id }}.log \
--filter-intermittents filtered-test-wpt.${{ matrix.chunk_id }}.json --filter-intermittents wpt-filtered-logs/macos-${{ inputs.wpt-layout }}/${{ matrix.chunk_id }}.json
- name: Archive filtered results - name: Archive results (filtered)
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v4
if: always() if: ${{ always() }}
with: with:
name: wpt-filtered-results-mac-${{ inputs.wpt-layout }} name: wpt-filtered-logs-macos-${{ inputs.wpt-layout }}-${{ matrix.chunk_id }}
path: | path: wpt-filtered-logs/*/
filtered-test-wpt.${{ matrix.chunk_id }}.json - name: Archive results (full)
unexpected-test-wpt.${{ matrix.chunk_id }}.log uses: actions/upload-artifact@v4
- name: Archive logs if: ${{ always() }}
uses: actions/upload-artifact@v3
if: failure()
with: with:
name: wpt-logs-mac-${{ inputs.wpt-layout }} name: wpt-full-logs-macos-${{ inputs.wpt-layout }}-${{ matrix.chunk_id }}
path: | path: wpt-full-logs/*/
test-wpt.${{ matrix.chunk_id }}.log
filtered-wpt-results.${{ matrix.chunk_id }}.json
report-test-results: report-test-results:
name: Reporting test results name: Process WPT Results
runs-on: ubuntu-latest runs-on: ubuntu-latest
if: ${{ always() && !cancelled() }} if: ${{ always() }}
needs: [ mac-wpt ] needs: mac-wpt
steps: steps:
- name: Merge logs (filtered)
uses: actions/upload-artifact/merge@v4
with:
name: wpt-filtered-logs-macos-${{ inputs.wpt-layout }}
pattern: wpt-filtered-logs-macos-${{ inputs.wpt-layout }}-*
delete-merged: true
- name: Merge logs (full)
uses: actions/upload-artifact/merge@v4
with:
name: wpt-full-logs-macos-${{ inputs.wpt-layout }}
pattern: wpt-full-logs-macos-${{ inputs.wpt-layout }}-*
delete-merged: true
- uses: actions/checkout@v3 - uses: actions/checkout@v3
if: ${{ !cancelled() }}
with: with:
fetch-depth: 2 fetch-depth: 2
- uses: actions/download-artifact@v3 - uses: actions/download-artifact@v4
if: ${{ !cancelled() }}
with: with:
name: wpt-filtered-results-mac-${{ inputs.wpt-layout }} name: wpt-filtered-logs-macos-${{ inputs.wpt-layout }}
path: wpt-filtered-results-mac path: results
- name: Create aggregated unexpected results - name: Report results
run: cat wpt-filtered-results-mac/*.log > unexpected-test-wpt.log if: ${{ !cancelled() }}
- name: Archive aggregate results run: |
uses: actions/upload-artifact@v3 etc/ci/report_aggregated_expected_results.py \
with: --tag="macos-wpt-${{ inputs.wpt-layout }}" \
name: wpt-filtered-results-mac-${{ inputs.wpt-layout }} results/macos-${{ inputs.wpt-layout }}/*.json
path: |
unexpected-test-wpt.log
- name: Comment on PR with results
run: etc/ci/report_aggregated_expected_results.py --tag="mac-wpt-${{ inputs.wpt-layout }}"
wpt-filtered-results-mac/*.json
env: env:
GITHUB_CONTEXT: ${{ toJson(github) }} GITHUB_CONTEXT: ${{ toJson(github) }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View file

@ -94,6 +94,7 @@ jobs:
- name: Build (${{ inputs.profile }}) - name: Build (${{ inputs.profile }})
run: | run: |
python3 ./mach build --${{ inputs.profile }} python3 ./mach build --${{ inputs.profile }}
cp -r target/cargo-timings target/cargo-timings-macos
- name: Smoketest - name: Smoketest
uses: nick-fields/retry@v2 uses: nick-fields/retry@v2
with: # See https://github.com/servo/servo/issues/30757 with: # See https://github.com/servo/servo/issues/30757
@ -117,16 +118,14 @@ jobs:
timeout_minutes: 5 timeout_minutes: 5
max_attempts: 2 max_attempts: 2
command: ./etc/ci/macos_package_smoketest.sh target/${{ inputs.profile }}/servo-tech-demo.dmg command: ./etc/ci/macos_package_smoketest.sh target/${{ inputs.profile }}/servo-tech-demo.dmg
- name: Rename build timing
run: cp -r target/cargo-timings target/cargo-timings-macos
- name: Archive build timing - name: Archive build timing
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v4
with: with:
name: cargo-timings name: cargo-timings-macos
# Using a wildcard here ensures that the archive includes the path. # Using a wildcard here ensures that the archive includes the path.
path: target/cargo-timings-* path: target/cargo-timings-*
- name: Upload artifact for mach package - name: Upload artifact for mach package
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v4
with: with:
name: mac name: mac
path: target/${{ inputs.profile }}/servo-tech-demo.dmg path: target/${{ inputs.profile }}/servo-tech-demo.dmg
@ -143,9 +142,9 @@ jobs:
- name: Build package for target - name: Build package for target
run: gtar -czf target.tar.gz target/${{ inputs.profile }}/servo target/${{ inputs.profile }}/lib/*.dylib resources run: gtar -czf target.tar.gz target/${{ inputs.profile }}/servo target/${{ inputs.profile }}/lib/*.dylib resources
- name: Upload package for target - name: Upload package for target
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v4
with: with:
name: release-binary-macos name: ${{ inputs.profile }}-binary-macos
path: target.tar.gz path: target.tar.gz
wpt-2020: wpt-2020:

View file

@ -57,9 +57,15 @@ jobs:
- "build-linux" - "build-linux"
- "build-android" - "build-android"
steps: steps:
- name: Mark the job as successful - name: Merge build timings
uses: actions/upload-artifact/merge@v4
with:
name: cargo-timings
pattern: cargo-timings-*
delete-merged: true
- name: Success
if: ${{ !contains(needs.*.result, 'failure') && !contains(needs.*.result, 'cancelled') }} if: ${{ !contains(needs.*.result, 'failure') && !contains(needs.*.result, 'cancelled') }}
run: exit 0 run: exit 0
- name: Mark the job as unsuccessful - name: Failure
if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')
run: exit 1 run: exit 1

View file

@ -31,8 +31,12 @@ jobs:
uses: actions/checkout@v3 uses: actions/checkout@v3
with: with:
fetch-depth: 2 fetch-depth: 2
# Download all artifacts - uses: actions/download-artifact@v4
- uses: actions/download-artifact@v3 with:
name: wpt-full-logs-linux-layout-2013
- uses: actions/download-artifact@v4
with:
name: wpt-full-logs-linux-layout-2020
- name: Prep environment - name: Prep environment
run: | run: |
python3 -m pip install --upgrade pip python3 -m pip install --upgrade pip
@ -52,8 +56,8 @@ jobs:
export CURRENT_DATE=$(date +"%d-%m-%Y") export CURRENT_DATE=$(date +"%d-%m-%Y")
echo $CURRENT_DATE echo $CURRENT_DATE
echo "CURRENT_DATE=$CURRENT_DATE" >> $GITHUB_ENV echo "CURRENT_DATE=$CURRENT_DATE" >> $GITHUB_ENV
./mach update-wpt --legacy-layout wpt-logs-linux-layout-2013/test-wpt.*.log ./mach update-wpt linux-layout-2013/*.log --legacy-layout
./mach update-wpt wpt-logs-linux-layout-2020/test-wpt.*.log ./mach update-wpt linux-layout-2020/*.log
git add tests/wpt/meta tests/wpt/meta-legacy-layout git add tests/wpt/meta tests/wpt/meta-legacy-layout
git commit -a --amend --no-edit git commit -a --amend --no-edit
- name: Push changes - name: Push changes

View file

@ -110,14 +110,17 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
if: always() if: always()
# `needs: "build"` is necessary to detect cancellation. # `needs: "build"` is necessary to detect cancellation.
needs: needs: [ "decision", "build" ]
- "decision"
- "build"
steps: steps:
- name: Mark the job as successful - name: Merge build timings
uses: actions/upload-artifact/merge@v4
with:
name: cargo-timings
pattern: cargo-timings-*
delete-merged: true
- name: Success
if: ${{ !contains(needs.*.result, 'failure') && !contains(needs.*.result, 'cancelled') }} if: ${{ !contains(needs.*.result, 'failure') && !contains(needs.*.result, 'cancelled') }}
run: exit 0 run: exit 0
- name: Mark the job as unsuccessful - name: Failure
if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')
run: exit 1 run: exit 1

View file

@ -81,7 +81,9 @@ jobs:
python mach bootstrap-gstreamer python mach bootstrap-gstreamer
cargo install --path support/crown cargo install --path support/crown
- name: Build (${{ inputs.profile }}) - name: Build (${{ inputs.profile }})
run: python mach build --${{ inputs.profile }} run: |
python mach build --${{ inputs.profile }}
cp C:\a\servo\servo\target\cargo-timings C:\a\servo\servo\target\cargo-timings-windows -Recurse
- name: Copy resources - name: Copy resources
run: cp D:\a\servo\servo\resources C:\a\servo\servo -Recurse run: cp D:\a\servo\servo\resources C:\a\servo\servo -Recurse
- name: Smoketest - name: Smoketest
@ -93,18 +95,16 @@ jobs:
timeout_minutes: 30 timeout_minutes: 30
max_attempts: 3 # https://github.com/servo/servo/issues/30683 max_attempts: 3 # https://github.com/servo/servo/issues/30683
command: python mach test-unit --${{ inputs.profile }} -- -- --test-threads=1 command: python mach test-unit --${{ inputs.profile }} -- -- --test-threads=1
- 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 - name: Archive build timing
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v4
with: with:
name: cargo-timings name: cargo-timings-windows
# Using a wildcard here ensures that the archive includes the path. # Using a wildcard here ensures that the archive includes the path.
path: C:\\a\\servo\\servo\\target\\cargo-timings-* path: C:\\a\\servo\\servo\\target\\cargo-timings-*
- name: Build mach package - name: Build mach package
run: python mach package --${{ inputs.profile }} run: python mach package --${{ inputs.profile }}
- name: Upload artifact for mach package - name: Upload artifact for mach package
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v4
with: with:
name: win name: win
# These files are available # These files are available