From 72215fa57c77c3ccd7012ff1ef68d49184a009f8 Mon Sep 17 00:00:00 2001 From: Calvin Wilkinson <85414302+CalvinWilkinson@users.noreply.github.com> Date: Fri, 21 Jul 2023 16:23:31 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=A7Perform=20various=20improvements=20?= =?UTF-8?q?(#154)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Start work for issue #153 * docs: move location of release notes * ci: update workflows asdf * ide: update and improve various confgs * ci: remove deno scripts that are not needed anymore * ci: setup renovate for dependency management * docs: update project readme * ci: improve status check display names * ci: simple workflow input improvement * ide: update tab settings * ci: update reusable workflow versions and workflow command syntax --- .editorconfig | 50 +++++++--- .github/cicd/ChalkColor.ts | 34 ------- .github/cicd/RunnerService.ts | 96 ------------------- .github/cicd/validate-notes.ts | 42 -------- .github/cicd/validate-tag.ts | 53 ---------- .../workflows/add-new-issue-to-project.yml | 53 ++-------- .github/workflows/build-status-check.yml | 11 +-- .github/workflows/prepare-release.yml | 81 ++++++++++++++++ .github/workflows/release.yml | 31 +----- .github/workflows/sync-bot.yml | 19 ++-- .github/workflows/sync-issue-to-pr.yml | 34 ++++--- .github/workflows/sync-status-check.yml | 20 ++-- ...s-check.yml => unit-test-status-check.yml} | 11 +-- .vscode/extensions.json | 2 +- .vscode/release-notes.code-snippets | 46 +-------- .vscode/settings.json | 37 +++---- .vscode/workflow.code-snippets | 49 ++++++++++ .../Preview-Release-Notes-TEMPLATE.md | 36 ------- .../Production-Release-Notes-TEMPLATE.md | 27 ------ README.md | 20 ++-- .../Release-Notes-v1.0.0-preview.1.md | 0 .../Release-Notes-v1.0.0-preview.2.md | 0 .../Release-Notes-v1.0.0-preview.3.md | 0 .../Release-Notes-v1.0.0-preview.4.md | 0 .../Release-Notes-v1.0.0-preview.5.md | 0 .../Release-Notes-v1.0.0.md | 0 Testing/.editorconfig | 9 +- VersionMiner.sln | 20 ++-- renovate.json | 5 + 29 files changed, 271 insertions(+), 515 deletions(-) delete mode 100644 .github/cicd/ChalkColor.ts delete mode 100644 .github/cicd/RunnerService.ts delete mode 100644 .github/cicd/validate-notes.ts delete mode 100644 .github/cicd/validate-tag.ts create mode 100644 .github/workflows/prepare-release.yml rename .github/workflows/{unit-testing-status-check.yml => unit-test-status-check.yml} (51%) create mode 100644 .vscode/workflow.code-snippets delete mode 100644 Documentation/ReleaseNotes/Preview-Release-Notes-TEMPLATE.md delete mode 100644 Documentation/ReleaseNotes/Production-Release-Notes-TEMPLATE.md rename {Documentation/ReleaseNotes => ReleaseNotes}/PreviewReleases/Release-Notes-v1.0.0-preview.1.md (100%) rename {Documentation/ReleaseNotes => ReleaseNotes}/PreviewReleases/Release-Notes-v1.0.0-preview.2.md (100%) rename {Documentation/ReleaseNotes => ReleaseNotes}/PreviewReleases/Release-Notes-v1.0.0-preview.3.md (100%) rename {Documentation/ReleaseNotes => ReleaseNotes}/PreviewReleases/Release-Notes-v1.0.0-preview.4.md (100%) rename {Documentation/ReleaseNotes => ReleaseNotes}/PreviewReleases/Release-Notes-v1.0.0-preview.5.md (100%) rename {Documentation/ReleaseNotes => ReleaseNotes}/ProductionReleases/Release-Notes-v1.0.0.md (100%) create mode 100644 renovate.json diff --git a/.editorconfig b/.editorconfig index b1f714f..2cc7647 100644 --- a/.editorconfig +++ b/.editorconfig @@ -10,13 +10,10 @@ indent_style = space [*.{cs,csx,vb,vbx}] indent_size = 4 insert_final_newline = true -charset = utf-8-bom - ############################### # .NET Coding Conventions # ############################### -[*.{cs,vb}] # Organize usings dotnet_sort_system_directives_first = true @@ -63,7 +60,7 @@ dotnet_naming_style.pascal_case_style.capitalization = pascal_case # Use PascalCase for constant fields dotnet_naming_rule.constant_fields_should_be_pascal_case.severity = warning dotnet_naming_rule.constant_fields_should_be_pascal_case.symbols = constant_fields -dotnet_naming_rule.constant_fields_should_be_pascal_case.style = pascal_case_style +dotnet_naming_rule.constant_fields_should_be_pascal_case.style = pascal_case_style dotnet_naming_symbols.constant_fields.applicable_kinds = field dotnet_naming_symbols.constant_fields.applicable_accessibilities = * dotnet_naming_symbols.constant_fields.required_modifiers = const @@ -76,7 +73,16 @@ dotnet_naming_symbols.constant_fields.required_modifiers = const # IDE0060: Remove unused parameter dotnet_code_quality_unused_parameters = all:warning -[*.cs] +dotnet_style_operator_placement_when_wrapping = beginning_of_line +tab_width = 4 +end_of_line = crlf +dotnet_style_prefer_simplified_boolean_expressions = true:suggestion +dotnet_style_prefer_compound_assignment = true:suggestion +dotnet_style_prefer_simplified_interpolation = true:suggestion + +# IDE0059: Unnecessary assignment of a value +csharp_style_unused_value_assignment_preference = discard_variable:warning + # var preferences csharp_style_var_for_built_in_types = true:warning csharp_style_var_when_type_is_apparent = true:warning @@ -89,6 +95,8 @@ csharp_style_expression_bodied_operators = true:warning csharp_style_expression_bodied_properties = true:warning csharp_style_expression_bodied_indexers = true:warning csharp_style_expression_bodied_accessors = true:warning +csharp_style_expression_bodied_lambdas = true:warning +csharp_style_expression_bodied_local_functions = true:warning # Pattern matching preferences csharp_style_pattern_matching_over_is_with_cast_check = true:warning @@ -108,9 +116,14 @@ csharp_prefer_simple_default_expression = true:warning csharp_style_pattern_local_over_anonymous_function = true:warning csharp_style_inlined_variable_declaration = true:warning +csharp_style_prefer_method_group_conversion = true:silent +csharp_style_prefer_top_level_statements = true:silent + # IDE0057: Use range operator csharp_style_prefer_range_operator = true:warning +csharp_style_namespace_declarations = file_scoped:warning + ############################### # C# Formatting Rules # ############################### @@ -144,7 +157,6 @@ csharp_space_between_method_call_empty_parameter_list_parentheses = false # Wrapping preferences csharp_preserve_single_line_blocks = true - # IDE0051: Remove unused private members dotnet_diagnostic.IDE0051.severity = warning @@ -157,23 +169,31 @@ csharp_style_unused_value_assignment_preference = discard_variable:warning # SA1503: Braces should not be omitted dotnet_diagnostic.SA1503.severity = warning -# SA1101: Prefix local calls with this +# Prefix local calls with this dotnet_diagnostic.SA1101.severity = none -# SA1116: Split parameters should start on line after declaration +# Split parameters should start on line after declaration dotnet_diagnostic.SA1116.severity = warning -# SA1516: Elements should be separated by blank line +# Elements should be separated by blank line dotnet_diagnostic.SA1516.severity = none -# SA1011: Closing square brackets should be spaced correctly +# Closing square brackets should be spaced correctly dotnet_diagnostic.SA1011.severity = none -# SA0001: XML comment analysis is disabled due to project configuration +# XML comment analysis is disabled due to project configuration dotnet_diagnostic.SA0001.severity = none -# SA1200: A C# using directive is placed outside of a namespace element -dotnet_diagnostic.SA1200.severity = none +# An element within a C# code file is out of order within regard to access level, in relation to other elements in the code +dotnet_diagnostic.SA1202.severity = warning + +dotnet_diagnostic.CA1852.severity = warning + +# Do not guard 'Dictionary.Remove(key)' with 'Dictionary.ContainsKey(key)' +dotnet_diagnostic.CA1853.severity = warning + +csharp_prefer_simple_using_statement = true:suggestion -# SA1309: A field name in C# begins with an underscore -dotnet_diagnostic.SA1309.severity = warning +# Using directives must be placed inside of a namespace declaration +# IDE0065: Misplaced using directive +csharp_using_directive_placement = inside_namespace diff --git a/.github/cicd/ChalkColor.ts b/.github/cicd/ChalkColor.ts deleted file mode 100644 index 420ffa1..0000000 --- a/.github/cicd/ChalkColor.ts +++ /dev/null @@ -1,34 +0,0 @@ -/** - * Provides coloring to text. - */ -export class ChalkColor { - private static readonly gray: string = "\u001b[2m${TXT}\u001b[2m"; - private static readonly cyan: string = "\u001b[36m${TXT}\u001b[39m"; - private static readonly yellow: string = "\u001b[33m${TXT}\u001b[39m"; - private static readonly orange: string = "\u001b[38;2;220;130;63m${TXT}\u001b[39m"; - private static readonly red: string = "\u001b[31m${TXT}\u001b[39m"; - - public static normal(value: string): string { - return value; - } - - public static dim(value: string): string { - return ChalkColor.gray.replace("${TXT}", value); - } - - public static header(value: string): string { - return ChalkColor.cyan.replace("${TXT}", value); - } - - public static prompt(value: string): string { - return ChalkColor.yellow.replace("${TXT}", value); - } - - public static warning(value: string): string { - return ChalkColor.orange.replace("${TXT}", value); - } - - public static error(value: string): string { - return ChalkColor.red.replace("${TXT}", value); - } -} diff --git a/.github/cicd/RunnerService.ts b/.github/cicd/RunnerService.ts deleted file mode 100644 index b64d808..0000000 --- a/.github/cicd/RunnerService.ts +++ /dev/null @@ -1,96 +0,0 @@ -import { readLines } from "https://deno.land/std@0.181.0/io/mod.ts"; -import { writeAll } from "https://deno.land/std@0.181.0/streams/write_all.ts"; -import { ChalkColor } from "./ChalkColor.ts"; - -/** - * Represents a service for running commands. - */ -export class RunnerService { - /** - * Runs the given commands. - * @param {string[]} commands The commands to run. - * @param [boolean] doNotWriteToConsole Whether or not to write the output to the console. - * @returns {Promise} A promise that resolves when the commands have been run. - */ - public async run(commands: string[], doNotWriteToConsole = true): Promise<[success: boolean, msg: string]> { - try { - const process = Deno.run({ - cmd: commands, - stdout: "piped", - stderr: "piped", - }); - - const output: string = await this.pipeThroughStdOut( - process.stdout, - Deno.stdout, - commands[0], - doNotWriteToConsole, - ); - await this.pipeThroughStdErr(process.stderr, Deno.stderr, commands[0]); - - const result: [boolean, string] = [true, output]; - - process.close(); - - return result; - } catch (error) { - if (error instanceof Deno.errors.NotFound) { - console.log(ChalkColor.error(`\nThe program ${commands[0]} was not found.`)); - Deno.exit(); - } - - console.log(ChalkColor.error(`\n${error.message}`)); - Deno.exit(); - } - } - - /** - * Pipes the output of a command to the console. - * @param reader The reader to read from. - * @param writer The writer to write to. - * @param prefix The text to prefix to each line of output. - */ - private async pipeThroughStdOut( - reader: Deno.Reader, - writer: Deno.Writer, - prefix = "", - doNotWriteToConsole: boolean, - ): Promise { - const encoder = new TextEncoder(); - const collectedOutput: string[] = []; - - prefix = prefix === undefined || prefix === null || prefix === "" ? "" : `[${prefix.trim()}]`; - - for await (const line of readLines(reader)) { - collectedOutput.push(line); - - if (doNotWriteToConsole) { - continue; - } - - await writeAll(writer, encoder.encode(`\n${prefix} ${line}`)); - } - - return collectedOutput.join("\n"); - } - - /** - * Pipes the output of a command to the console. - * @param reader The reader to read from. - * @param writer The writer to write to. - * @param prefix The text to prefix to each line of output. - */ - private async pipeThroughStdErr( - reader: Deno.Reader, - writer: Deno.Writer, - prefix = "", - ): Promise { - const encoder = new TextEncoder(); - - prefix = prefix === undefined || prefix === null || prefix === "" ? "" : `[${prefix.trim()}]`; - - for await (const line of readLines(reader)) { - await writeAll(writer, encoder.encode(`\n${prefix} ${line}`)); - } - } -} diff --git a/.github/cicd/validate-notes.ts b/.github/cicd/validate-notes.ts deleted file mode 100644 index ff75746..0000000 --- a/.github/cicd/validate-notes.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { exists, existsSync } from "https://deno.land/std@0.184.0/fs/exists.ts"; - -// Validate the arguments -if (Deno.args.length !== 2) { - let errorMsg = "The 'validate-notes' cicd script must have two arguments."; - errorMsg += "\nThe first arg must be either 'production' or 'preview'."; - errorMsg += "\nThe second arg must be the version of the notes."; - - throw new Error(errorMsg); -} - -const notesType: string = Deno.args[0].toLowerCase(); - -if (notesType !== "production" && notesType !== "preview") { - let errorMsg = "The notes type argument must be a value of 'production' or 'preview'."; - errorMsg += "\nThe value is case-insensitive."; - - throw new Error(errorMsg); -} - -const prodVersionRegex = /^v[0-9]+\.[0-9]+\.[0-9]+$/; -const prevVersionRegex = /^v[0-9]+\.[0-9]+\.[0-9]+-preview\.[0-9]+$/; - -const version: string = Deno.args[1]; -let isValid = false; - -if (notesType === "production") { - isValid = prodVersionRegex.test(version); -} else { - isValid = prevVersionRegex.test(version); -} - -if (isValid === false) { - throw new Error(`The version is not in the correct ${notesType} version syntax.`); -} - -const notesDirName = notesType === "production" ? "ProductionReleases" : "PreviewReleases"; -const notesFilePath = `${Deno.cwd()}/Documentation/ReleaseNotes/${notesDirName}/Release-Notes-${version}.md`; - -if (!existsSync(notesFilePath)) { - throw new Error(`The release notes '${notesFilePath}' do not exist.`); -} diff --git a/.github/cicd/validate-tag.ts b/.github/cicd/validate-tag.ts deleted file mode 100644 index dd2315b..0000000 --- a/.github/cicd/validate-tag.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { RunnerService } from "./RunnerService.ts"; - -// Validate the arguments -if (Deno.args.length !== 2) { - let errorMsg = "The 'validate-tag' cicd script must have two arguments."; - errorMsg += "\nThe first arg must be either 'production' or 'preview'."; - errorMsg += "\nThe second arg must be the name of the tag."; - - throw new Error(errorMsg); -} - -const tagType: string = Deno.args[0].toLowerCase(); - -if (tagType !== "production" && tagType !== "preview") { - let errorMsg = "The tag type argument must be a value of 'production' or 'preview'."; - errorMsg += "\nThe value is case-insensitive."; - - throw new Error(errorMsg); -} - -const prodVersionRegex = /^v[0-9]+\.[0-9]+\.[0-9]+$/; -const prevVersionRegex = /^v[0-9]+\.[0-9]+\.[0-9]+-preview\.[0-9]+$/; - -const tag: string = Deno.args[1]; -let isValid = false; - -if (tagType === "production") { - isValid = prodVersionRegex.test(tag); -} else { - isValid = prevVersionRegex.test(tag); -} - -if (isValid === false) { - throw new Error(`The tag is not in the correct ${tagType} version syntax.`); -} - -const runnerService: RunnerService = new RunnerService(); -const result: [boolean, string] = await runnerService.run(["git", "tag"]); - -if (result[0] === false) { - let errorMsg = "The command 'git tag' failed."; - errorMsg += `\n${result[1]}`; - - throw new Error(errorMsg); -} - -const tags: string[] = result[1].split("\n"); - -const tagExists: boolean = tags.some(t => t === tag); - -if (tagExists) { - throw new Error(`The tag '${tag}' already exists.`); -} diff --git a/.github/workflows/add-new-issue-to-project.yml b/.github/workflows/add-new-issue-to-project.yml index d560a58..505762a 100644 --- a/.github/workflows/add-new-issue-to-project.yml +++ b/.github/workflows/add-new-issue-to-project.yml @@ -1,53 +1,18 @@ name: 🤖Add New Issue To Project -defaults: - run: - shell: pwsh - - on: issues: types: opened -env: - GITHUB_TOKEN: ${{ secrets.CICD_REST_API }} - - jobs: - add_issue_to_project: - name: Add Issue ${{ github.event.issue.number }} To Project - runs-on: ubuntu-latest - steps: - - name: Add To Project - run: | - # Get the raw json data using the GH CLI - $rawProjectsJsonData = gh project list --owner ${{ vars.ORGANIZATION_NAME }} --format=json; - - Write-Host "::group::Raw Project JSON Data"; - Write-Host $rawProjectsJsonData; - Write-Host "::endgroup::"; - - # Pipe the raw data into jq to format it into a more usable format - $formattedJsonData = $rawProjectsJsonData | jq "[.projects[] | { title: .title, number: .number }]" - - Write-Host "::group::Formatted Project JSON Data"; - Write-Host $formattedJsonData; - Write-Host "::endgroup::"; - - $orgProjects = $formattedJsonData | ConvertFrom-Json; - - # Get the project that matches the org project name repo variable - $projects = $orgProjects.Where({ $_.title -eq "${{ vars.ORG_PROJECT_NAME }}" }); - - if ($projects.Count -eq 0) { - Write-Host "::error::The project '${{ vars.ORG_PROJECT_NAME }}' was not found. Check that the organization variable 'ORG_PROJECT_NAME' exists and is set correctly?"; - exit 1; - } - - $projNumber = $projects[0].number; - $issueUrl = "https://github.com/${{ vars.ORGANIZATION_NAME }}/${{ vars.PROJECT_NAME }}/issues/${{ github.event.issue.number }}"; - - # Add the newly created issue to the project - gh project item-add $projNumber --owner ${{ vars.ORGANIZATION_NAME }} --url $issueUrl; + add_new_issue_to_project: + name: Add New Issue + uses: KinsonDigital/Infrastructure/.github/workflows/add-issue-to-project.yml@v10.0.1 + with: + org-name: "${{ vars.ORGANIZATION_NAME }}" + org-project-name: "${{ vars.ORG_PROJECT_NAME }}" + project-name: "${{ vars.PROJECT_NAME }}" + secrets: + cicd-pat: ${{ secrets.CICD_TOKEN }} diff --git a/.github/workflows/build-status-check.yml b/.github/workflows/build-status-check.yml index bb8e564..118a77d 100644 --- a/.github/workflows/build-status-check.yml +++ b/.github/workflows/build-status-check.yml @@ -1,18 +1,17 @@ name: ✅Build Status Check -run-name: ✅Build Status Check ${{ github.base_ref == 'main' && '(Release Build)' || '(Debug Build)' }} +run-name: ✅Build Status Check (${{ github.base_ref }} branch) on: - workflow_dispatch: pull_request: - branches: main + branches: [main, preview] jobs: build_project: - name: Build Status Check - uses: KinsonDigital/Infrastructure/.github/workflows/build-csharp-project.yml@v8.1.0 + name: ${{ vars.PROJECT_NAME }} Build Status Check + uses: KinsonDigital/Infrastructure/.github/workflows/build-csharp-project.yml@v10.0.1 with: project-name: ${{ vars.PROJECT_NAME }} - build-config: "Debug" + build-config: Debug net-sdk-version: ${{ vars.NET_SDK_VERSION }} diff --git a/.github/workflows/prepare-release.yml b/.github/workflows/prepare-release.yml new file mode 100644 index 0000000..7bfb86d --- /dev/null +++ b/.github/workflows/prepare-release.yml @@ -0,0 +1,81 @@ +name: 🚁Prepare Release + + +defaults: + run: + shell: pwsh + + +on: + workflow_dispatch: + inputs: + release-type: + description: The type of release. Choose 'Preview' or 'Production'. + required: true + type: choice + options: [Preview, Production] + release-version: + required: true + description: The version of the release to prepare. + type: string + + +jobs: + print_validate_workflow: + name: Print & Validate Prepare Release Workflow + runs-on: ubuntu-latest + steps: + - name: Print Environment Variables + run: Get-ChildItem -Path Env:* | Sort-Object Name + + - name: Validate Workflow Inputs + run: | + $releaseType = "${{ inputs.release-type }}".ToLower(); + + if ("${{ vars.PROJECT_NAME }}".Trim() -eq "") { + Write-Host "::error::The project name input cannot be empty."; + exit 1; + } + + + if ($releaseType -eq "") { + Write-Host "::error::The release type input cannot be empty."; + exit 1; + } + + + if ($releaseType -ne 'preview' -and $releaseType -ne 'roduction') { + Write-Host "::error::The release type input must be either 'Preview' or 'Production'."; + exit 1; + } + + $releaseVersion = "${{ inputs.release-version }}".Trim().ToLower(); + + if ($releaseVersion -eq "") { + Write-Host "::error::The 'release-version' workflow input cannot be empty."; + exit 1; + } + + + $prodVersionRegex = "v[0-9]+\.[0-9]+\.[0-9]+"; + $prevVersionRegex = "v[0-9]+\.[0-9]+\.[0-9]+-preview\.[0-9]+"; + + # Verify that the version has valid syntax + if (($releaseVersion -match $prodVersionRegex) -or ($releaseVersion -match $prevVersionRegex)) { + Write-Host "::notice::The 'release-version' workflow input is valid."; + } else { + $versionSyntax = $releaseType == "production" ? "v#.#.#" : "v#.#.#-preview.#"; + Write-Host "::error::The 'release-version' workflow input is not valid. Expected format: '$versionSyntax"; + exit 1; + } + + + prepare_release: + name: Prepare ${{ inputs.release-type }} Release Of ${{ vars.PROJECT_NAME }} + uses: KinsonDigital/Infrastructure/.github/workflows/prepare-release.yml@v10.0.1 + with: + project-name: ${{ vars.PROJECT_NAME }} + release-type: ${{ inputs.release-type }} + release-version: ${{ inputs.release-version }} + secrets: + cicd-pat: ${{ secrets.CICD_TOKEN }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 51d5d80..d04fb55 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -7,10 +7,6 @@ defaults: shell: pwsh -env: - runs-on: ubuntu-latest - - on: workflow_dispatch: inputs: @@ -33,29 +29,9 @@ on: jobs: - determine_build_config: - name: Determine Build Configuration - runs-on: ${{ inputs.runs-on }} - outputs: - build-config: "${{ steps.get-build-config.outputs.build-config }}" - steps: - - name: Get Build Config - id: get-build-config - run: | - # If the branch that the workflow is running on is the required branch for the release, do a release build - if ( "${{ github.base_ref }}" -eq "main") { - "build-config=Release" >> $env:GITHUB_OUTPUT; - echo "Release build created."; - } else { # Any other branch than the release branch, do a debug build - "build-config=Debug" >> $env:GITHUB_OUTPUT; - echo "Debug build created."; - } - - perform_release: - name: Performing ${{ inputs.release_type }} Release of ${{ vars.PROJECT_NAME }} (${{ needs.determine_build_config.outputs.build-config }}) - needs: determine_build_config - uses: KinsonDigital/Infrastructure/.github/workflows/dotnet-action-release.yml@v8.1.0 + name: Performing ${{ inputs.release_type }} Release of ${{ vars.PROJECT_NAME }} (${{ inputs.release_type == 'Production' && 'Release' || 'Debug' }}) + uses: KinsonDigital/Infrastructure/.github/workflows/dotnet-action-release.yml@v10.0.1 with: project-name: "${{ vars.PROJECT_NAME }}" release-type: "${{ inputs.release_type }}" @@ -63,8 +39,7 @@ jobs: net-sdk-version: "${{ vars.NET_SDK_VERSION }}" relative-release-notes-dir-path: "${{ vars.SCRIPT_RELATIVE_DIR_PATH }}" release-notes-file-name-prefix: "${{ vars.RELEASE_NOTES_FILE_NAME_PREFIX }}" - build-config: "${{ needs.determine_build_config.outputs.build-config }}" - cicd-scripts-version: "${{ vars.CICD_SCRIPTS_VERSION}}" + build-config: "${{ inputs.release_type == 'Production' && 'Release' || 'Debug' }}" pr-include-notes-label: "${{ vars.PR_INCLUDE_NOTES_LABEL }}" runs-on: ${{ inputs.runs-on }} dry-run: ${{ inputs.dry-run }} diff --git a/.github/workflows/sync-bot.yml b/.github/workflows/sync-bot.yml index 6f85e7a..e95e0b9 100644 --- a/.github/workflows/sync-bot.yml +++ b/.github/workflows/sync-bot.yml @@ -13,7 +13,7 @@ on: jobs: sync_bot: - name: Sync Bot + name: Sync Bot Status Check if: ${{ !github.event.issue.pull_request }} runs-on: ubuntu-latest steps: @@ -30,19 +30,20 @@ jobs: $issueNumber = "${{ github.event.issue.number }}"; - echo "Project Name: ${{ vars.PROJECT_NAME }}"; - echo "Issue: $issueNumber"; + Write-Host "::notice::Project Name: ${{ vars.PROJECT_NAME }}"; + Write-Host "::notice::Issue: $issueNumber"; if ($manuallyExecuted -and $issueNumber -eq "0") { - echo "The issue or PR number must be a value greater than 0."; + Write-Host "::notice::The issue or PR number must be a value greater than 0."; exit 1; } <# Deno Args: - 1. Project Name - 2. Issue Number - 3. Event Type - set to issue event type - 4. GitHub token + 1. Organization name + 2. Project name + 3. Issue number + 4. Event Type - set to issue event type + 5. PAT #> deno run ` --allow-net ` @@ -50,4 +51,4 @@ jobs: "${{ vars.PROJECT_NAME }}" ` "$issueNumber" ` "issue" ` - "${{ secrets.CICD_REST_API }}"; + "${{ secrets.CICD_TOKEN }}"; diff --git a/.github/workflows/sync-issue-to-pr.yml b/.github/workflows/sync-issue-to-pr.yml index 1083c57..dc2ace5 100644 --- a/.github/workflows/sync-issue-to-pr.yml +++ b/.github/workflows/sync-issue-to-pr.yml @@ -17,7 +17,7 @@ jobs: sync_issue_to_pr: name: Start Sync Process if: | - github.event_name == 'issue_comment' || + (github.event_name == 'issue_comment' && contains(github.event.comment.body, '[run-sync]')) || github.event_name == 'pull_request' && startsWith(github.head_ref, 'feature/') runs-on: ubuntu-latest steps: @@ -29,23 +29,27 @@ jobs: - name: Sync run: | $eventName = "${{ github.event_name }}"; - $scriptUrl = "${{ vars.SCRIPT_BASE_URL }}/${{ vars.CICD_SCRIPTS_VERSION }}/${{ vars.SCRIPT_RELATIVE_DIR_PATH}}/sync-issue-to-pr.ts"; - $prNumber = $eventName -eq "pull_request" ? "${{ github.event.number }}" : "${{ github.event.issue.number }}"; - $command = $eventName -eq "issue_comment" ? "${{ github.event.comment.body }}" : "[initial-sync]"; + $scriptUrl = "${{ vars.SCRIPT_BASE_URL }}/${{ vars.CICD_SCRIPTS_VERSION }}/${{ vars.SCRIPT_RELATIVE_DIR_PATH }}/sync-issue-to-pr.ts"; + $issueOrPrNumber = $eventName -eq "pull_request" ? "${{ github.event.number }}" : "${{ github.event.issue.number }}"; - echo "Event Name: $eventName"; - echo "Organization Name: ${{ vars.ORGANIZATION_NAME }}"; - echo "Project Name: ${{ vars.PROJECT_NAME }}"; - echo "Requested By: ${{ github.event.sender.login }}"; - echo "PR Number: $prNumber"; - echo "Comment: $command"; - + Write-Host "::notice::Event Type: $eventName"; + Write-Host "::notice::Organization Name: ${{ vars.ORGANIZATION_NAME }}"; + Write-Host "::notice::Project Name: ${{ vars.PROJECT_NAME }}"; + Write-Host "::notice::Requested By: ${{ github.event.sender.login }}"; + Write-Host "::notice::PR Number: $issueOrPrNumber"; + + <# Deno Args: + 1. Organization name + 2. Project name + 3. Triggered by user + 4. Issue or pull request number + 5. PAT + #> deno run ` --allow-net ` "$scriptUrl" ` - "${{ vars.ORGANIZATION_NAME}}" ` + "${{ vars.ORGANIZATION_NAME }}" ` "${{ vars.PROJECT_NAME }}" ` "${{ github.event.sender.login }}" ` - "$prNumber" ` - "$command" ` - "${{ secrets.CICD_REST_API }}"; + "$issueOrPrNumber" ` + "${{ secrets.CICD_TOKEN }}"; diff --git a/.github/workflows/sync-status-check.yml b/.github/workflows/sync-status-check.yml index 27b880f..e1e85c7 100644 --- a/.github/workflows/sync-status-check.yml +++ b/.github/workflows/sync-status-check.yml @@ -27,25 +27,27 @@ jobs: $scriptUrl = "${{ vars.SCRIPT_BASE_URL }}/${{ vars.CICD_SCRIPTS_VERSION }}/${{ vars.SCRIPT_RELATIVE_DIR_PATH}}/sync-bot-status-check.ts"; $prNumber = "${{ github.event.number }}"; - echo "Project Name: ${{ vars.PROJECT_NAME }}"; - echo "PR Number: $prNumber"; - echo "Event Type: pr"; + Write-Host "::notice::Project Name: ${{ vars.PROJECT_NAME }}"; + Write-Host "::notice::PR Number: $prNumber"; + Write-Host "::notice::Event Type: pr"; if ($manuallyExecuted -and $prNumber -eq "0") { - echo "The issue or PR number must be a value greater than 0."; + Write-Host "::notice::The issue or PR number must be a value greater than 0."; exit 1; } <# Deno Args: - 1. Project Name - 2. PR Number - 3. Event Type - set to pull request event type - 4. GitHub token + 1. Organization name + 2. Project name + 3. Pull request number + 4. Event Type - set to pull request event type + 5. PAT #> deno run ` --allow-net ` "$scriptUrl" ` + "${{ vars.ORGANIZATION_NAME }}" ` "${{ vars.PROJECT_NAME }}" ` "$prNumber" ` "pr" ` - "${{ secrets.CICD_REST_API }}"; + "${{ secrets.CICD_TOKEN }}"; diff --git a/.github/workflows/unit-testing-status-check.yml b/.github/workflows/unit-test-status-check.yml similarity index 51% rename from .github/workflows/unit-testing-status-check.yml rename to .github/workflows/unit-test-status-check.yml index 0a147a1..25123dd 100644 --- a/.github/workflows/unit-testing-status-check.yml +++ b/.github/workflows/unit-test-status-check.yml @@ -1,18 +1,17 @@ name: ✅Unit Testing Status Check -run-name: ✅Unit Testing Status Check ${{ github.base_ref == 'main' && '(Release Build)' || '(Debug Build)' }} +run-name: ✅Unit Testing Status Check (${{ github.base_ref }} branch) on: - workflow_dispatch: pull_request: - branches: main + branches: [main, preview] jobs: run_tests: - name: Unit Test Status Check - uses: KinsonDigital/Infrastructure/.github/workflows/run-csharp-tests.yml@v8.1.0 + name: ${{ vars.PROJECT_NAME }} Test Status Check + uses: KinsonDigital/Infrastructure/.github/workflows/run-csharp-tests.yml@v10.0.1 with: project-name: ${{ vars.PROJECT_NAME }}Tests - build-config: "Debug" + build-config: Debug net-sdk-version: ${{ vars.NET_SDK_VERSION }} diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 9cefff7..11037f9 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -3,6 +3,6 @@ "humao.rest-client", "ms-dotnettools.vscodeintellicode-csharp", "ms-dotnettools.csdevkit", - "ms-dotnettools.csharp" + "ms-dotnettools.vscode-dotnet-runtime" ] } diff --git a/.vscode/release-notes.code-snippets b/.vscode/release-notes.code-snippets index 0e934f3..f770bca 100644 --- a/.vscode/release-notes.code-snippets +++ b/.vscode/release-notes.code-snippets @@ -20,56 +20,16 @@ "scope": "markdown", "prefix": "issue-link", "body": [ - "[#${1:Issue #}](https://github.com/KinsonDigital/VersionMiner/issues/${1:Issue #}) - " + "[#${1:Issue #}](https://github.com/KinsonDigital/BranchValidator/issues/${1:Issue #}) - " ], - "description": "Link to the issue" - }, - "Issue Dependency Update": { - "scope": "markdown", - "prefix": "issue-dep-update", - "body": [ - "[#${1:PR #}](https://github.com/KinsonDigital/VersionMiner/pull/${1:PR #}) - Updated **${2:packge name}** from _**v${3:from version}**_ to _**v${4:to version}**_" - ], - "description": "Link to a pull request for a dependency update." + "description": "Link to an issue" }, "PR Link": { "scope": "markdown", "prefix": "pr-link", "body": [ - "[#${1:PR #}](https://github.com/KinsonDigital/VersionMiner/pull/${1:PR #}) - " + "[#${1:PR #}](https://github.com/KinsonDigital/BranchValidator/pull/${1:PR #}) - " ], "description": "Link to a pull request" }, - "PR Dependency Update": { - "scope": "markdown", - "prefix": "pr-dep-update", - "body": [ - "[#${1:PR #}](https://github.com/KinsonDigital/VersionMiner/pull/${1:PR #}) - Updated **${2:packge name}** from _**v${3:from version}**_ to _**v${4:to version}**_" - ], - "description": "Link to a pull request for a dependency update." - }, - "Issue Link (Outside Contributor)": { - "scope": "markdown", - "prefix": "issue-link-oc", - "body": [ - "[#${1:Issue #}](https://github.com/KinsonDigital/VersionMiner/issues/${1:Issue #}) ([@${2:Repo Owner}🙏🏼](https://github.com/${2:Repo Owner})) - " - ], - "description": "Link to the issue with outside contributor" - }, - "Outside Contributor": { - "scope": "markdown", - "prefix": "outside-contributor", - "body": [ - "([${1:Repo Owner}🙏🏼](https://github.com/${1:Repo Owner}))" - ], - "description": "Outside contributor link" - }, - "Repo URL": { - "scope": "markdown", - "prefix": "repo-url", - "body": [ - "[${1|BranchValidator,CASL,CICD,GitHubData,GitHubReleaseChecker,GotNuget,KDActionUtils,TagVerifier,Velaptor,VersionMiner,VersionValidator|}](https://github.com/KinsonDigital/${1|BranchValidator,CASL,GitHubData,GitHubReleaseChecker,GotNuget,KDActionUtils,TagVerifier,Velaptor,VersionMiner,VersionValidator|})" - ], - "description": "Outside contributor link" - } } diff --git a/.vscode/settings.json b/.vscode/settings.json index 75d8b89..8191e09 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -12,33 +12,22 @@ "versionminer", "Xunit" ], - "deno.enable": true, "dotnet.defaultSolution": "VersionMiner.sln", - "[jsonc]": { - "editor.indentSize": 4, - "editor.insertSpaces": false, - "editor.detectIndentation": false, - }, "[csharp]": { - "editor.indentSize": 4, - "editor.insertSpaces": false, - "editor.detectIndentation": false, - }, - "[yml]": { - "editor.indentSize": 2, "editor.insertSpaces": true, - "editor.detectIndentation": false, + "editor.indentSize": 4, }, - "rest-client.environmentVariables": { - "$shared": { - "repoOwner": "KinsonDigital", - "githubHostAddress": "https://api.github.com", - }, - "GitHub-CASL": { - "hostAddress": "{{$shared githubHostAddress}}", - "repoOwner": "{{$shared repoOwner}}", - "repoName": "CASL", - "milestoneNumber": "7", - }, + "[yaml]": { + "editor.insertSpaces": true, + "editor.indentSize": 2, + }, + "[jsonc]": { + "editor.insertSpaces": false, + "editor.indentSize": 4, + }, + "editor.detectIndentation": false, + "[github-actions-workflow]": { + "editor.tabSize": 2, + "editor.insertSpaces": true }, } diff --git a/.vscode/workflow.code-snippets b/.vscode/workflow.code-snippets new file mode 100644 index 0000000..a2dcf3f --- /dev/null +++ b/.vscode/workflow.code-snippets @@ -0,0 +1,49 @@ +{ + // Place your Release Notes workspace snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and + // description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope + // is left empty or omitted, the snippet gets applied to all languages. The prefix is what is + // used to trigger the snippet and the body will be expanded and inserted. Possible variables are: + // $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. + // Placeholders with the same ids are connected. + // Example: + // "Print to console": { + // "scope": "javascript,typescript", + // "prefix": "log", + // "body": [ + // "console.log('$1');", + // "$2" + // ], + // "description": "Log output to console" + // } + + "Workflow Job": { + "prefix": "workflow-job", + "body": [ + "${1: job id}:", + "\tname: ${2: display}", + "\truns-on: ${3|macos-10.15,macos-11,macos-12,macos-latest,self-hosted,ubuntu-18.04,ubuntu-20.04,ubuntu-22.04,ubuntu-latest,windows-2019,windows-2022,windows-latest|}", + "\tsteps:", + "\t\t- name: ${4: step name}", + "\t\t\trun: $5" + ], + "description": "Workflow Job" + }, + "Set Up Deno Step": { + "prefix": "step-setup-deno", + "body": [ + "- name: ${1:Set Up Deno}", + "\tuses: denoland/setup-deno@${2:v1}", + "\twith:", + "\t\tdeno-version: ${3:v1.x}", + ], + "description": "Installs deno" + }, + "Checkout Repo": { + "prefix": "repo-checkout", + "body": [ + "- name: ${1: Checkout Repo}", + "\tuses: actions/checkout@${2: v3}" + ], + "description": "Checks out the repository" + }, +} diff --git a/Documentation/ReleaseNotes/Preview-Release-Notes-TEMPLATE.md b/Documentation/ReleaseNotes/Preview-Release-Notes-TEMPLATE.md deleted file mode 100644 index 69daa14..0000000 --- a/Documentation/ReleaseNotes/Preview-Release-Notes-TEMPLATE.md +++ /dev/null @@ -1,36 +0,0 @@ -

- Version Miner Preview Release Notes - [TODO: add-prev-release-here] -

- -

Quick Reminder

- -
- -As with all software, there is always a chance for issues and bugs, especially for preview releases, which is why your input is greatly appreciated. 🙏🏼 -
- ---- - -

New Features ✨

- ---- - -

Bug Fixes 🐛

- ---- - -

Breaking Changes 🧨

- ---- - -

Internal Changes ⚙️

-
(Changes that do not affect users. Not breaking changes, new features, or bug fixes.)
- ---- - -

Nuget/Library Updates 📦

- ---- - -

Other 🪧

-
(Includes anything that does not fit into the categories above)
diff --git a/Documentation/ReleaseNotes/Production-Release-Notes-TEMPLATE.md b/Documentation/ReleaseNotes/Production-Release-Notes-TEMPLATE.md deleted file mode 100644 index 1e2bc3d..0000000 --- a/Documentation/ReleaseNotes/Production-Release-Notes-TEMPLATE.md +++ /dev/null @@ -1,27 +0,0 @@ -

- Version Miner Production Release Notes - [TODO: add-prod-release-here] -

- -

New Features✨

- ---- - -

Bug Fixes 🐛

- ---- - -

Breaking Changes 🧨

- ---- - -

Internal Changes ⚙️

-
(Changes that do not affect users. Not breaking changes, new features, or bug fixes.)
- ---- - -

Nuget/Library Updates 📦

- ---- - -

Other 🪧

-
(Includes anything that does not fit into the categories above)
diff --git a/README.md b/README.md index 58b3be4..8cb29db 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@
![GitHub Workflow Status (with event)](https://img.shields.io/github/actions/workflow/status/kinsondigital/VersionMiner/build-status-check.yml?style=flat&label=%F0%9F%94%A7Build&color=2f8840) -![GitHub Workflow Status (with event)](https://img.shields.io/github/actions/workflow/status/kinsondigital/VersionMiner/unit-testing-status-check.yml?style=flat&label=%F0%9F%A7%AATests&color=2f8840) +![GitHub Workflow Status (with event)](https://img.shields.io/github/actions/workflow/status/kinsondigital/VersionMiner/unit-test-status-check.yml?style=flat&label=%F0%9F%A7%AATests&color=2f8840) [![Codecov](https://img.shields.io/codecov/c/github/KinsonDigital/VersionMiner?color=2F8840&label=Code%20Coverage&logo=codecov)](https://app.codecov.io/gh/KinsonDigital/VersionMiner/tree/release%2Fv1.0.0) @@ -57,11 +57,11 @@ For more information on step and job outputs, refer to the GitHub documentation

🪧 Example 🪧

-```yaml +```yml name: Get Version Example jobs: - Get_Version_Job: + get_version_job: runs-on: ubuntu-latest # Cannot use windows steps: - uses: actions/3 @@ -133,9 +133,9 @@ The action output is a single `string` value with the name _**version**_. Click ## **🪧 More Examples 🪧**
- Searches for a version but does not fail the workflow if no version is found: +Searches for a version but does not fail the workflow if no version is found: -``` yml +```yml #Example 1 Workflow - name: Get Version From C# Project File uses: KinsonDigital/VersionMiner@v1.0.0-preview.2 @@ -145,7 +145,7 @@ The action output is a single `string` value with the name _**version**_. Click repo-token: ${{ secrets.GITHUB_TOKEN }} branch-name: main file-format: xml # Not case sensitive - file-path: "MyProject/MyProject.csproj" + file-path: "${{ github.workspace }}/MyProject/MyProject.csproj" version-keys: Version fail-when-version-not-found: false ``` @@ -164,7 +164,7 @@ The action output is a single `string` value with the name _**version**_. Click
Searches multiple keys for the version. The job fails if no version is found in the keys: -``` yml +```yml #Example 2 Workflow - name: Get Version From C# Project File uses: KinsonDigital/VersionMiner@v1.0.0-preview.2 @@ -193,7 +193,7 @@ Searches multiple keys for the version. The job fails if no version is found in
Searches for a key without using case-sensitivity: -``` yml +```yml #Example 3 Workflow - name: Get Version From C# Project File uses: KinsonDigital/VersionMiner@v1.0.0-preview.2 @@ -225,7 +225,7 @@ Trims the value `refs/heads/` from the beginning of the branch. > **Note** Click [here](https://docs.github.com/en/actions/learn-github-actions/environment-variables#default-environment-variables) to get more information about the default variable `github.ref` used in the example below: -``` yml +```yml #Example 4 Workflow - name: Get Version From C# Project File uses: KinsonDigital/VersionMiner@v1.0.0-preview.2 @@ -262,7 +262,7 @@ Interested in contributing? If so, click [here](https://github.com/KinsonDigital
[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg?style=flat)](https://github.com/KinsonDigital/.github/blob/master/docs/code_of_conduct.md) -[![GitHub](https://img.shields.io/github/license/kinsondigital/gotnuget)](https://github.com/KinsonDigital/VersionMiner/blob/release/v1.0.0/LICENSE.md) +[![GitHub](https://img.shields.io/github/license/kinsondigital/versionminer)](https://github.com/KinsonDigital/VersionMiner/blob/main/LICENSE.md)
This software is distributed under the very permissive MIT license and all dependencies are distributed under MIT-compatible licenses. diff --git a/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.1.md b/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.1.md similarity index 100% rename from Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.1.md rename to ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.1.md diff --git a/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.2.md b/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.2.md similarity index 100% rename from Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.2.md rename to ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.2.md diff --git a/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.3.md b/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.3.md similarity index 100% rename from Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.3.md rename to ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.3.md diff --git a/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.4.md b/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.4.md similarity index 100% rename from Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.4.md rename to ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.4.md diff --git a/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.5.md b/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.5.md similarity index 100% rename from Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.5.md rename to ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.5.md diff --git a/Documentation/ReleaseNotes/ProductionReleases/Release-Notes-v1.0.0.md b/ReleaseNotes/ProductionReleases/Release-Notes-v1.0.0.md similarity index 100% rename from Documentation/ReleaseNotes/ProductionReleases/Release-Notes-v1.0.0.md rename to ReleaseNotes/ProductionReleases/Release-Notes-v1.0.0.md diff --git a/Testing/.editorconfig b/Testing/.editorconfig index 0fd0aae..ba444d6 100644 --- a/Testing/.editorconfig +++ b/Testing/.editorconfig @@ -9,15 +9,14 @@ indent_style = space [*.{cs,csx,vb,vbx}] indent_size = 4 insert_final_newline = true -charset = utf-8-bom ############################### # .NET Coding Conventions # ############################### [*.cs] -# Expression-bodied members -csharp_style_expression_bodied_methods = true:none + +csharp_style_expression_bodied_methods = true:silent ############################### # C# Formatting Rules # @@ -39,7 +38,7 @@ dotnet_diagnostic.SA1124.severity = none dotnet_diagnostic.CA2000.severity = none # IDE0017: Simplify object initialization -dotnet_style_object_initializer = false:none +dotnet_style_object_initializer = true:none # CA1063: Implement IDisposable Correctly dotnet_diagnostic.CA1063.severity = none @@ -70,5 +69,3 @@ dotnet_diagnostic.CS8625.severity = none # CS8604: Possible null reference argument. dotnet_diagnostic.CS8604.severity = none - -resharper_redundant_name_qualifier_highlighting=none diff --git a/VersionMiner.sln b/VersionMiner.sln index 4493e1b..22a5976 100644 --- a/VersionMiner.sln +++ b/VersionMiner.sln @@ -11,11 +11,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution .gitignore = .gitignore action.yml = action.yml Dockerfile = Dockerfile - LICENSE = LICENSE README.md = README.md .editorconfig = .editorconfig codecov.yml = codecov.yml - code_of_conduct.md = code_of_conduct.md + renovate.json = renovate.json EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VersionMinerTests", "Testing\VersionMinerTests\VersionMinerTests.csproj", "{77B96B49-4D77-456B-A787-E852E9842B60}" @@ -27,15 +26,14 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Testing", "Testing", "{0D64 EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Workflows", "Workflows", "{5010ECCD-3BCC-475D-87EE-31E289E24571}" ProjectSection(SolutionItems) = preProject - .github\workflows\build-pr-status-check.yml = .github\workflows\build-pr-status-check.yml - .github\workflows\feature-pr-status-check.yml = .github\workflows\feature-pr-status-check.yml - .github\workflows\hotfix-pr-status-check.yml = .github\workflows\hotfix-pr-status-check.yml - .github\workflows\prev-feature-pr-status-check.yml = .github\workflows\prev-feature-pr-status-check.yml - .github\workflows\prev-release.yml = .github\workflows\prev-release.yml - .github\workflows\prev-release-pr-status-check.yml = .github\workflows\prev-release-pr-status-check.yml - .github\workflows\prod-release.yml = .github\workflows\prod-release.yml - .github\workflows\prod-release-pr-status-check.yml = .github\workflows\prod-release-pr-status-check.yml - .github\workflows\unit-test-pr-status-check.yml = .github\workflows\unit-test-pr-status-check.yml + .github\workflows\add-new-issue-to-project.yml = .github\workflows\add-new-issue-to-project.yml + .github\workflows\build-status-check.yml = .github\workflows\build-status-check.yml + .github\workflows\prepare-release.yml = .github\workflows\prepare-release.yml + .github\workflows\release.yml = .github\workflows\release.yml + .github\workflows\sync-bot.yml = .github\workflows\sync-bot.yml + .github\workflows\sync-issue-to-pr.yml = .github\workflows\sync-issue-to-pr.yml + .github\workflows\sync-status-check.yml = .github\workflows\sync-status-check.yml + .github\workflows\unit-test-status-check.yml = .github\workflows\unit-test-status-check.yml EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VersionMinerIntegrationTests", "Testing\VersionMinerIntegrationTests\VersionMinerIntegrationTests.csproj", "{AA5FFACB-335D-49DB-A25B-AE0ED088F9B0}" diff --git a/renovate.json b/renovate.json new file mode 100644 index 0000000..75d8e9f --- /dev/null +++ b/renovate.json @@ -0,0 +1,5 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": ["github>KinsonDigital/.github//config/renovate-config.json"], + "baseBranches": ["main"] +}