Initial repo config (#9)

This commit is contained in:
Andy De George
2020-08-14 09:59:30 -07:00
committed by GitHub
parent 0bd846142c
commit 68a0edef8a
27 changed files with 1204 additions and 25 deletions
+8
View File
@@ -0,0 +1,8 @@
blank_issues_enabled: true
contact_links:
- name: docs.microsoft.com site feedback
url: https://github.com/MicrosoftDocs/feedback/issues/new/choose
about: Log general docs.microsoft.com site issues here
- name: .NET platform and other product feedback
url: https://developercommunity.visualstudio.com/spaces/61/index.html
about: Log product issues here
+36
View File
@@ -0,0 +1,36 @@
---
name: .NET doc issue
about: Report a problem in the .NET documentation
---
**Before you open an issue**
If the issue is:
- A simple typo or similar correction, consider submitting a PR to fix it instead of logging an issue. See [the contributor guide](https://docs.microsoft.com/contribute/#quick-edits-to-existing-documents) for instructions.
- A general support question, consider asking on a support forum site.
- A site design concern, create an issue at [MicrosoftDocs/feedback](https://github.com/MicrosoftDocs/feedback/issues/new/choose).
- A problem completing a tutorial, compare your code with the completed sample.
- A duplicate of an open or closed issue, leave a comment on that issue.
**Issue description**
<include description here>
**Target framework**
Check the .NET target framework(s) being used, and include the version number(s).
- [ ] .NET Core
- [ ] .NET Framework
- [ ] .NET Standard
If using the .NET Core SDK, include `dotnet --info` output. If using .NET Framework without the .NET Core SDK, include info from Visual Studio's **Help** > **About Microsoft Visual Studio** dialog.
<details>
<summary><strong>dotnet --info output</strong> or <strong>About VS info</strong></summary>
```console
<replace>
```
</details>
+16
View File
@@ -0,0 +1,16 @@
---
name: .NET doc request
about: Request a new article to provide missing information
---
**Help us make content visible**
- Tell us what search terms you used and how you searched docs.
- Tell us what docs you found that didn't address your concern.
**Describe the new article**
- Explain why this article is needed.
- Suggest a location in the Table of Contents.
- Write an abstract. In one **short** paragraph, describe what this article will cover.
- Create an outline for the new article. We'll help review the outline and approve it before anyone writes the article.
@@ -0,0 +1,92 @@
---
name: .NET Core breaking change
about: Report a change in .NET Core that breaks something that worked in a previous version (intended mostly for product-team use)
---
<!--
This issue template is for use in creating issues that document breaking changes. This template can be used to create an issue:
- By Microsoft product team members who are documenting a breaking change.
- By Microsoft customers who are experiencing a compatibility issue between .NET Framework and .NET Core or between versions of .NET Core.
Text in brackets is a placeholder; replace the text with the requested information and remove the brackets before submitting the issue.
Also, remove this comment before submitting the issue.
-->
## [Change title]
[Brief description of the change]
### Version introduced
[Version in which the breaking change first occurred (for example, 3.0 for .NET Core 3.0)]
### Old behavior
### New behavior
### Reason for change
### Recommended action
[ Suggested steps if user is affected go here:
- Possible workarounds
- Example of code changes to handle change
]
### Category
[Choose a category from one of the following:
- ASP.NET Core
- C#
- Core .NET libraries
- Cryptography
- Data
- Debugger
- Deployment
- Globalization
- Interop
- JIT
- LINQ
- Managed Extensibility Framework (MEF)
- MSBuild
- Networking
- Printing
- Security
- Serialization
- Visual Basic
- Windows Forms
- Windows Presentation Foundation (WPF)
- XML, XSLT
]
### Affected APIs
[ If no APIs are affected, this should read:
"Not detectable via API analysis"
If affected APIs are identifiable, include a link for each. The link takes the form:
`[friendly description of API](link to API on docs.microsoft.com)`
For example, `[String.IndexOf(String)](https://docs.microsoft.com/dotnet/api/system.string.indexof#System_String_IndexOf_System_String_)
For methods, if all overloads are affected, link to the general overloaded method page. For example:
<https://docs.microsoft.com/dotnet/api/system.string.indexof>
Otherwise, link to the individual method overload. For example:
<https://docs.microsoft.com/dotnet/api/system.string.indexof#System_String_IndexOf_System_String_>
]
<!-- Do not modify anything below this line -->
---
#### Issue metadata
* Issue type: breaking-change
+5
View File
@@ -0,0 +1,5 @@
## Summary
Describe your changes here.
Fixes #Issue_Number (if available)
+10
View File
@@ -0,0 +1,10 @@
# Configuration for probot-no-response - https://github.com/probot/no-response
# Number of days of inactivity before an Issue is closed for lack of response
daysUntilClose: 14
# Label requiring a response
responseRequiredLabel: needs-more-info
# Comment to post when closing an Issue for lack of response. Set to `false` to disable
closeComment: >
This issue has been automatically closed due to no response from the original author.
Please feel free to reopen it if you have more information that can help us investigate the issue further.
+19
View File
@@ -0,0 +1,19 @@
name: "bc-notification"
on:
issues:
types: [edited, labeled]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: timheuer/[email protected]
env:
SENDGRID_API_KEY: ${{ secrets.SENDGRID_API }}
with:
fromMailAddress: '${{ secrets.BC_NOTIFY }}'
toMailAddress: '${{ secrets.BC_NOTIFY }}'
subject: 'BC:'
subjectPrefix: 'BC:'
labelsToMonitor: "breaking-change"
+75
View File
@@ -0,0 +1,75 @@
# This is a basic workflow to help you get started with Actions
name: Snippets 5000
# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the master branch
on:
pull_request:
paths:
- "**.cs"
- "**.vb"
- "**.fs"
- "**.cpp"
- "**.h"
- "**.xaml"
- "**.razor"
- "**.cshtml"
- "**.vbhtml"
- "**.*proj"
- "**global.json"
- "**snippets.5000.json"
branches: [ master ]
env:
DOTNET_INSTALLER_CHANNEL: 'release/5.0.1xx-preview7'
DOTNET_DO_INSTALL: 'true'
EnableNuGetPackageRestore: 'True'
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: windows-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2
# Get the latest preview SDK (or sdk not installed by the runner)
- name: Setup .NET Core SDK Preview
if: ${{ env.DOTNET_DO_INSTALL == 'true' }}
run: |
echo "Downloading dotnet-install.ps1"
Invoke-WebRequest https://dot.net/v1/dotnet-install.ps1 -OutFile dotnet-install.ps1
echo "Installing dotnet version ${{ env.DOTNET_INSTALLER_CHANNEL }}"
.\dotnet-install.ps1 -InstallDir "c:\program files\dotnet" -Channel "${{ env.DOTNET_INSTALLER_CHANNEL }}"
# Install locate projs global tool
- name: Install LocateProjects tool
run: |
dotnet tool install --global --add-source ./.github/workflows/dependencies/ DotnetDocsTools.LocateProjects
# Run locate projs tool
- name: Locate projects for PR
env:
GitHubKey: ${{ secrets.GITHUB_TOKEN }}
LocateExts: ".cs;.vb;.fs;.cpp;.h;.xaml;.razor;.cshtml;.vbhtml;.csproj;.fsproj;.vbproj;.sln"
run: |
./.github/workflows/dependencies/Get-MSBuildResults.ps1 "${{ github.workspace }}" -PullRequest ${{ github.event.number }} -RepoOwner ${{ github.repository_owner }} -RepoName ${{ github.event.repository.name }}
# Update build output json file
- name: Upload build results
uses: actions/upload-artifact@v1
with:
name: build
path: ./output.json
# Return status based on json file
- name: Report status
run: |
./.github/workflows/dependencies/Out-GithubActionStatus.ps1
@@ -0,0 +1,275 @@
<#
.SYNOPSIS
Invokes dotnet build on the samples sln and project files.
.DESCRIPTION
Invokes dotnet build on the samples sln and project files.
.PARAMETER RepoRootDir
The directory of the repository files on the local machine.
.PARAMETER PullRequest
The pull requst to process. If 0 or not passed, processes the whole repo
.PARAMETER RepoOwner
The name of the repository owner.
.PARAMETER RepoName
The name of the repository.
.PARAMETER RangeStart
A range of results to process.
.PARAMETER RangeEnd
A range of results to process.
.INPUTS
None
.OUTPUTS
None
.NOTES
Version: 1.3
Author: adegeo@microsoft.com
Creation Date: 07/02/2020
Purpose/Change: Add support for config file. Select distinct on project files.
#>
[CmdletBinding()]
Param(
[Parameter(Mandatory = $true, ValueFromPipeline = $false)]
[System.String] $RepoRootDir = $env:RepoRootDir,
[Parameter(Mandatory = $false, ValueFromPipeline = $false)]
[System.Int64] $PullRequest = 0,
[Parameter(Mandatory = $false, ValueFromPipeline = $false)]
[System.String] $RepoOwner = "",
[Parameter(Mandatory = $false, ValueFromPipeline = $false)]
[System.String] $RepoName = "",
[Parameter(Mandatory = $false, ValueFromPipeline = $false)]
[System.Int32] $RangeStart = $env:rangestart,
[Parameter(Mandatory = $false, ValueFromPipeline = $false)]
[System.Int32] $RangeEnd = $env:rangeend
)
$Global:statusOutput = @()
Write-Host "Gathering solutions and projects..."
if ($PullRequest -ne 0) {
Write-Host "Running `"LocateProjects `"$RepoRootDir`" --pullrequest $PullRequest --owner $RepoOwner --repo $RepoName`""
$output = Invoke-Expression "LocateProjects `"$RepoRootDir`" --pullrequest $PullRequest --owner $RepoOwner --repo $RepoName"
}
else {
Write-Host "Running `"LocateProjects `"$RepoRootDir`""
$output = Invoke-Expression "LocateProjects `"$RepoRootDir`""
}
if ($LASTEXITCODE -ne 0)
{
$output
throw "Error on running LocateProjects"
}
function New-Result($inputFile, $projectFile, $exitcode, $outputText)
{
$info = @{}
$info.InputFile = $inputFile
$info.ProjectFile = $projectFile
$info.ExitCode = $exitcode
$info.Output = $outputText
$object = New-Object -TypeName PSObject -Prop $info
$Global:statusOutput += $object
}
$workingSet = $output
if (($RangeStart -ne 0) -and ($RangeEnd -ne 0)){
$workingSet = $output[$RangeStart..$RangeEnd]
}
# Log working set items prior to filtering
$workingSet | Write-Host
# Remove duplicated projects
$projects = @()
$workingSetTemp = @()
foreach ($item in $workingSet) {
$data = $item.Split('|')
if ($projects.Contains($data[2].Trim())) {
continue
}
if ($data[2].Trim() -ne "") {
$projects += $data[2].Trim()
}
$workingSetTemp += $item
}
$workingSet = $workingSetTemp
# Process working set
$counter = 1
$length = $workingSet.Count
$thisExitCode = 0
$ErrorActionPreference = "Continue"
foreach ($item in $workingSet) {
try {
Write-Host "$counter/$length :: $Item"
$data = $item.Split('|')
# Project found, build it
if ([int]$data[0] -eq 0) {
$projectFile = Resolve-Path "$RepoRootDir\$($data[2])"
$configFile = [System.IO.Path]::Combine([System.IO.Path]::GetDirectoryName($projectFile), "snippets.5000.json")
# Create the default build command
"dotnet build `"$projectFile`"" | Out-File ".\run.bat"
# Check for config file
if ([System.IO.File]::Exists($configFile) -eq $true) {
Write-Host "- Config file found"
$settings = $configFile | Get-ChildItem | Get-Content | ConvertFrom-Json
if ($settings.host -eq "visualstudio") {
Write-Host "- Using visual studio as build host"
# Create the visual studio build command
"CALL `"C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\Tools\VsDevCmd.bat`"`n" +
"msbuild.exe `"$projectFile`" -restore:True" `
| Out-File ".\run.bat"
}
}
$result = Invoke-Expression ".\run.bat" | Out-String
$thisExitCode = 0
if ($LASTEXITCODE -ne 0) {
$thisExitCode = 4
}
New-Result $data[1] $projectFile $thisExitCode $result
}
# No project found
elseif ([int]$data[0] -eq 1) {
New-Result $data[1] "" 1 "😵 Project missing. A project (and optionally a solution file) must be in this directory or one of the parent directories to validate and build this code."
$thisExitCode = 1
}
# Too many projects found
elseif ([int]$data[0] -eq 2) {
New-Result $data[1] $data[2] 2 "😕 Too many projects found. A single project or solution must existing in this directory or one of the parent directories."
$thisExitCode = 2
}
# Solution found, but no project
elseif ([int]$data[0] -eq 3) {
New-Result $data[1] $data[2] 2 "😲 Solution found, but missing project. A project is required to compile this code."
$thisExitCode = 3
}
}
catch {
New-Result $data[1] $projectFile 1000 "ERROR: $($_.Exception)"
$thisExitCode = 4
Write-Host $_.Exception.Message -Foreground "Red"
Write-Host $_.ScriptStackTrace -Foreground "DarkGray"
}
$counter++
}
$resultItems = $Global:statusOutput | Select-Object InputFile, ProjectFile, ExitCode, Output
# Add our output type
$typeResult = @"
public class ResultItem
{
public string ProjectFile;
public string InputFile;
public int ExitCode;
public string BuildOutput;
public MSBuildError[] Errors;
public int ErrorCount;
public class MSBuildError
{
public string Line;
public string Error;
}
}
"@
Add-Type $typeResult
$transformedItems = $resultItems | ForEach-Object { New-Object ResultItem -Property @{
ProjectFile = $_.ProjectFile.Path;
InputFile = $_.InputFile;
ExitCode = $_.ExitCode;
BuildOutput = $_.Output;
Errors = @();
ErrorCount = 0}
}
# Transform the build output to break it down into MSBuild result entries
foreach ($item in $transformedItems) {
$list = @()
# Clean
if ($item.ExitCode -eq 0) {
#$list += New-Object -TypeName "ResultItem+MSBuildError" -Property @{ Line = $item.BuildOutput; Error = $item.BuildOutput }
}
# No project found
# Too many projects found
# Solution found, but no project
elseif ($item.ExitCode -ne 4) {
$list += New-Object -TypeName "ResultItem+MSBuildError" -Property @{ Line = $item.BuildOutput; Error = $item.BuildOutput }
$item.ErrorCount = 1
}
else {
$errorInfo = $item.BuildOutput -Split [System.Environment]::NewLine |
Select-String ": (?:Solution file error|error) ([^:]*)" | `
Select-Object Line -ExpandProperty Matches | `
Select-Object Line, Groups | `
Sort-Object Line | Get-Unique -AsString
$item.ErrorCount = $errorInfo.Count
foreach ($err in $errorInfo) {
$list += New-Object -TypeName "ResultItem+MSBuildError" -Property @{ Line = $err.Line; Error = $err.Groups[1].Value }
}
# Error count of 0 here means that no error was detected from build results, but there was still a failure of some kind
if ($item.ErrorCount -eq 0) {
$list += New-Object -TypeName "ResultItem+MSBuildError" -Property @{ Line = "Unknown error occurred. Check log and build output."; Error = "4" }
$item.ErrorCount = 1
}
}
$item.Errors = $list
}
$transformedItems | ConvertTo-Json -Depth 3 | Out-File 'output.json'
exit 0
# Sample snippets.5000.json file
<#
{
"host": "visualstudio"
}
#>
@@ -0,0 +1,53 @@
<#
.SYNOPSIS
Reads the output.json file and outputs status to GitHub Actions
.DESCRIPTION
Reads the output.json file and outputs status to GitHub Actions
.INPUTS
None
.OUTPUTS
None
.NOTES
Version: 1.1
Author: adegeo@microsoft.com
Creation Date: 06/24/2020
Purpose/Change: Change reporting items
#>
[CmdletBinding()]
Param(
)
$json = Get-Content output.json | ConvertFrom-Json
$errors = $json | Where-Object ErrorCount -ne 0 | Select-Object InputFile -ExpandProperty Errors | Select-Object InputFile, Error, Line
if ($errors.Count -eq 0) {
Write-Host "All builds passed"
exit 0
}
Write-Host "Total errors: $($errors.Count)"
foreach ($er in $errors) {
$lineColMatch = $er.Line | Select-String "(^.*)\((\d*),(\d*)\)" | Select-Object -ExpandProperty Matches | Select-Object -ExpandProperty Groups
$errorFile = $er.InputFile
$errorLineNumber = 0
$errorColNumber = 0
if ($lineColMatch.Count -eq 4) {
$errorFile = $lineColMatch[1].Value.Replace("D:\a\docs\docs\", "").Replace("\", "/")
$errorLineNumber = $lineColMatch[2].Value
$errorColNumber = $lineColMatch[3].Value
}
Write-Host "::error file=$errorFile,line=$errorLineNumber,col=$errorColNumber::$($er.Line)"
}
exit 1
@@ -0,0 +1,17 @@
{
"problemMatcher": [
{
"owner": "markdownlint",
"pattern": [
{
"regexp": "^([^:]*):(\\d+):?(\\d+)?\\s([\\w-\\/]*)\\s(.*)$",
"file": 1,
"line": 2,
"column": 3,
"code": 4,
"message": 5
}
]
}
]
}
+32
View File
@@ -0,0 +1,32 @@
name: Markdownlint
on:
push:
paths:
- "**/*.md"
- ".markdownlint.json"
- ".github/workflows/markdownlint.yml"
- ".github/workflows/markdownlint-problem-matcher.json"
pull_request:
paths:
- "**/*.md"
- ".markdownlint.json"
- ".github/workflows/markdownlint.yml"
- ".github/workflows/markdownlint-problem-matcher.json"
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Use Node.js
uses: actions/setup-node@v1
with:
node-version: 12.x
- name: Run Markdownlint
run: |
echo "::add-matcher::.github/workflows/markdownlint-problem-matcher.json"
npm i -g markdownlint-cli
markdownlint "**/*.md" -i "samples/**/*.md"