every.channel: sanitized baseline
This commit is contained in:
commit
897e556bea
258 changed files with 74298 additions and 0 deletions
99
third_party/iroh-org/iroh-gossip/.github/workflows/flaky.yaml
vendored
Normal file
99
third_party/iroh-org/iroh-gossip/.github/workflows/flaky.yaml
vendored
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
# Run all tests, including flaky test.
|
||||
#
|
||||
# The default CI workflow ignores flaky tests. This workflow will run
|
||||
# all tests, including ignored ones.
|
||||
#
|
||||
# To use this workflow you can either:
|
||||
#
|
||||
# - Label a PR with "flaky-test", the normal CI workflow will not run
|
||||
# any jobs but the jobs here will be run. Note that to merge the PR
|
||||
# you'll need to remove the label eventually because the normal CI
|
||||
# jobs are required by branch protection.
|
||||
#
|
||||
# - Manually trigger the workflow, you may choose a branch for this to
|
||||
# run on.
|
||||
#
|
||||
# Additionally this jobs runs once a day on a schedule.
|
||||
#
|
||||
# Currently doctests are not run by this workflow.
|
||||
|
||||
name: Flaky CI
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [ 'labeled', 'unlabeled', 'opened', 'synchronize', 'reopened' ]
|
||||
schedule:
|
||||
# 06:30 UTC every day
|
||||
- cron: '30 6 * * *'
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
branch:
|
||||
description: 'Branch to run on, defaults to main'
|
||||
required: true
|
||||
default: 'main'
|
||||
type: string
|
||||
|
||||
concurrency:
|
||||
group: flaky-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
env:
|
||||
IROH_FORCE_STAGING_RELAYS: "1"
|
||||
|
||||
jobs:
|
||||
tests:
|
||||
if: "contains(github.event.pull_request.labels.*.name, 'flaky-test') || github.event_name == 'workflow_dispatch' || github.event_name == 'schedule'"
|
||||
uses: './.github/workflows/tests.yaml'
|
||||
with:
|
||||
flaky: true
|
||||
git-ref: ${{ inputs.branch }}
|
||||
notify:
|
||||
needs: tests
|
||||
if: ${{ always() }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Extract test results
|
||||
run: |
|
||||
printf '${{ toJSON(needs) }}\n'
|
||||
result=$(echo '${{ toJSON(needs) }}' | jq -r .tests.result)
|
||||
echo TESTS_RESULT=$result
|
||||
echo "TESTS_RESULT=$result" >>"$GITHUB_ENV"
|
||||
- name: download nextest reports
|
||||
uses: actions/download-artifact@v5
|
||||
with:
|
||||
pattern: libtest_run_${{ github.run_number }}-${{ github.run_attempt }}-*
|
||||
merge-multiple: true
|
||||
path: nextest-results
|
||||
- name: create summary report
|
||||
id: make_summary
|
||||
run: |
|
||||
# prevent the glob expression in the loop to match on itself when the dir is empty
|
||||
shopt -s nullglob
|
||||
# to deal with multiline outputs it's recommended to use a random EOF, the syntax is based on
|
||||
# https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#multiline-strings
|
||||
EOF=aP51VriWCxNJ1JjvmO9i
|
||||
echo "summary<<$EOF" >> $GITHUB_OUTPUT
|
||||
echo "Flaky tests failure:" >> $GITHUB_OUTPUT
|
||||
echo " " >> $GITHUB_OUTPUT
|
||||
for report in nextest-results/*.json; do
|
||||
# remove the name prefix and extension, and split the parts
|
||||
name=$(echo ${report:16:-5} | tr _ ' ')
|
||||
echo $name
|
||||
echo "- **$name**" >> $GITHUB_OUTPUT
|
||||
# select the failed tests
|
||||
# the tests have this format "crate::module$test_name", the sed expressions remove the quotes and replace $ for ::
|
||||
failure=$(jq --slurp '.[] | select(.["type"] == "test" and .["event"] == "failed" ) | .["name"]' $report | sed -e 's/^"//g' -e 's/\$/::/' -e 's/"//')
|
||||
echo "$failure"
|
||||
echo "$failure" >> $GITHUB_OUTPUT
|
||||
done
|
||||
echo "" >> $GITHUB_OUTPUT
|
||||
echo "See https://github.com/${{ github.repository }}/actions/workflows/flaky.yaml" >> $GITHUB_OUTPUT
|
||||
echo "$EOF" >> $GITHUB_OUTPUT
|
||||
- name: Notify discord on failure
|
||||
uses: n0-computer/discord-webhook-notify@v1
|
||||
if: ${{ env.TESTS_RESULT == 'failure' || env.TESTS_RESULT == 'success' }}
|
||||
with:
|
||||
text: "Flaky tests in **${{ github.repository }}**:"
|
||||
severity: ${{ env.TESTS_RESULT == 'failure' && 'warn' || 'info' }}
|
||||
details: ${{ env.TESTS_RESULT == 'failure' && steps.make_summary.outputs.summary || 'No flaky failures!' }}
|
||||
webhookUrl: ${{ secrets.DISCORD_N0_GITHUB_CHANNEL_WEBHOOK_URL }}
|
||||
Loading…
Add table
Add a link
Reference in a new issue