Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Run WTI to automatically triage github issues #11329

Merged
merged 53 commits into from
Mar 25, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
7715263
Experiment with WTI and GH actions
OneBlue Mar 20, 2024
db24863
Remove condition
OneBlue Mar 20, 2024
460a753
Yml && git push origin wti
OneBlue Mar 20, 2024
98f8888
Yml
OneBlue Mar 20, 2024
f601cfa
Yml
OneBlue Mar 20, 2024
b921e44
Yml
OneBlue Mar 20, 2024
251aebd
Yml
OneBlue Mar 20, 2024
0f25784
Test integration
OneBlue Mar 20, 2024
cc3687c
Test integration
OneBlue Mar 20, 2024
602a0bd
Test integration
OneBlue Mar 20, 2024
b69dc13
Test integration
OneBlue Mar 20, 2024
aa44019
Test integration
OneBlue Mar 20, 2024
a1bf42a
Test integration
OneBlue Mar 20, 2024
194fa88
Test integration
OneBlue Mar 20, 2024
20bd2fd
Test integration
OneBlue Mar 20, 2024
35ae8e2
Test integration
OneBlue Mar 20, 2024
f600762
Cleanup
OneBlue Mar 20, 2024
8356b5e
Test integration
OneBlue Mar 20, 2024
3cba6be
Test integration
OneBlue Mar 20, 2024
d522f37
Merge remote-tracking branch 'origin/master' into wti
OneBlue Mar 20, 2024
6f51de1
Test integration
OneBlue Mar 20, 2024
ffa51c3
Test integration
OneBlue Mar 20, 2024
c6a8140
Test integration
OneBlue Mar 20, 2024
80afc08
Test integration
OneBlue Mar 20, 2024
24787c7
Test integration
OneBlue Mar 20, 2024
56d9758
Test integration
OneBlue Mar 20, 2024
d79e88a
Test integration
OneBlue Mar 20, 2024
647c729
Test integration
OneBlue Mar 20, 2024
9308e86
Test integration
OneBlue Mar 21, 2024
318f12e
Test integration
OneBlue Mar 21, 2024
8d2f128
Test integration
OneBlue Mar 21, 2024
4367e8b
Test integration
OneBlue Mar 21, 2024
2af319b
Test integration
OneBlue Mar 21, 2024
e240d45
Test integration
OneBlue Mar 21, 2024
668f566
Test integration
OneBlue Mar 21, 2024
b1c5c5b
Test integration
OneBlue Mar 21, 2024
3f5e592
Test integration
OneBlue Mar 21, 2024
c3136e9
Test integration
OneBlue Mar 21, 2024
1ba41fd
Test integration
OneBlue Mar 21, 2024
208b3eb
Reduce message size
OneBlue Mar 21, 2024
a5bac3d
Reduce message size
OneBlue Mar 21, 2024
d315a0a
Clean up download logic
OneBlue Mar 21, 2024
83cd938
Yaml
OneBlue Mar 21, 2024
3fdcd9e
Yaml
OneBlue Mar 21, 2024
966cbac
Yaml
OneBlue Mar 21, 2024
0e909f3
Yaml
OneBlue Mar 21, 2024
7e39986
Yaml
OneBlue Mar 21, 2024
d5dddd4
Yaml
OneBlue Mar 21, 2024
72880f4
Yaml
OneBlue Mar 21, 2024
7cee540
Update .github/workflows/new_issue.yml
OneBlue Mar 22, 2024
2b5c4d8
Update triage/config.yml
OneBlue Mar 22, 2024
27d5564
Review feedback
OneBlue Mar 22, 2024
4ee2a19
Update triggers
OneBlue Mar 25, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions .github/actions/triage/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: Run automated triage


inputs:
issue:
required: false
type: string
similar_issues_text:
required: false
type: string
comment:
required: false
type: string
token:
required: false
type: string

