mirror of
https://github.com/microsoft/vcpkg.git
synced 2024-12-01 17:09:01 +08:00
76a2b89d17
Automatically handle issues like https://github.com/microsoft/vcpkg/issues/36171 or https://github.com/microsoft/vcpkg/issues/37013
79 lines
3.9 KiB
YAML
79 lines
3.9 KiB
YAML
name: Check For Common Issues
|
|
|
|
on:
|
|
issues:
|
|
types:
|
|
- opened
|
|
|
|
jobs:
|
|
check-for-common-issues:
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
issues: write
|
|
steps:
|
|
- uses: actions/github-script@v7
|
|
with:
|
|
script: |
|
|
let issue_query = {
|
|
issue_number: context.issue.number,
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo
|
|
};
|
|
let issue = await github.rest.issues.get(issue_query)
|
|
let commentLabelClose = async (comment, label) => {
|
|
await github.rest.issues.removeAllLabels(issue_query);
|
|
await github.rest.issues.setLabels({...issue_query, labels: [label]});
|
|
await github.rest.issues.createComment({...issue_query, body: comment});
|
|
await github.rest.issues.update({...issue_query, state: "closed"});
|
|
}
|
|
|
|
// missing-windows-sdk-issue
|
|
let reg = /RC Pass 1: command "rc .*" failed \(exit code 0\) with the following output:/;
|
|
if (reg.test(issue.data.body)){
|
|
let body = "Thanks for posting this issue. Please make sure you have the following installed.\n" +
|
|
"- Visual Studio Desktop development with C++.\n" +
|
|
"- Windows 10 SDK or Windows 11 SDK.";
|
|
return await commentLabelClose(body, "category:question");
|
|
}
|
|
|
|
// msys2 download fails => old vcpkg version
|
|
reg = /error: https:\/\/repo\.msys2\.org\/.*: failed: status code 404/;
|
|
if (reg.test(issue.data.body)){
|
|
let body = "Try updating your vcpkg version via `git pull` to resolve this issue. MSYS2 downloads are removed from the upstream servers from time to time, so using an up-to-date vcpkg version is necessary."
|
|
return await commentLabelClose(body, "category:question");
|
|
}
|
|
|
|
// Issue text is: Copy issue body from .../issue_body.md
|
|
reg = /^Copy issue body from .*issue_body.md$/;
|
|
if (reg.test(issue.data.body)){
|
|
let body = "Please see #30604 for how to report a build failure."
|
|
return await commentLabelClose(body, "requires:more-information");
|
|
}
|
|
|
|
// Issue to short like #36592 or #36668
|
|
reg = /^error: building.* BUILD_FAILED\r\nElapsed time.*\r\nPlease ensure.*(\r\nThen check .*\r\n.*)?$/;
|
|
if (reg.test(issue.data.body)){
|
|
let body = "Please see #30604 for how to report a build failure."
|
|
return await commentLabelClose(body, "requires:more-information");
|
|
}
|
|
|
|
// pkg-config/ not found issues like #36011
|
|
reg = /CMake Error at scripts\/cmake\/vcpkg_find_acquire_program.*\r\n(.*Please install it via your package manager:[\s\S]+)Call Stack/;
|
|
match = issue.data.body.match(reg)
|
|
if (match){
|
|
let body = "From the log:\n```\n" + match[1] + "```\n"
|
|
return await commentLabelClose(body, "category:question");
|
|
}
|
|
|
|
// MSVC internal compiler error like #36628
|
|
if (issue.data.body.indexOf("fatal error C1001: Internal compiler error") !== -1){
|
|
let body = "The build failed due to an internal compiler error. Please update your compiler or revert to an old version."
|
|
return await commentLabelClose(body, "category:question");
|
|
}
|
|
|
|
// configure: error: 'autoconf-archive' is missing like #37013
|
|
if (issue.data.body.indexOf("configure: error: 'autoconf-archive' is missing") !== -1){
|
|
let body = "Please install `autoconf-archive` via `brew install autoconf-archive` (macos) or `sudo apt-get install autoconf-archive` (linux)"
|
|
return await commentLabelClose(body, "category:question");
|
|
}
|