runs:
using: "composite"
steps:
- name: 'Run WTI'
if: ${{ !contains(inputs.similar_issues_text, '''@') }} # Skip this step if the description contains a string that will break the here document
shell: pwsh
run: |
$ErrorActionPreference = [System.Management.Automation.ActionPreference]::Stop
$message = @'
${{ inputs.similar_issues_text }}
'@

$maybe_message = @()
if (![string]::IsNullOrEmpty($message))
{
$maybe_message = @("--default-message-stdin")
}

$maybe_comment = @()
if (![string]::IsNullOrEmpty("${{ inputs.comment }}"))
{
$maybe_comment = @("--comment", "${{ inputs.comment }}")
}

curl.exe -L https://github.com/OneBlue/wti/releases/download/v0.1.1/wti.exe -o triage/wti.exe

cd triage && echo -n $message | .\wti.exe --issue ${{ inputs.issue }} --config config.yml --github-token "${{ inputs.token }}" --ignore-tags @maybe_message @maybe_comment
38 changes: 38 additions & 0 deletions .github/workflows/new_issue.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: Process new issue

on:
issues:
types: [opened]

jobs:
getSimilarIssues:
runs-on: ubuntu-latest
outputs:
message: ${{ steps.getBody.outputs.message }}
steps:
- uses: actions/checkout@v2
- id: getBody
uses: craigloewen-msft/GitGudSimilarIssues@main
with:
issueTitle: ${{ github.event.issue.title }}
issueBody: ${{ github.event.issue.body }}
repository: ${{ github.repository }}
similarityTolerance: "0.7"
commentBody: |
# View similar issues
Please view the issues below to see if they solve your problem, and if the issue describes your problem please consider closing this one and thumbs upping the other issue to help us prioritize it!
wti:
name: Run wti
needs: getSimilarIssues
runs-on: windows-2022
permissions:
issues: write
steps:
- name: Checkout repo
uses: actions/checkout@v4

- uses: ./.github/actions/triage
with:
similar_issues_text: "${{ needs.getSimilarIssues.outputs.message }}"
issue: "${{ github.event.issue.number }}"
token: ${{ secrets.GITHUB_TOKEN }}
22 changes: 22 additions & 0 deletions .github/workflows/new_issue_comment.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: Process new comment on issue

on:
issue_comment:
types: [created]

jobs:
wti:
name: Run wti
runs-on: windows-2022
permissions:
craigloewen-msft marked this conversation as resolved.
Show resolved Hide resolved
issues: write
if: ${{ !github.event.issue.pull_request && github.event.issue.user.id == github.event.comment.user.id }}
steps:
- name: Checkout repo
uses: actions/checkout@v4

- uses: ./.github/actions/triage
with:
issue: '${{ github.event.issue.number }}'
comment: '${{ github.event.comment.id }}'
token: ${{ secrets.GITHUB_TOKEN }}
34 changes: 0 additions & 34 deletions .github/workflows/similarissues.yml

This file was deleted.

193 changes: 193 additions & 0 deletions triage/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,193 @@
wpa_profile: no-filter.wpaProfile

logs_rules:
missing_logs_message: |
# Logs are required for review from WSL team

If this a feature request, please reply with '/feature'. If this is a question, reply with '/question'.
**Otherwise please attach logs by following the instructions below**, your issue will not be reviewed unless they are added. These logs will help us understand what is going on in your machine.

<details>

<summary>How to collect WSL logs</summary>

Download and execute [collect-wsl-logs.ps1](https://github.com/Microsoft/WSL/blob/master/diagnostics/collect-wsl-logs.ps1) in an **administrative powershell prompt**:

```
Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/microsoft/WSL/master/diagnostics/collect-wsl-logs.ps1" -OutFile collect-wsl-logs.ps1
Set-ExecutionPolicy Bypass -Scope Process -Force
.\collect-wsl-logs.ps1
```

The scipt will output the path of the log file once done.

Once completed please upload the output files to this Github issue.

[Click here for more info on logging](https://github.com/microsoft/WSL/blob/master/CONTRIBUTING.md#8-collect-wsl-logs-recommended-method)
If you choose to email these logs instead of attaching to the bug, please send them to [email protected] with the number of the github issue in the subject, and in the message a link to your comment in the github issue and reply with '/emailed-logs'.
</details>


missing_logs_add_tags: ['needs-author-feedback']
skip_tags: ['feature', 'question', 'emailed-logs', 'network']

tags_rules:
- contains: '/question'
tag: 'question'

- contains: '/feature'
tag: 'feature'

- contains: '/emailed-logs'
tag: 'emailed-logs'

rules:
- logline:
provider: Microsoft.Windows.Lxss.Manager
task: GuestLog
field1:
contains: 'brd: module loaded'
set: booting

- logline:
provider: Microsoft.Windows.Lxss.Manager
task: GuestLog
field1:
contains: 'oom-kill'
set:
name: oom
capture:
field1: oom-error

- logline:
provider: Microsoft.Windows.Lxss.Manager
task: GuestLog
field1:
contains: 'Kernel panic'
set:
name: kernel-panic
capture:
field1: kmsg

- logline:
provider: Microsoft.Windows.Lxss.Manager
task: GuestLog
field1:
regex: 'WSL (.*) ERROR'
set: init-error

- logline:
provider: Microsoft.Windows.Subsystem.Lxss
task: UserVisibleError
set:
name: user-visible-error
capture:
field3: error

- logline:
provider: Microsoft-Windows-Hyper-V-Chipset
field1:
regex: '.*biosdevice.*80070057.*' # 80070057 = E_INVALIDARG
set: corrupted-initramfs

- logline:
provider: Microsoft.Windows.Lxss.Manager
task: FailedToStartVm
set:
name: vm-failed-to-start
capture:
field4: error

- logline:
provider: Microsoft.Windows.Lxss.Manager
set: service-running
oneshot: true

- logline:
provider: Microsoft.Windows.Subsystem.Lxss
task: LxssException
field7:
regex: '.*0x80070422.*'
set: service-disabled-error

- logline:
provider: Microsoft.Windows.Subsystem.Lxss
task: UserVisibleError
field3: {regex: '.*/ConfigureNetworking/HNS/.*'}
set:
name: hns-fatal-error
capture:
field3: error


- logline:
provider: Microsoft.Windows.Hyper.V.NetMgmt
task: NetMgmt::CreateVirtualSwitch
field4: '0x80041002'
set:
name: vmswitch-known-issue
capture:
field4: error

- logline:
provider: Microsoft.Windows.Lxss.Manager
task: GuestLog
field1:
contains: 'EXT4-fs error'
set:
name: ext4-error
capture:
field1: error
actions:
- foreach:
var: user-visible-error
debug_message: 'Detected user visible error: $error'

- when:
condition: 'kernel-panic'
debug_message: 'Found evidence of kernel panic: $kmsg'

- when:
condition:
and: ['oom', 'booting']
user_message: 'The logs show that WSL2 ran out of memory. Try increasing wsl2.memory in .wslconfig and see if that solves the issue.'
debug_message: 'Found evidence of OOM kill: $oom-error'
tag: needs-author-feedback

- when:
condition:
and: ['vm-failed-to-start', 'hyperv-firmware-expired']
user_message: 'The logs show that your Hyper-V firmware is expired. Please update your Windows build and see if that solves the issue'
tag: needs-author-feedback

- when:
condition:
and: ['vm-failed-to-start', 'corrupted-initramfs']
user_message: 'Your WSL installation seems corrupted. Please try to download and install the [latest WSL release](https://github.com/microsoft/WSL/releases/latest)'
tag: needs-author-feedback

- when:
condition:
and: [{not: 'service-running'}, 'service-disabled-error']
user_message: 'The logs show that wslservice is disabled. Try to run (elevated command prompt): `sc.exe config wslservice start= demand` and see if that solves the issue'
tag: needs-author-feedback

- when:
condition:
and: ['vm-failed-to-start', 'hns-fatal-error']
user_message: 'An HNS error seems to be causing WSL2 to fail to start. Adding network tag'
debug_message: 'Found HNS error: $error'
tag: 'network'

- when:
condition:
and: ['vm-failed-to-start', 'vmswitch-known-issue']
user_message: 'Known vmswitch issue found (error: $error). Adding network tag'
debug_message: 'Found evidence of vmswitch error: $error'
tag: 'network'

- when:
condition: 'ext4-error'
user_message: 'The logs shows that a disk mount error occured. Try to [follow these repair instructions](https://learn.microsoft.com/en-us/windows/wsl/disk-space#how-to-repair-a-vhd-mounting-error) and see if that solves the issue.'
debug_message: 'Found evidence of ext4 error: $error'
tag: 'needs-author-feedback'
Loading