From 1a91252d1463afaaaa7fc8894976bc1a0e6e662c Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Tue, 12 Jan 2021 14:35:35 +0200 Subject: [PATCH 001/194] add Dependabot with GHA and both .NET dependency sources as ecosystems --- .github/dependabot.yml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 000000000..0b662e53b --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,19 @@ +version: 2 +updates: + - package-ecosystem: "github-actions" + # default location of `.github/workflows` + directory: "/" + schedule: + interval: "weekly" + + - package-ecosystem: "nuget" + # location of package manifests + directory: "/src/Notepads" + schedule: + interval: "daily" + + - package-ecosystem: "nuget" + # location of package manifests + directory: "/src/Notepads.Controls" + schedule: + interval: "daily" \ No newline at end of file From 20575996d1f5ce5dd815503500fe6b04c87e689b Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Tue, 12 Jan 2021 14:53:13 +0200 Subject: [PATCH 002/194] add CodeQL --- .github/workflows/codeql-analysis.yml | 49 +++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 .github/workflows/codeql-analysis.yml diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml new file mode 100644 index 000000000..f687d95af --- /dev/null +++ b/.github/workflows/codeql-analysis.yml @@ -0,0 +1,49 @@ +name: CodeQL Analysis + +on: + push: + pull_request: + schedule: + - cron: '0 8 * * *' + +jobs: + analyze: + name: codeql-analysis + runs-on: windows-latest + env: + Solution_Name: src\Notepads.sln + Project_Path: src\Notepads\Notepads.csproj + + steps: + - name: Checkout repository + id: checkout_repo + uses: actions/checkout@v2 + + # Add MSBuild to the PATH: https://github.com/microsoft/setup-msbuild + - name: Setup MSBuild + uses: microsoft/setup-msbuild@v1 + + - name: Restore the application + run: msbuild $env:Solution_Name /t:Restore /p:Configuration=$env:Configuration + env: + Configuration: Release + + - name: Initialize CodeQL + id: init_codeql + uses: github/codeql-action/init@v1 + with: + languages: csharp + queries: security-and-quality + + - name: Build + run: | + msbuild $env:Project_Path /p:Configuration=$env:Configuration /p:UapAppxPackageBuildMode=$env:Appx_Package_Build_Mode /p:AppxBundle=$env:Appx_Bundle /p:AppxPackageSigningEnabled=false /p:AppxBundlePlatforms="$env:Appx_Bundle_Platforms" + env: + Appx_Bundle: Always + Appx_Bundle_Platforms: x86|x64 + Appx_Package_Build_Mode: StoreUpload + Configuration: release + + - name: Perform CodeQL Analysis + id: analyze_codeql + uses: github/codeql-action/analyze@v1 \ No newline at end of file From 5de6591e9e018a7c34fae9b2d54a9a668f457433 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Tue, 12 Jan 2021 16:12:30 +0200 Subject: [PATCH 003/194] increase page-size and change build configuration to Debug --- .github/workflows/codeql-analysis.yml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index f687d95af..b8bcdfb7d 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -19,6 +19,13 @@ jobs: id: checkout_repo uses: actions/checkout@v2 + - name: configure Pagefile + uses: al-cheb/configure-pagefile-action@v1.2 + with: + minimum-size: 8GB + maximum-size: 32GB + disk-root: "D:" + # Add MSBuild to the PATH: https://github.com/microsoft/setup-msbuild - name: Setup MSBuild uses: microsoft/setup-msbuild@v1 @@ -26,7 +33,7 @@ jobs: - name: Restore the application run: msbuild $env:Solution_Name /t:Restore /p:Configuration=$env:Configuration env: - Configuration: Release + Configuration: Debug - name: Initialize CodeQL id: init_codeql @@ -42,7 +49,7 @@ jobs: Appx_Bundle: Always Appx_Bundle_Platforms: x86|x64 Appx_Package_Build_Mode: StoreUpload - Configuration: release + Configuration: Debug - name: Perform CodeQL Analysis id: analyze_codeql From 573839cf34b1ae75b403f528c622a40026737b91 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Tue, 12 Jan 2021 16:26:54 +0200 Subject: [PATCH 004/194] test Release build configuration --- .github/workflows/codeql-analysis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index b8bcdfb7d..a083ccda6 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -33,7 +33,7 @@ jobs: - name: Restore the application run: msbuild $env:Solution_Name /t:Restore /p:Configuration=$env:Configuration env: - Configuration: Debug + Configuration: Release - name: Initialize CodeQL id: init_codeql @@ -49,7 +49,7 @@ jobs: Appx_Bundle: Always Appx_Bundle_Platforms: x86|x64 Appx_Package_Build_Mode: StoreUpload - Configuration: Debug + Configuration: Release - name: Perform CodeQL Analysis id: analyze_codeql From c34f41a4412b0d42ef78ea320076a559f838b2c7 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Wed, 13 Jan 2021 11:37:35 +0200 Subject: [PATCH 005/194] add Debug and remove explicit language declaration --- .github/workflows/codeql-analysis.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index a083ccda6..ed595e494 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -10,6 +10,9 @@ jobs: analyze: name: codeql-analysis runs-on: windows-latest + strategy: + matrix: + configuration: [Debug, Release] env: Solution_Name: src\Notepads.sln Project_Path: src\Notepads\Notepads.csproj @@ -33,13 +36,12 @@ jobs: - name: Restore the application run: msbuild $env:Solution_Name /t:Restore /p:Configuration=$env:Configuration env: - Configuration: Release + Configuration: ${{ matrix.configuration }} - name: Initialize CodeQL id: init_codeql uses: github/codeql-action/init@v1 with: - languages: csharp queries: security-and-quality - name: Build @@ -49,7 +51,7 @@ jobs: Appx_Bundle: Always Appx_Bundle_Platforms: x86|x64 Appx_Package_Build_Mode: StoreUpload - Configuration: Release + Configuration: ${{ matrix.configuration }} - name: Perform CodeQL Analysis id: analyze_codeql From e6b7d8542cc7825f22e2bfbfcf3c3fc0bfdce38d Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Wed, 13 Jan 2021 12:20:38 +0200 Subject: [PATCH 006/194] add comment for the pagefile step and clean up the workflow --- .github/workflows/codeql-analysis.yml | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index ed595e494..ac870d4b8 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -22,21 +22,25 @@ jobs: id: checkout_repo uses: actions/checkout@v2 - - name: configure Pagefile + # Due to the insufficient memory allocated by default, CodeQL sometimes requires more to be manually allocated + - name: Configure Pagefile + id: config_pagefile uses: al-cheb/configure-pagefile-action@v1.2 with: minimum-size: 8GB maximum-size: 32GB disk-root: "D:" - # Add MSBuild to the PATH: https://github.com/microsoft/setup-msbuild - name: Setup MSBuild + id: setup_msbuild uses: microsoft/setup-msbuild@v1 - - name: Restore the application - run: msbuild $env:Solution_Name /t:Restore /p:Configuration=$env:Configuration + - name: Restore application + id: restore_app env: Configuration: ${{ matrix.configuration }} + run: | + msbuild $env:Solution_Name /t:Restore /p:Configuration=$env:Configuration - name: Initialize CodeQL id: init_codeql @@ -44,14 +48,15 @@ jobs: with: queries: security-and-quality - - name: Build - run: | - msbuild $env:Project_Path /p:Configuration=$env:Configuration /p:UapAppxPackageBuildMode=$env:Appx_Package_Build_Mode /p:AppxBundle=$env:Appx_Bundle /p:AppxPackageSigningEnabled=false /p:AppxBundlePlatforms="$env:Appx_Bundle_Platforms" + - name: Build application + id: build_app env: Appx_Bundle: Always Appx_Bundle_Platforms: x86|x64 Appx_Package_Build_Mode: StoreUpload Configuration: ${{ matrix.configuration }} + run: | + msbuild $env:Project_Path /p:Configuration=$env:Configuration /p:UapAppxPackageBuildMode=$env:Appx_Package_Build_Mode /p:AppxBundle=$env:Appx_Bundle /p:AppxPackageSigningEnabled=false /p:AppxBundlePlatforms="$env:Appx_Bundle_Platforms" - name: Perform CodeQL Analysis id: analyze_codeql From aeace53d957c53ef31a45908c22d13280bb33e92 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Wed, 13 Jan 2021 16:33:44 +0200 Subject: [PATCH 007/194] create CI-CD_DOCUMENTATION.md and add Dependabot entry --- CI-CD_DOCUMENTATION.md | 49 ++++++++++++++++++ .../CI-CD_DOCUMENTATION/Dependabot_PRs.png | Bin 0 -> 64548 bytes .../Dependabot_alert_page.png | Bin 0 -> 48809 bytes .../Dependabot_alerts_page.png | Bin 0 -> 25137 bytes .../Dependabot_dependency_graph.png | Bin 0 -> 53551 bytes .../Dependabot_log_page.png | Bin 0 -> 49583 bytes .../CI-CD_DOCUMENTATION/Dependabot_tab.png | Bin 0 -> 42873 bytes 7 files changed, 49 insertions(+) create mode 100644 CI-CD_DOCUMENTATION.md create mode 100644 ScreenShots/CI-CD_DOCUMENTATION/Dependabot_PRs.png create mode 100644 ScreenShots/CI-CD_DOCUMENTATION/Dependabot_alert_page.png create mode 100644 ScreenShots/CI-CD_DOCUMENTATION/Dependabot_alerts_page.png create mode 100644 ScreenShots/CI-CD_DOCUMENTATION/Dependabot_dependency_graph.png create mode 100644 ScreenShots/CI-CD_DOCUMENTATION/Dependabot_log_page.png create mode 100644 ScreenShots/CI-CD_DOCUMENTATION/Dependabot_tab.png diff --git a/CI-CD_DOCUMENTATION.md b/CI-CD_DOCUMENTATION.md new file mode 100644 index 000000000..f36455ef0 --- /dev/null +++ b/CI-CD_DOCUMENTATION.md @@ -0,0 +1,49 @@ +# Notepads CI/CD documentation + +* after merging the PR, the first run of the main workflow will not complete successfully, because it requires specific setup explained in this documentation + +## *. Set up Dependabot + +Dependabot is a GitHub native security tool that goes through the dependencies in your project and creates alerts, and PRs with updates when a new and/or non-vulnerable version is found. + +- for PRs with version updates, this pipeline comes pre-configured for all current dependency sources in your project, so at "Insights" tab -> "Dependency graph" -> "Dependabot", you should be able to see all tracked sources of dependencies, when they have been checked last and view a full log of the last check + +![Dependabot_tab](/ScreenShots/CI-CD_DOCUMENTATION/Dependabot_tab.png) + +![Dependabot_log_page](/ScreenShots/CI-CD_DOCUMENTATION/Dependabot_log_page.png) + +### Set up security alerts and updates +##### - GitHub, through Dependabot, also natively offers a security check for vulnerable dependencies + +1. Go to "Settings" tab of your repo + +2. Go to "Security&Analysis" section + +3. Click "Enable" for both "Dependabot alerts" and "Dependabot security updates" + +- By enabling "Dependabot alerts", you would be notified for any vulnerable dependencies in your project. At "Security" tab -> "Dependabot alerts", you can manage all alerts. By clicking on an alert, you would be able to see a detailed explanation of the vulnerability and a viable solution. + +![Dependabot_alerts_page](/ScreenShots/CI-CD_DOCUMENTATION/Dependabot_alerts_page.png) + +![Dependabot_alert_page](/ScreenShots/CI-CD_DOCUMENTATION/Dependabot_alert_page.png) + +- By enabling "Dependabot security updates", you authorize Dependabot to create PRs specifically for **security updates** + +![Dependabot_PRs](/ScreenShots/CI-CD_DOCUMENTATION/Dependabot_PRs.png) + +### Set up Dependency graph +##### - The "Dependency graph" option should be enabled by default for all public repos, but in case it isn't: + +1. Go to "Settings" tab of your repo + +2. Go to "Security&Analysis" section + +3. Click "Enable" for the "Dependency graph" option + +- this option enables the "Insights" tab -> "Dependency graph" section -> "Dependencies" tab, in which all the dependencies for the project are listed, under the different manifests they are included in + +![Dependabot_dependency_graph](/ScreenShots/CI-CD_DOCUMENTATION/Dependabot_dependency_graph.png) + +NOTE: **screenshots are only exemplary** + +
\ No newline at end of file diff --git a/ScreenShots/CI-CD_DOCUMENTATION/Dependabot_PRs.png b/ScreenShots/CI-CD_DOCUMENTATION/Dependabot_PRs.png new file mode 100644 index 0000000000000000000000000000000000000000..4de10713d09bf57c74ddbd765c8c63c4c1be9bfc GIT binary patch literal 64548 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

qkvPhE{{U{ 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 RY%5!=&)T0MoWAzQ{{jMVH1hxe literal 0 HcmV?d00001 diff --git a/ScreenShots/CI-CD_DOCUMENTATION/Dependabot_tab.png b/ScreenShots/CI-CD_DOCUMENTATION/Dependabot_tab.png new file mode 100644 index 0000000000000000000000000000000000000000..b6a2129b1ed549bf6a4719f29bb8484c73ece60d GIT binary patch literal 42873 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

=yRY8@n{%wq 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 CJi>hd literal 0 HcmV?d00001 From 80acb4289500d55f2f0d059e8ed0ce8b847e32a0 Mon Sep 17 00:00:00 2001 From: Svetoslav Zlatkov <62066501+szlatkow@users.noreply.github.com> Date: Fri, 15 Jan 2021 12:44:46 +0200 Subject: [PATCH 008/194] Add SonarCloud. (#4) * Add SonarCloud and Testspace. --- .github/workflows/main.yml | 98 ++++++++++++++++++++++++++++++++++++++ CI-CD Documentation.md | 52 ++++++++++++++++++++ 2 files changed, 150 insertions(+) create mode 100644 .github/workflows/main.yml create mode 100644 CI-CD Documentation.md diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 000000000..ad15a6143 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,98 @@ +name: Build + +on: [push, pull_request, workflow_dispatch] + +jobs: + + build: + + strategy: + matrix: + configuration: [Debug, Release] + env: + Solution_Name: src\Notepads.sln + Project_Path: src\Notepads\Notepads.csproj + + runs-on: windows-latest + steps: + + - name: Set up JDK 11 + id: Setup_JDK + uses: actions/setup-java@v1 + with: + java-version: 1.11 + - uses: actions/checkout@v2 + with: + fetch-depth: 50 + + - if: github.event_name == 'push' + name: Cache SonarCloud packages + id: cache_sonar_packages + uses: actions/cache@v1 + with: + path: ~\sonar\cache + key: ${{ runner.os }}-sonar + restore-keys: ${{ runner.os }}-sonar + + - if: github.event_name == 'push' + name: Cache SonarCloud scanner + id: cache_sonar_scanner + uses: actions/cache@v1 + with: + path: .\.sonar\scanner + key: ${{ runner.os }}-sonar-scanner + restore-keys: ${{ runner.os }}-sonar-scanner + + - if: github.event_name == 'push' && steps.cache_sonar_scanner.outputs.cache-hit != 'true' + name: Install SonarCloud scanner + id: install_sonar_scanner + shell: powershell + run: | + New-Item -Path .\.sonar\scanner -ItemType Directory + dotnet tool update dotnet-sonarscanner --tool-path .\.sonar\scanner + + - if: github.event_name == 'push' + name: Lowercase string generator + id: lowercase_string_gen + shell: powershell + run: | + $LOWERCASE_OWNER = "${{ github.repository_owner }}".ToLower() + echo "::set-output name=owner_name::$LOWERCASE_OWNER" + + - if: github.event_name == 'push' + name: Initialize SonarCloud scanner + id: init_sonar_scanner + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + shell: powershell + run: .\.sonar\scanner\dotnet-sonarscanner begin /k:"${{ github.repository_owner }}_${{ github.event.repository.name }}" /o:"${{ steps.lowercase_string_gen.outputs.owner_name }}" /d:sonar.login="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" + + # Add MSBuild to the PATH: https://github.com/microsoft/setup-msbuild + - name: Setup MSBuild + id: setup_msbuild + uses: microsoft/setup-msbuild@v1 + + - name: Restore the application + id: restore_application + run: msbuild $env:Solution_Name /t:Restore /p:Configuration=$env:Configuration + env: + Configuration: ${{ matrix.configuration }} + + - name: Build + id: build_app + run: | + msbuild $env:Project_Path /p:Configuration=$env:Configuration /p:UapAppxPackageBuildMode=$env:Appx_Package_Build_Mode /p:AppxBundle=$env:Appx_Bundle /p:AppxPackageSigningEnabled=false /p:AppxBundlePlatforms="$env:Appx_Bundle_Platforms" + env: + Appx_Bundle: Always + Appx_Bundle_Platforms: x86|x64 + Appx_Package_Build_Mode: StoreUpload + Configuration: ${{ matrix.configuration }} + + - name: Send SonarCloud results + id: send_sonar_results + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + shell: powershell + run: .\.sonar\scanner\dotnet-sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN }}" diff --git a/CI-CD Documentation.md b/CI-CD Documentation.md new file mode 100644 index 000000000..a3f6ac1e2 --- /dev/null +++ b/CI-CD Documentation.md @@ -0,0 +1,52 @@ +# Bogus CI/CD documentation + +* after merging the PR, the first run of the main workflow will not complete successfully, because it requires specific setup explained in this documentation + + +## 1. Set up SonarCloud + +SonarCloud is a cloud-based code quality and security service. + +1. Go to https://sonarcloud.io/ + +2. Click the "Log in" button and create a new account or connect with GitHub account (recommended). + +3. At the top right corner click the "+" sign. + +4. From the dropdown select "Create new Organization". + +5. Click the button "Choose an organization on Github". + +6. Select an account for your organization setup. + +7. On **Repository Access** select "Only select repositories" and select your project and click the "Save" button. + +8. On the "Create organization page" don't change your **Key** and click "Continue". + +9. Select the Free plan then click the "Create Organization" button to finalize the creation of your Organization. + +10. From the dropdown select "Analyze new project". + +11. Select the "Bogus" project and click "Set Up" button at the top right corner. + +12. Under the "Choose another analysis method" sign click the "With Github Actions" sign. + +13. Copy the Name of the token and the Value and use them on step "16". + +14. To Create a secret on GitHub click the fast forward button **Settings>Secrets** . + +15. Then click "New Repository secret" + +16. Enter the "Name" and the "Value" and click **Add Secret**. + +17. No further steps are required for this setup. + +18. Run manually your workflow one time to deliver the code to SonarCloud. + +19. In order to set a "Quality gate" follow the next steps. + +19. After the run go to the Project page. + +20. Click on the button "Set new code definition" and select "Previous version". + +21. Manually run the workflow and there you have set a Quality gate. \ No newline at end of file From 566e61c9d24d5c09720926e660a5f74139b18f10 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 18 Jan 2021 11:30:48 +0200 Subject: [PATCH 009/194] add CodeQL entry to documentation --- CI-CD_DOCUMENTATION.md | 24 +++++++++++++++++- .../CI-CD_DOCUMENTATION/CodeQL_alert_page.png | Bin 0 -> 55356 bytes .../CI-CD_DOCUMENTATION/CodeQL_results.png | Bin 0 -> 56671 bytes 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 ScreenShots/CI-CD_DOCUMENTATION/CodeQL_alert_page.png create mode 100644 ScreenShots/CI-CD_DOCUMENTATION/CodeQL_results.png diff --git a/CI-CD_DOCUMENTATION.md b/CI-CD_DOCUMENTATION.md index f36455ef0..d70745b40 100644 --- a/CI-CD_DOCUMENTATION.md +++ b/CI-CD_DOCUMENTATION.md @@ -46,4 +46,26 @@ Dependabot is a GitHub native security tool that goes through the dependencies i NOTE: **screenshots are only exemplary** -
\ No newline at end of file +
+ +## *. CodeQL + +CodeQL is GitHub's own industry-leading semantic code analysis engine. CodeQL requires no setup, because it comes fully pre-configured by us. + +To activate it and see its results, only a push commit or a merge of a PR to the default branch of your repository, is required. + +We've also configured CodeQL to run on schedule, so every day at 8:00AM UTC, it automatically test the code. + +- you can see the results here at **Security** tab -> **Code scanning alerts** -> **CodeQL**: + +![CodeQL_results](/ScreenShots/CI-CD_DOCUMENTATION/CodeQL_results.png) + +- on the page of each result, you can see an explanation of what the problem is and also one or more solutions: + +![CodeQL_alert_page](/ScreenShots/CI-CD_DOCUMENTATION/CodeQL_alert_page.png) + +NOTE: **screenshots are only exemplary** + +# + +Built with ❤ by [Pipeline Foundation](http://pipeline.foundation) \ No newline at end of file diff --git a/ScreenShots/CI-CD_DOCUMENTATION/CodeQL_alert_page.png b/ScreenShots/CI-CD_DOCUMENTATION/CodeQL_alert_page.png new file mode 100644 index 0000000000000000000000000000000000000000..59020bbccdbc306c60c975c729f1be74a70e16e0 GIT binary patch literal 55356 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 literal 0 HcmV?d00001 diff --git a/ScreenShots/CI-CD_DOCUMENTATION/CodeQL_results.png b/ScreenShots/CI-CD_DOCUMENTATION/CodeQL_results.png new file mode 100644 index 0000000000000000000000000000000000000000..8848b0db9e232a9c7f6f94073f860b8cb142df76 GIT binary patch literal 56671 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
0n4`+Rk5 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 du+jd&giDNr;0_(}E>eQ;{d}&oC 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 czUShZOuCz*h^*Zk>@> Date: Mon, 18 Jan 2021 13:26:30 +0200 Subject: [PATCH 010/194] add Manual workflow run entry to documentation --- CI-CD_DOCUMENTATION.md | 18 ++++++++++++++++++ .../Actions_workflow_dispatch.png | Bin 0 -> 46999 bytes 2 files changed, 18 insertions(+) create mode 100644 ScreenShots/CI-CD_DOCUMENTATION/Actions_workflow_dispatch.png diff --git a/CI-CD_DOCUMENTATION.md b/CI-CD_DOCUMENTATION.md index d70745b40..ef71b2020 100644 --- a/CI-CD_DOCUMENTATION.md +++ b/CI-CD_DOCUMENTATION.md @@ -2,6 +2,24 @@ * after merging the PR, the first run of the main workflow will not complete successfully, because it requires specific setup explained in this documentation +## *. Run workflow manually + +Once you've set up all the steps above correctly, you should be able to successfully complete a manual execution of the main workflow "Notepads CI/CD Pipeline". + + 1. Go to GitHub project -> "Actions" tab + + 2. From the "Workflows" list on the left, click on "Notepads CI/CD Pipeline" + + 3. On the right, next to the "This workflow has a workflow_dispatch event trigger" label, click on the "Run workflow" dropdown, make sure the **master** branch is selected in the "Use workflow from" dropdown and click the "Run workflow" button + +![Actions_workflow_dispatch](/ScreenShots/CI-CD_DOCUMENTATION/Actions_workflow_dispatch.png) + + 4. Once the workflow run has completed successfully, move on to the next step of the documentation + +NOTE: **screenshots are only exemplary** + +
+ ## *. Set up Dependabot Dependabot is a GitHub native security tool that goes through the dependencies in your project and creates alerts, and PRs with updates when a new and/or non-vulnerable version is found. diff --git a/ScreenShots/CI-CD_DOCUMENTATION/Actions_workflow_dispatch.png b/ScreenShots/CI-CD_DOCUMENTATION/Actions_workflow_dispatch.png new file mode 100644 index 0000000000000000000000000000000000000000..4f3c3636b4548fcf36f07be3562051f02cc80bb8 GIT binary patch literal 46999 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%0A}1zzHI4~DRu7__ zElvejKDPIIoy|6+iMB*GQA@o--X8#8TDdFFwDeTz`9vWW9img++-U>x3tpp?n58mk zVpaj53#3RTjzQN*fuUCQOOeHq8JCcyM{=WOp&jlP;jS-3$FY`I;Qk5gZT6lV>;x{{ z)oaU}Yc3i*pVP}D_6(Wqx63{4P~OJU&-d4&!iyVHlGjU`W^g$B@gK`Xky(PErOkTX z7iy;g>hA}cr1pr0e)e&i2?`Wezz1=CY9sRZJdgZ~XRYF@1iaklfz;$2;0Sw5sN>ctKHhx@mRh zBg!wRHlKcN5|-TL;Y6%?Ogumu+;l!ayIc4&E=6l>R2f)UGO%T=vQ zMOL{_0lzZ>J_S*JXBYiF;wT{)bc<4m!6_!({z*<92{5paz`*!ZvT`l&Vzo=2}$vI2` z_@rej%Ju9hFsGUD10EtcAJD_|W<75MW@S!D^M*JuC=elN zVi*8fB45nh9q(5Q&o#v_bw2cP=Y8#xTOa$%P<{>qeCb0(F{uR`%Bz=_(0;Z&!2V3r zC#+#U7OX5o@V67b*oFRBDbwzf+<-$==ujIXqBwq|?jrW!Y15peI47gECL5RrJWxX( zsF2?2ctH&Rr8SZHl@g^X@Ob?NQ?3;~g%50AX=TZyKiTF;h@pq=SqU5Re@KS8G{kc2 zX58|i70R!T|F+o{%pBQ%G!%934;>pp(EUETPF$eXd{+$G5e(FCXHx-mi%pUo_W$wf zMbeFRcxNMg6Mm`d$Nuflk7JZLKnHx*9I)8cXP>tjC&nNIhTYR?fKGA_z!Qe`@IdtI zrIByKQzEkzbxxDlNY0w-5S7T1i|w#yjNAr^xSCp|N2+w?D6-=hvcNAC;3T0=zOthN zy_N|Zz7wnkk8DiuDYoQj`~J)Ru72;;`@vKkuwIUnr}6i!+CA^5rb2Sti9x{;Z%uF% zL#4fB(5-2mZXd-v(GQ&nfYXtQK6*KrNX>(4Dv)%Hu(SOS!PPW$Qcn2_U-kFw!P)kO z8FU&pc3)hQ+$7FFFU2=vfgE#XV}d+UR=m{zMNrl%8;g>%qMP(Xp?Fslf#+j5w(HnF zubiuZg5EP?>AuHrui}~E1!T`|h;Nc|AjF%TdZcU?E!t<^!XZN*@LT`vEUQ;5p9ZpZlODCwm{Q&={rzhckUsJuL5Lb3gM%}r7A@< zxfd(7%!WHuS~}S8mqVvf&oUpo(I3kf%xGn3isOFbgRGJbAE>Ze<3y52MFh$Z1(y*0 z$Q0_D$!C@@4pTgX4fgYBg7s`X;QV=E!y@q@t~Q3$kNiIL!nMo*8p3mnbs|D}W@J)L zW6Nhmm`Bkmq$sAz&FuXh(xY0}V@fq83j1t_I+?mMo{5^oX8X@A$YEjMQlZ8w?JQYE$iK#3Ijde1$0HmaNOW=uSZ{2 zMVr_s%+*H4P9@zsJj>9RTMWA~f<*JwK>EMzzTyCB2U-$+Gu;k?s72*niLR9>qYYXAq%? z1GIp6xGKccm61tXj`055Ch^p}2F_I6KZhTw0bUWFM`=lNLC~i7lWZ!Spwxy0oL5Qs z$Y_f(a@%j4$@+4T(64)J`$oMf7US*(ZJ%C1_Y^)h;1pZd0|IR-PYp`z;lm-|>5N?}Ez+NDE=zd*wK0ksq!1pCl}kl?86L z^s>zV2z=~zU)p2PGz8TmDJDJd?kaDFTbh=ToED$Cx%J%fmAg7oIj&U%u=_%e1Len* zy`A%vtECR#E9Q6wvyMS$^Zkhq$MoQ@HjJ)Ht38+>Bk%u&=B0f!tqAvK<=fVJu>QvP zNN(Na{#fAd73sq+tj7^|{8rkekKgu?>ah}AsYqtEL3MalY(i>EfzYQD`hu*}HAd6= zTm{b51DT;$mEX+Jfy)GVZm)ORjxafLv{c)|V*kbM!8cqv#ymN)IVjr}C}56jkl6F{ zhOMR06bMPgGvM=MS@`+BGrk0v@t}63CZ9eZkD9IC8~44ZCL;WfB$mI}YKcBgvAzF} z3B8H_-0i{B(QL)T3nlFwP zh1BI3EiL@18e&;l>G4frUW2~?k|6v~-E^8$SO%l75C+9v?=6PAzLdqpSnh+HW+U~o;Y!JCC<`C^Y< z(S5}U?r0GmhOR=I?lLtpEgtfsM~0)R%|#A&F?BQfIJ1xUO?G!G^OY-=zbbMnoS_M2 z1TCf>_&v@GwIep@tZ6OA_S>lT`Y+fy6l8fZ2!xqcSx>VyBPmKNI1&7s;O-P5yrlIW z2dXs+5~#wjzXUc_r2P%<=Vw3(m(Sx}eudpHwO7EC(VP^LO$olp5Nxf!HFvl58OCM1 z6R!2s@S&RVPs5~{-;f72xFXR-1>0E%F2Mqb<%|7A+Y{^?Ioi%!*VsDwUO*X+f8b10 zS}f=b`yUa~%f%OlTsyNH*Uz&l#h@$r3NZBFg>=%=T1xf~NVea8!2|D;OpE-~Np_}Q z3XL|KAKu;pi_B2}33%E=XhJ8d7R&E|K*bW*e@R($b0mZdEYiROGoonWgf@N$=-oF> z%%|}Ue_Pge6M0^N<)+Fz#aWLi?TujnEwjZ9Z+_^bk;UO#j~2>se1y4i9`}m*)yOok zZ-E1_ZmE;&lJ19V4ZD%eC+F1~0B}GbIOi0nZ$T$bj*mg2ojDMKlRrfv-U<(oS{?(0 zuWlYbC*l;VY@X+Ya{qbj8dcU+J#g()LJ@q0rvl#mm#8laL@4%y*Rhb-6+&r>uH6sz zyqyQsDloSHDEY^>}f= zh97e}7BzJ(%Vo-aE{O6HZKx12#AZQEYGlat{O!;gd*exEERj%C|DO|XSliNvr#ZBL zDsh-dksnq8`Ldb$yuV<2ECVCQ^Z$4J-!3VT-vCuGR)vpi%P6n0oeEaw?91UL3V~BA zJvs?I%$EDRME7kxoJdz)uR{V*9x5Pva*IGND>BGV7x_t)d zc~Zvrd4D&nr|O&8H|NCabKE)Ck-HiW$Og7_HV4H`1tJw6$>S2^PRyi_q1!%egRhY# z3$0Za>OIGpkfGquLTKHNxe8SK<5yZx_+QCXMGj}9Iy79QUZd1Q0AWAE4O zzFDKHP{wxb%hP6zuF3Yseacu$9rsz+#9Q%SA@Xv{_e%;ReNWbyQV?`tpy-@YEn$Am zSG`Wpk)^3UOvnePZJ#noOQ-wDfDeXu7H3R)X$bZHljtl|C@doaVB$F7_R9KX;u@k{ z2Cs!^68Bk($tb0KMrIs4&(5iyk#W{>zZ!b@(beaRUl}> zzK*y1Wr7#CdO&TE$vA=AGl__xQOwC zzzK^YBV9p|YV3YUo|7U6dn}Mmi$7TCm*Wd&6=?s#pjeORl@)ssfM0OTIZk<_O6y)m zM+6{IXa4BDmej;ScGu%Jrj!F&oJxmx><2w0SrOTk<5sZCSb zErs|F5I(M5j9AKW7*VUWyq5JnhWEkkh*xvscBEGb=-*~bWWSDCW$yITXb=+RLYN@I zGTW~Z9h|n~iDlQTGJdVc6N5hP`VfriVy;c2JLC75HzFb zYSF~@^O~*9jlPOk`LTER;u-tIg7L3Ki8Hmf8uZf-iZlf#VJS4O5NyAs+PzAUx0Y>} zS#N)p6Ev^$M;?DMDFCdKSOpd-MI(PS9RGx#u-=GlGXj2hvc)^rO;W(@mN{egb1J6& zlr2H)5puR&x-G%>k(0-!faGZ7}8juE1fe!w=4DjUvIsA%cK1#C5h!t_#JQ)2W$uZ_=gMnmE@!$AL;GxOC zpeX$^cnNo5ez=|8}~sa1=EL?55{Y+Cxb)caO{zNpIXMQ#G$N( z;k3viU-cC2hOpWC{7p8(sO8RZJRooYhC!G5aRD5CUVsC-VdrcF;&f=E4g|LefDa z&!uFw9HT+i2tZS@;n!zG`&@W=Lx1q5Lqt^Q2RF`=kmIgwf_~zhAo&)8=bHhzPG5P- z8#sM``}TUz8xTn6Kzl~~kQ{nUce63S!vC4e)dGyK@n)>JXU{=n$eV{qj(*_~lR6*4 z_>WFKPZ@A^G0!B!Lg&2b8$+vd4n(AVo`nd;j@aV^4exbLwS}igZ#!nMd?KRV=Eu~fP*wvC0g z{cg6FH$(Zze^YEbY|#3`#;D81W~^1e*L-Jxr2=nnZ<3Y(7P;j8zbA|)=-(2B**uYn z{47~WP~G2thaV$OKwm^y{pc%ew$x`XTGjEMz4(ZD#_t66LHRQgKnL_&mf8L6iR2^2 zvJGYZef2Pr8^QEE@F1RvK4(O|eOZh{4^`EthAL%Qqi_t(=*>NWu5q0a88>^a_bh4M z3SYxNbUZ;9)jao=~R9ihCX2jivpfJA&e79G#$b#wTH- zlt^dsKe~0{Xc7N_?38RHXUUdHU+VfE9?tC7Em5Zk)ott-CmN}B39*hy*VJ?2fWFy9 zR#rsYvTYt>ZS4Yfeb1Ai9<6T-JE>&$8#X4RPI{3}mrM~yidzp0GOmF{6x-i9#t5*P zDh(?twrggWW2`H61p;w<<-=Na-r9cE`5Vac4RKvL@Owi`1m9ao0!DHFz%Le+;NGlc z?etz0ZmQF+V7w0+YzdCUk^r@DRWV$+U|}_c9krJs4CJk1wr)QpbE0ZyW2KA7CuQBv zQ#>dP`3d&b(HX1O7Y9fLZRE>XJPK{Wz^61)ls<*STwOwuJ0rnzYbPqOnH4vGnKoke zB zx}Lwrl%4;A%~(SVf7sjDq{Nu=k`yR4l!WkWZ}O;cSW~IP#BF&ZGL6S^N8GjMXUJHW z;XNL|5ZIRI8R@eyWj@ek=}Y9}c3gnVumPn4l+s1|#_9HDV8PyCl8l4>kCPWm5r_^K zB-?bHQNXmm%L&r2JlVWk zh6~ot&+)t+D+Vh-$`=gTY&*K+nT~z#QiA`LYd_1>j3&VEg8eEv2Yv$pJLy$m9vm+^ zsHDa?SIas&2v_^(umis#KsW6kU=WSBYIde`(Y+x%H<$#$f4*`)lb7M#tJqC`6RPGY z;U(?};J_P|*m*vMR+SJ(DTd$|8Uvhj{^WcSn4=XXBnXH9V;S(A=^qz;_gEV%`_T!0 z^(SFZIY4Ag!Ey@ad)JN2w|)VMAY-e73 zb}8%=mt=GR{x&jmZ!a4pT^<@=4L>7N6GN$&Ug zU@iWf%oK|Cv)bhJz9>SRh_W`<4cqjL`+wk@>slf1VfZg0SZ49x7_y6J#I?b)EhukQ zvU5P0FjVb^jJ-^Vq3`C-HKE}!{ahikzt`S$x-*4)91dgI>}6vOOMEpbGcuh+63dGrkWS!&`Q zC`xybGInw4E5SlD_v4lqGfs19bK~~vrKfAYeADj4UeRbSjB|>dvF;27)*WM4ZSs{| zaH}orpWUYx9773x1(Ro?PF{2tAo+86l#hl;oZuXipZj-b zvxH|m0|ihFCEwY|#Yw{s>h{f+7YvhYhU89q2R1`2qe0AFS0&%mw`{F>$5jOksMV@c z>D~DcB>?cHehP^^-e8@iZ~Qi^ULZU~c6XuPYyBRmLfNTzfb4%i%b%dYC^P;d!4+smaj!r)$S@kl#;C zaj+!4^*c~ek8!uk?Q_gLlzG4f)qc>U)N#~O7+NGwp3im!kJ6Scl z!39BfXY4u8(z6`Ypb%sq;@j&5x~rE$MY4}zW#^Fr@Psq~wuHqaVhQB<9zk#HU4}KY z8ebhmFZp+5NT`*C+QE0=faiaxGwkVgkca@$CK@!>U2U(Z0*!1L$8n#dga0#dNyu@q zlOVaK6EEowu=wawSngBvBLdpPBClmu!uU?_GMRrIw%WP8;#v<-XLkEe)m5f6PWWA7 z2LBQNECA1Usg<|h$10wgKDh^;HX?A``ND_2OiO&wAS@5a#g$wc%PXTa8!r+zGvG({y7;2u;U z&h+?&1=Rd6h`XkoALrr&awY@tqetlZ_mTCEQx~tF6DIeOoV+NDZuNonvaXyH=89Vg zsUVKBZ<{+OJZqS(j`v7d(#%hM^akkd{YRi5iGj@)`~6+mYH|-yO26EC!IK%|AD&#F zf>QfQ&IvQEmw8Q`=ZQap8FRgLkyY?FK)vq#W%F#1mHi`0{2vMUv7RTXJCWjCc*@W* z>wixicv-z_Ui`aoq}v4H_s8#v|L|o0ho|;5Doa_Ozd9Mk>m&&GM<}-Ke}pm;1Ng-^ z^M_5GdH^hyTmG*E{Qk5Z{V{mT0Gs%KW}Sb?iWisucVVW^e^>S&o@~`%%b9=lA!PDT zMK5fyDp)ZJ25$TL2e3Qnmjltmr@FUFvXdgQc*q?aTK?pCIup-zG!Z*(Q`S; zVsMVQ{~nKS%`6LIP{Zt_=S4{Jcmx09`*1iC-u6#NN$#RjfeyF*1ZxDG2C3_G{f8)BjL(@dwwl*! z9h^hFDZMD(pnmrraaeXDf;DWF4s5!YsVjDWd_tDkv^OA@Yj`mj2Zdn5f}t`*bMcD% zrq}opD_ip{$s;64oL~i5FvpZLaoPY^qC0n+Ptz2ILJsK-&Q3Hwo+s@Lz+IhY{mGda zKu(BdX6oi>3?Rh6!?if}Cz#j!XklTUcU)Rz{Yo4D{Gngoh`%2j^bvmZV7Fu{bEA04 zxHqR4f9z7a+2P^Aw5c$tH>0&C2{$gT4|lh=mB3Q!+6f;VrC<9@TWHHu8AK;tl3oqfv(ooH{R4eZ~-yoNA|C29Rl zD9X!C9Tle)A_x*FO@V;h`BvcKM86e&m_3_rxP&;ow$?sBNRgO8r`+FmuAbfc z1`#xu$XgvXxh7WGa?UXI^evS1vhAiIzBeJOnzzc^CvdlY95~nqn`b6FOLVu3U3?L1 zNW|ii^nL{eTjpzLUHPn!{(E~poBAQg%+&JnvPJu~i)dw~TU=g&akkqebL!b#V^T(s zb*?$>PS(OR_S0q$vQO?ZSD);9{3AY_Wv~CT7+axFvQH~LmCrgHr1I~~H1YWEmBNMH z8<0~vy0m6Ax8>2(oM3*qF1+;f`M7V5*o$J@qW`1#?vzLJ{nDolm6Jv9=E_MIBWu1$ z1$A1Gm(4lML?p5Yqx;nhc!ucTb%3yHWAANa01Ot4Kc5Z2op0t!9llt0V=%U(Vi$;a zxDQ%>SyrOov#?Od$i)kGIWb6)`>D$kYjq{rgz=7Y(<<)juGEYd%LkM7R!C?4efpcq z(rDhEas_QTU$s=j)eYEGaNzuQx__Ggjkcp@Utw3HTS{>o6=7ean^?Jn6zL|Fyqjjb zcVpj9NS?G|emHbxd3GdD{Axnt@*Q|15gk1|HT~S#CXpp9-~FgY>ErfJE!UOg;^d1b zzIW8&YFCa`QlBPd8|a|)KhRZ?)_ck9DzH>kdo(XZ@l3iehOY@@u5Rhp^&i1@ZvV`|3vOR?Ag-CCKNx_z!~7eU+Yh^G z>oQJ1=m%w+rxmnMI6K8O*Um9{&NoDH1vi)5X1%f%J>o|_h&;Tznypi*e*1U+g#DFc zIIUaAj@jp|8^O9){6aE%^M;T1SdAq#KWzO3x~THz`qf5cfCo4IV0_te+b$&w zFx22+@9=_q&Hq;%l(}IOB%=1*!<-zKr9hDBTGcF8GT)*YwGlQ4wr)QejeH})TS0YW z_;utP5?ejL!jfbwHY_E1$VQ1^yYytIm`=s&(6^Z12^tJCF&^Z3PIOh|Xf8Oho4Z*Uq*}+S zHcX^c%+RZ>pHI5!ZT3Fv<5?S0)o4R$l;2fFJK?e9M0cJUJ_Ey?5{16Q>GZ`IIud@j zUe^8iIdf8FmF(J{`HF~YvsKxnaYP;Qm0}CGe+En?4t9y`_>-|4>DOYtl`nHlk5pF= za9Q&V#XR~wt)wLkAGIPks2*0f(rA7t7#xpMA%+L@#yDRm(@2DoA3rBuwxMN5UhO>l zE?4+${Dyz*6e>7PEn4C|gnc{cuFgK)GDxN6{tQoyH`NAJ!OtcJAoX%ukmGdumQv#9 zPN5H8DBAUnwR~Z6)7vQDGdj;re(Kvb1piwh4WIfTpHrEqDa+DlPyoQY=O zdLEM6OvZ&Jo$G4Lr~_ATdGvl6GKdTlU%QfVU5lJ^|y-sYrhPJgsT()7yu zp7g~4T>Mrs!l#vqPdlU*9@rT1Y*Qm<0Zi_u+`;0^Kj3ca!_fu86DFe;^)gNN6TeRr z`4w;NeD9LmA_s5Qu#PwjwhwL=-)ET18{27DRUN%gQ?%z4jCst zyU%Crle0&sw!6%ho&RXjf6^mD6xW{fVi^13xGP%U5wN`;_V}sVzB*|V{^rcE+V@C^T&r7z@SY@1g9hNGPX zQE=%_f1OR`iH(uXQF6{!JpGLFF_AOo2;=E%bg8x;yCZ zkritD=2Ql*aT?|sZi0)eif`b~6Vwhw?UH5lU}Wh-!d~VK;5t0dQ)I}n2X@-1MV)Zc z)pp=CaE%}TKMs_Hrr{V#fiITrm(8IjI;Sx@O_k4`t@pRXhV+nPk6u^=8D0hsDfmdS z9M8b*_MffMd6{&}Q@DIAKpj92P%5N8LC`Mq3GIpgKVp&7Onlx)9Kr2weV zUEy>TzO?gcO2X_ot$`xsMSJEuL5sTUQ3X9qqv(o4T@;YXt~$yicMmDDIwW=bw141{ zEqQ(`^TyANot>QQD>f#%+aV6(-xQc%=9k8LGntSTegU_f7ixpeZvRysQN9CZ!B3$>u`qH3S!m6jXLf)DXrVt?!jT+qBT%i7z;%Tx*L%zW* zqhzHWKkXllGF9@JBDi%o^3huUHrhLGlJ3Y3DN;X^f4ER5{B_T}s9;ZOKSRRu_HhII z%37@ua))bK(^_F%XIw-_yK4(Ad$gf0?s2JccZ*cmpj3Hhc+AN_WAG>rr3 zn5OW>Xco);~eV!rTw^fOdl21i&@VY8tWgCT+!X23+8Fow2)Z7 zD!rDgC_8m30Geb9H@kUiUN_T!y<*R4MzQJEhXBM=|LER>DN5BT zFV=$E7#{ofFxj;?C4iQL6Z(m1-ShqdMcEmj8Rrt{e1Ugdpyi=*?CKxBQa**OW}=^0 zide2nHS0)ESTL&?9;^q*&RdpZ}ee!i$#fP>w z8rKjUPPI;)HjkgwYG-P&MCh|teBx{F>_>D6?rSHiIjTXg$WlIN8c4W@OY{uGnl5$+ zy_?wsw=Gv>xqD>DAq2>5w-ZxEsG3Vy*2-2SV?JWSu#`iy5}tAkykS?!RPt=VC#%OD zI=aDQoI~b1!K0OT3WZZz`=l0jZ614h^d|XIqN7sw$I8dK<>@#yEDA8oVGZ!FW~|s> zfH^h?C7~B4sHI)9q4|!0a+3x%Tg9fDwIKhENe*MG z%wsX9;QfLf&GIz;_aL4ovClH z^JKq9>BDK}ViTQx35B?C599b&fBb#(&|5C2e0_ELhu?nl^fzKI1C`CCgx>XSfX{rI zKD8-@bbpR7itbkLtY0AUUp6tdc-!SevGIY2$6b1n!+)zpI%H8$P)DHPQ8V3-YG6rh z2>u^z;lVG7Ng&?`W1lLw(SLAZPL11itq&7eQ&>($&MSM%Yj zVEm`aP+F&mjF9qoAgRf_lV;^s<%j{$Sh%fk_^HX%k?sWq)XI{un&4SLbArbLo~}G} zspfJCyuNNSGdpkFm?nJ3-<59hVL8P-Q$TU^O@nI>{A1^;@IB;Nr&oq@iQ>`ZI5_D% zUP|5C|4e5DroYU{+&p9M_#V=N7+pSF#p%EPFH}Zy&AMi?#Zncp;IcawXyhZ`Ndfvo-#S=)3=aF;(8Vf!%!pY-*A?zl)Olq>uram;bCl?)oRawm(4E-&$b1{?d`*662ZHZ$J|I!KBvs zUXr>!eJi<-xCh*1TOzh5s6j;b1uSWfjxZ_eG9g#j4Szh-T(j<~$8;j;(sE!ous$u=EE-G}QHSLu`zlF`hYo@Jg>IAsbZCM1 zNCXA&_D9_yKIk<|(dijKt) zujyYhmw$K1vySP0d%h@@+ol2cp#iBoU8_}BbUDFeG4?EML5`QE#1A=&MM>|dbF{U5 zCw@ARlB~#IWbfWgk5O6>MWQamO!hy;jCsM>ExVaJ8b$-W*3+#S9veV%MwII}+|&i} ze=_5qE*Suv3dESXr~4J-!ju)3r!44qyl&Iu6dkQ{QMpX>WpNB1Z25j#5AVImZuewE zZ?Ii&`u|va^LVJg_kVb13`WREmdKV$Wsk@{2o<6Q*_CW%P4;bMNm)u{XGD>*lbx9; z$~Ly_jD5(y@8dqB_xt<#eLwf_pZoE+|21Ccb9(Aw+k28AT;g_kE5L{doig6M}o zACglxE}Q~bqBt9QNB$22YbI63l{|25#7wv2UMY+BG1YZchTdALs!Tnv)Hr>!TxZ}u4C=~f7Vz!0-?&&yQZwJuULiH79cW=2uO9Gn?5~iz zcxN2N0A{MA3;@n67mkqZ?}h(->wR^3rz`3K$%~IUT^6A{5nfjik=(!2`sqqUdIB9> z=PyP+eiI4sS4j*XEyS!Q?c70gqr&vMb;~zxlXw}{QyJuT#KYW!kRk#nI>9IzS%IplXHt_Z|ZttE`+cK-vZtf@U z?Ebv&&u+d^QLP>Xj;ykXe_Merh_6oQEtMg_9lGZ-?Mv8|ERU2_I6iBN( zx1WUH*`=*gyz$3BMijSr{qWqd&m;-I?w)xle!#nAo9;(_@Nr&$;^51y|G#iIj_&wB zL4v>7ahCg+Z?0t}Q(zv?^3kuCnf3y|&4qSfVi4Oi>1z=YnqL*pw`PccAk6Uc0 zcaSb6OQ-Eg^kcJ0ZR`HG2sT5KMTaH3_qzzM{xWB9T+kzwzF+1jLUN!khPd)X_hSb) z*KbY86%YDIFQ>V@sNXO&&ftkags+%WtYaU%hod5F-F)wiJR9~pLqm-^qgsf-q{lgO zVByciu+XKC?;W>vsaUAgu0wfzy$Ul>FCi2U&!BlvQrz=!)%@cagdOIl8A_md;Lp-V zH)_#G-LR+beDdnSr{DO*|LNAhQE5fa$2^zDl(K=wft=0PF{M18F3a{nGjA%0MQ+6u z^ch<6Phgn~^s$p)A=}UzL~-&l1VxqLbAw|Se7(-u47z;(Kg#R_tCt+Bm2Lf9vB_u9 zN-v=YXIAQKL-tbBxK}r|$89z&GyU)0_r(;yMi1&Y?B4x?wIrkFH>oxeX!7oEiyh?R z=@F6-P*}xvheGFx^E5n&p6b;!y($VuR4rpMRl{mT0-NYsl7uvxCD5KrQ$q|zUpj@7 zyK1V%YTB>M^&3(nVB!(%v?lFaz5Gg;d=ey7S(`jNcd*OkKfkUO!ilL3^)l(oyo}{QO0x?QmnOD~jnNCNDB4@GRJLaX4o9;f{4Ibrn+Zy`5C*-4G9#Zh1mtP^7iz2*3pzn<@D^RU z_d3TJsxqmchawPk<}ch_NN1uO=WM>>&c!V4hop@O?krCI()Wx9RGt$(DGw-LLa10M zuI4GWK6An}_;PGHe=7<=!G9mTPvu00LX{4)f1uO+r$~AmHAj(^K-seOCpZ6zy=@#p z+)G?PM!SloAo(V`jyWE09*;a)xlM2Udr;V01ic)=#_-BWZ}S7!!3&+&PpEFkaUE0# zIzv#Kvx61X@?D>wlQv(Ie$Ix)6a4p?)*m)E+nP5nj+7g`*ppnGxQ{H);oJ)B;erjZ zQXOQRpm^y0Ii94;rF%$w6f(Pya2jEU0@MA3%y>{dWx1}gK6oL7I^$c?r9jW+43M(#yJCR-WcVx$Zt&4iHoqni3+p+TT~U#}lF&KoqIE6SDHd{;`u;qi?Fg<y3f?PPn*7+gl*g4;W~k4ruu_%?PO8m1~_^Tq|FS#+;cXwHpYV?`jZIp?}I|9sgr`SpJvk*&A+JX0W1| zu@L1z(cPTtsQ%W81<4%=l(^-=f>(>(83c1dYCvIkR(bKo7OyH)4Z}H-wzX|K-r3iz zB+`PU>6yLfBD6CZ?pA0u_Ns=ft#j5Y;1?s=&|9YPMgS(F|{e74QC zAxk5WhoYAVn%PR(HJQ2#G`NRo$Ma|f(|)Zy=MDN8D5T#)b5HmVq+stNBE0zP{I==uUZE>L$a z_no5|N=Rl7gd9<>GiC}lj|ZOU6>s~`Ju`hDN~n_J%x?gyTAFV ziYefWEs#YczGB!jtUxeYBOHl*1$EmSoY<5&x<4tmB9MV~ZeF+x1fGAwqGWF|Ua@+F z36-iJf@Oqvb6gbT`I?y>;+U6{08xY6WNgAk#i83${x3LyN7z5*VlR7Bg|Mhk=aYKi zyMktfRbCQ90b_Uo>rRDQQN1(N`)EbE?AYH+B~Ia`MD}!#OQShzp34jg6a2WDA;A}?Qxz4KJ-plq zr_El?q`c?3=JVKlLhf5e_jHK#^ZstH8O_J?kEnEw4^@E?d4%+<_b1)OIPWr1;OR!s z!D>Btg7#`(eKU*keK7YxJiE1^zdQ5s@vpgFF#{tK+UuA#)x!$(z;N}Ofe57UpU@vg zuk97@tbeT}EVv9K&%xmj(d?MP-g>UGtiM?;Lobh#m@jDm5l7LD$h=e{QXbb2!iq?i zq~lG~E4D8~xs5ukg)3Xq&w-D88Sc2+_~c;0?>o+$BE0(Z7b&jLdSC9X040B$jp!nL z_W}RbM@}{8V%R*$8g6v?o9Y7w1Sn46MS|B5ZvqW2!e*3mudbqcS)dBO zyrA_aPEs{DEu?x7JM1sIuZ!knHM@j8F&akucC7aG9tz8r_PUZm3osMNyE%dqJOS7U z8>e{K8F9?8KbJYc`38QuV0Irey0pKxMOyF++&O4eR5CI$R-=%0+iIZPp$S5VvYGET zOBBPxkvQ@)lDI@}jmN0l8hyX4AM(mc63xEuw_Dc?4j!G5^@X88Q#;QJiOmJl^D&qC z#s@ymN?zbm-}keumfW^4vrY`hWwOGA-SZN#BHCnnF%R=U4f>)#Q73%kkvJVrg`Gm_ zG8j*dUa^%#pMa8ER#+bN^=n>Yf_Ugb@W;^*9XVxQ6e9u}$u^q6Y`%f5$xw!nXRV#> zFSG0R7BpQOQE&}%UJ2o3MRA{kpl#-K5lq2Ny8I=gE2(;fu*l6e!aDj=VBn`EthPLD z@j5SRJs<#y`))-!lQFM7Q4ITgmj0bLS8kpV3N7*FmKs4I0?1@VVch;!fsz-n5x&77 zOY4qXG$GjSXzeC?nC}Y888DCU&=puw#*@V3nL$hmBnObsI5i3|V92AeN(N-c8A!Ch z0qQCT4gqBsgM=UfudJT1O>{gM^bH75q~CU$+Z^#oD|aF^`lg8s;7-6g1sTY+lYd!m z-S+5DRB_I{xHI`k^Oq197sUV1a~3d{HfI%jOZif^=Ywx?n_oRhz;|{_>U&NEgecKK zh2C0I_9>%hjUtd~KR~7l=sr2t4JlF`rV3Ty<(cY*wG0YfgvVP#A4@{O$l1C4>hU49 z2lE^rRuEcvtw-7eF=e!@0BYl1CV_76j=TVB-z^AD;^IY_n_2i{Qt7}$s7vITLzR9S zgcR!V^2m_Kn218)IzfA{Dwy9r{fs?m;TWl0K2dQE$I2ja{3b%@!2Hh?)RdQJK8zPU z%TE8#;+I6xQO5_Yn6;B2u?U_wfdty$NuuDlldL0?uif{`Fs>Ai$A2clcgF)7&LLsX z%xt!z0@#quF!-hd^foV=%owu)Y^r~{BX$WU8hi}8VhO#^4naAO;`dhENju($o8oQD z*3h!jayl3)0W7PESZXj$ix%X*G{OG%@u(%F=I~rWhSbQQG9={^5j}w815)AFG{Bw5w zRP+?!z;DH5?G55D*TWzp45LT8t=cIFt-MJSN&~GF={d41fM`gzD<>6DIY~(KC5Giw z;^j3cTIkc|!RHDfSj`0cjPXmomAu24axfbAY`sbm@C-?(>8m^?><_0Er0Fr9u0#$A zo4!yU`soT+kq%jcthT%Mt{gp^O!B7xUQm#~;{J?sLJuofs)hx>=KEd-AN5`YP>c^rjcl{z8s8OYw(bL>0jGI!!XiZHnUtlD zK(l0(3AmMc!IttF!Ayyt6N)_?Syxvj!oU-WLRsrhfNJsFLFdIqA* z`I9Av_IPDn%9bWe!@jiPVW&WM#om=p z%xk;JqNtXJ!x-D*k1Lf=TlJqyut}~;FYIWbGtNlJZ_MbP^R5RoD-_M`VDtoIsKXvx~Y-Kh?|}F zIY>LnmD!rCp3yj>0it=aA+n8@Du)q{oY7;YiykJgxQyNTPRMP{8)li(Wi>B5MzfYN zm8sV5mnYjTI}U8p_tzRzv(Tj)l|?Bi`bKKp=Ec1! z&<4s*IuFUF>0iDsScMPSc~M~yN(5ByTxnqtL~_0V`gB>3NKH|oLye0v&+$IT(Nk-B z!#L+HZa@80YYVU5q!%AL@Q#B9*UU4Ltf`iboY$yQA4K8U*6r+E49YdAF)gJYpfVea>H2J}`Sv3M)q?|S!$#zuB~J_cC?8`L zd>HRRg+ZDR?W|5beag8lwdcI&q>$0572_aluX7diWH9QunN!qSHG7-?AMy1gJI^D_ z#>+Fr&+`$HwOf>@LcsL65E?&~GfKXqGk*te@*P4ZH} zclBk2IGjiprlpZvNcjPgB$fGEzcTEz`M;hL7x)mEi{}6-35$~ho*QP!y zRr@HTvl;4loNJR6@jB)z$=31(NKuP6WrN;)hv8E#Cq-B2N()oZ!p}|-nPBrW1Ga(d zn)WWtDWn$b6k<1yXuz}lgQ8!B1{ycX3WJk7Y)Ku24zZ$Km@K=;U)FUs-~W`3bmH{l zRjsVHwZRgg+gr^~XX6$==wVoEGF)tz*2^6eSw|iEg9X-|Ru-=e(O$FWOCfBp$?Q>M zw?mCH@M;3uU1jw}V@+coh6>ulQjQ%47e+0iwXO@(T31DA%>x2{Kt`lS?H|~zaX49A zQ;(xs?)EB{z)8N1K$^!=Ih|_BL7xRvFm?*jk-aM?8&F@U$N?s;SmztjLxjR~@y%Jc zzJ|&a)~dBBYTmT+We&g8KaPqRs?<|B4YzW?=>CaN6LtDM_JC|Oy8Sr zm<)Ll{70qQWlPl^TIhtS-rXlabWOFn*YW*FO96OzhVF~s8-$%8yyAz0Am)ihRKm{0C9eHL`gS>DyC9MRTrM@*oONj+Z!LXg8(Bq}?Z z^t#BpU$S;u@BI!X7L46QbUo_W8|=+_M^y%PJj8<0&LxW%h}gL4r=9}pT`lzLGwr8L zgiSE=S2EHKC)ONm4_8Q3+YhCVOE z0&S`Emkjk)hH!LQ6{Cu^QE!pBm2}t1>_d0$#7hTklH1yc%fxRdDD$%HbJPnXHf&5a z^Y(e*C#g**4q5$IZxAaamZ!mrPXvkV;P5`W>^=p@QoPuE4o+WN(SvDR>j_dT(dWV1 z!yt4zUa?$%CAQ)TnjJs@##&Co{G*ejj8RtnEFFkqo81!yg zJ8A14+l@Ro?#k3nmv|swOx$HR{A$F}^g^ohx|zo>8^i5H(K>?Sb=n%zMjEzUf24N` zkdm*D0sXYYT9cB;2f_m`cYa8JeRBKx1AoQePvf_4wWsEC*#7R}GrYF_rnL17M#)h0 zuKO?RoxYxgI(cKZCc~hyq6LNPvI!Jfwud24{qvZd{s3#jV2cl7?{K&Ophdkd->{`E zpIQb!#Rd|#4v{<$zmGXCn2Cg-^ngbq@2tvEF^D~oyS#6JVu5T6K!JBUi)4abBOt&! zd~=Fj8DSnsKtOK)IZMUHi<68DXLR?WjVP^;<(v|R+wiRfQi~p=cO_v zjI!}{d!;9bt#+y#rs!S7kq7BPVh9t?dAJPL7SGY_&bQZ3>VOeBxW!i{-sD7L` z?Qz2yc5A%hr<_cCL7r+L{$@C)tkzW`y>-`n&iKdkn#h|~W%N;_}L2-hN*_f+YL1>qI-ezo815b9j{DzVRlEHv~oPbFnVJPuTMyOKd zQW=UZL~cf5v&gTWt(@58y0W^EJlftQc~%a}lw}MUdLh}@?`Ar@m!HmE+wr-Z zbGLy*Caz~ed~Tg`36p8q%(kJmFjD-@l$~)}+`ea16tflC{`nV;qpz=q@P{$G@L|4t zRi;>ZNvf|2P4*+kw2_=6bGKacTsZjO6HbR+797qQ;30IP_hI3Lw56S##6+xrjrHTo z{Fmfr4NOYg@nybTbn zfkLS_pOA^aX#9EKnQ~G12rzh0+&cX1XBIsNa$fg@OeMHHn{TllC{2yK@FC%0%K21- zy|z8BoUD({J$DysUEW7s_LSuumzbLSzHCpyZMAx-d8Ym6vwfZ6}hncrfk^sRft4hsJ6Qten zdrc|5MA&uf6I=Md8>@RuUQ0g9i!#;sq*wX&OEVb%<9ZDd6>rU-SfMhkZN1a)VL0S{ zTgm)W`K?t2#;vyF<pC*9Rm2c(UUj~4O6gSHhuq-&m& z9D4=1n~u8p>CE~j&S6=Qd1_N3a~uC_&X%E*D{lSVU2$vM+OeS1!b~=w?Dj8y% z1YpE-y@<=i^zD)GB$ueNSg(WPVYl$h=vN&L&f!r{!e^;iVe2*1%&@byn>W29-z%e8Q}XJ3kF`Yj6Vi~+k*k#z#e>i{Q0zsZxBS`C>j?N zf`qZ#*`f*zMokAY2*;?XVi5YFVxw$cyF=N%(;>u%R0hw-Y+^5*UDSPZ-jqKvlb)-B zV!w8w#Ob-%$+~T(g>6__Ey<_ae*BFFq5yBAlo5#kr8;s(eeiRe{rtm`m_e#1fwa)I z7}VW(-JVF3I z>0rTXF@J6%7Jm*C@W)J_8%VF(bv_LSLa&)5>1A53u@ey%o(ddnNXldI4l4@ zs71{JIdX>WPWkQr((b6w9rT_Em&-P>l z9#D8hRMWUTu(bJkX`9kBk!eg0MlDDUydFH)Xw3!ME|7JKQQPo3PQKhX4yQ1~Fu?W&0Exd~x>E387p`Y1t{D&$E-&w7 z+vlw|P@rGZK!FX1pu^jBlu@_Es4`613u3S-4zX1C2@{fCE}r_1BQYXugb%Ag>WH8ymv&HxpRwYa{N7#J?tz_S_Tk%->4VsY9Ft9sN2<)Q z=UVit{pm@Rt0bz1zFZd$BEMB~X**`vBBMRqqFTOTwsq*a)`&;+)#Db6tX+#$Z)+Rz zblqy7J~b~!fI2TM{c5v$w~xu$kH-!gbC@chU}SW2%nH7P3oUthBO3c~G>FyCG^)H5 zdtVuCNL*Ts;uV|nS_%^GWvsEqoO>GHe|@i2&99>s_G9fq-rW?8Z{(A_ly{Ap6lXXq z4AK~H*LkPrFSOOGKi?B7^n-2eCwzp?WxJ_wZv?1t=t^snvfT1@iUTjPc1W_kd2Zcg zjCZ=*349T7WeKfw+{S}jSX=R&4h~ZfO~3>ZI)Y1+(bq1w{a<6*9hF$S9m+l`F`rIR&_#28)-gS^n3mPk8gE6*>*_GE4-|#dBijbo9`Tyvilc*p9A3E@kfk;Bbk56DtXI18{H_MV^eNl2DiDX}@SBVF zdXK4%n|w?8BRe|1HPy|U=3cngnn8n%!d~LcS6SCpMDAt0W^Y2t(2md8i)Zu8Zi&BO zkMeeDy4P3(mT133CICM)jRmN5%2YRCvUUgYZvwzw>IBqG4&w9ImS`fNmP%ZK)DUC_ zu}eJ$nlvFEY>;_xL%TORlavQ}#F zd&M-(e(?R$glCz;6u`GV~Au0hKUI=R% zx>1;iK7L{|6BS{ZU7}aeU_;*Jxy^BelJ|;tHfme?9`rfL+i;lz-Bdt^ANqYtlLW z_;JVX zb}yToj9@s@P5xgqY6h-HKymiMdDoiMeNV;IX-C4ujc{ASk0h$UVGvX%`8|;Sbg%&Y zc+r&TePvvI_k$kc%FiHA@C~NYSetYVvb5<)AXJRfQ~1t8+VB6@h^AR#hI*SVACOM< zp@XwV>R1hslk{PF+tvns3O%7DjX;5e2ORGNb~~1(uatb&i_5i=9v%rhXlS<^%S-JP zIbn^^%JY0T9bub4p03?*_|xM*cI+cU>{$>s z-LPl9o!5koejwRpH=uvaCO7jF&9rpK`z&vMZQ>snSqga9l^rJC`$R@}&^1-@JWHce z&wKRp2?u>$;Vt)`S#>7jmr{uZVZ5yU$?Pu+ai14n(V02!?MgvbxdfDlKTl(C7OU?Z zydp1@T^i`S;#v(UeeR6UjmJ9*M2wVCTaDR+6e4#pH?EvxhK=~_aV8#oJlEOUup_nQ zE6bAC7ZZ&vn6Gdpqu*CvLGB=ejkQPSm%tvr=A^xr1CiV|t1WrA|BPpkVZLvegB5+} z?-nZJgCqDVRHQ!7JF~W$?p?}Flpf+J?f7(BMO=?I!)D`VqTECD1%2iSll8ZfkP|^@ z4%YV18?-h~&Cgciv^Z|PGbTQ1XrF8}J7K?kLaXZAO%WVD!FTAXS3^)PazS_Rl2CbZ z62Iw9JKnUzXNG!vC*-eQJ&|b|y8461ExHl@l(T9Ow5(I&N0#+(ScA#724cX#=T>x*5I>}Cnhj1 zUvNz2*ro3m>y- zpnnuzmX+~WTY9+c$=auo7eEl?1vo-onPDuQzcmOSg(>7TC>-u<_1+r1)*I6w4oRh7 zo@~0ZD#g)IZ8thsMMz&Fjq;Z~^Nc7C$E8Z+u)WyzR}!Bx{E{Ub%i_2SRt}nax8SoY zQOzfWUI*Y^;-zX`!`*5;L)-ReSWAexd?lZDPsun>t9RD8HqLbu2Y4lBzs+72#8|j3 zDQea`a`2B4$T1a9zxvGHN79H>n#hr ziXLEXwtY@cq(ah${#u;`CYTH$B(5#apWb#acNNpceu_wB?d=RV@_ymxuGe*WL0{ei zDuh(u%k{PyEni$@iltuZ5%fmO%&ebOu~~impj*)i7y} z?xHbQX`qTk^*Q*@vWm*K>8(J9_G)(BGHWh>bmbZyWu(4=Dif={4%p0K_a1-G;xobm znt zD^BY4)`P7JiP{JqB7f6ryhk36F}6`br0!N>Q_OvZso3$jTO!qMe=4bGH=eG!b`~RI z%|hjXt`GX1e~uPk?-}$&e04u&_|{e7{KtInGIjm3a#ASUJbxym91aXlB%FuqHr(haved^P31!D(St#Z*3t}ORc`$ z=GOHDww)FbZup2f7>vZ*7KybIwNCXRUS~cLeGuulMZF&Ug4o$~HH4&TYi{^TTX=iL2;OjJ67!#q-wKP zD8m01vCo@$&Ce{#a{RK3Nk9Hp{U{T~pEEGgiaa6+h5pJu49l~d+o0wFvd-jd(mVp{ zr6Y7-S3YIeUB@ri!BjBo8=h-8$0`zJOh6wtW|xAI^S7 z=QX=-=kNmU87}Qye9d{n6M(0cMxC>U2qvO(1rL?SH9j!D)kfH;yvz8)XK#M$?)cW{ zAJLz@RXHC2wm#8n+`0BmxTj{r&aR*^@eb%+SPN7R6^iJt~VpOX|-jaZ46hh&dEUvCSS`9$A- z>2SEbEDqODCM0@o_;xtbymS0=;YzK;gg|HOl$8|sP6TOsfe@1p4WrCV4#RlGj>vA^ zm2sLp>pNSR^+5;cY|lH|=6${k1ow#DQDdTNh=RGC1P1(AiI=bj{=Tim!RObB*qB6*^Js^g+b1NE{69UW`-9@7QSWwhHLg@@P7EjC=FW zvP=T!rXCEDMEAEo=(FcI1Oi=e1GwceC)?hfg#$@k-qEinj!mtHi{*PRg-%T8wKH;M z&Elx!Urd~WBs<Z0ptc;tRj)-r>Hyc z-)@LJ31dl;S_o%>1w{!>m^Jt z+C@C~xJHpf=Ua)_i|dBfH`3N5t8v?!&CpIB<12f50?A6j`bm^-nR;%Cc0utn%>@O|Co1Cx+N4(Ex`2A8$u9hqZLp4an;TgpLA8N z{~V@yWn@v!*32$4*O_ONo+tO@Wp=5DJ1T`ShNP+jLrtzd)W6d&#Km5&C z%*P)lULfoWSX}=&<#6Ku_5D75iu5E}s=gi7{XT@4YY!Ha;2)Pf)&56jY+B@4_=L!@ zPud)L24X3@_d*NwpJhP1YSXN^3&!-*kWLQ{`%A)`*GG{THA`kBlFw_ehO(VjXMg8O z$9Ft#RAh<4KE5GbROR@@y9u~G|C~9Ut%JS=;6>S|6Z?@{X0-g=oWd8PTck8!)DO7c zl&ofcAC;(%KrZmqQ!Y5{Uj;`BEX(fm(1_%5r)HfiX8Wn*i|WXlTknlNazDY&Y?KX& zQJ9Qm=$Xu~W@+-ro@dgM3Ygh=SZ1{4;eGNZ@Or`h;YVEo9>@h!l_oT`h2)9VWhkS? zYNbze_v6`q+)#!bPG{V}OgPKXUxdqD_J28qdJ{(piaz?TO1ruAwT@vr*AgnEvb%s7bmV>*CrC>SoJvI z#OObB=k8d&w5663!9wR^J7^}v(lUB~xmH<50n)IeZ zDH8TMIO9xl=h(3d^2OQ=G5XCWtj9#0AC6xA;Vuu@J%Z(q3}#NZTe#8xy3imN8FAb$ z276Q7VRQQma`Ak?IW>-}rYff-6e_;I%)I83ZEg6foeN-=T{KYElJd90w!;9-xNxjv z?$q$vH`vqWdlYX}{~k77EHH#bhb`Gnx)==MN_+KfRyB8kW&(S3fd@gFwrlzPk~DBFz(E2R@UD_zG_OQQsuwmr z(LsAR*4G6>Zm2sLl7}fL?1RR5Rqe=)1=B#EzPUvGCAWL@T?d6>2z7-Ot~t<*3(i^} zx+Du8x_ib;zVHT*&8xpIPo@wVf9T2p7huUC^vD7AT{2zSkH?6tX<|FncNQt3do(Ee zAath6msgwJnZEju2^BB4xb=9Q*ppeZW}9gtIx=KLM&&OeK&2kQD5SGKXsN^vV`ZM52l1hj2G{s+V1drP6|GDmE8$M z;^qGZ8F|*<-PjST!RPai$rWls(4BX{G3pJ_cXsn=RD1Woz(o;F{-EQ}DaZ|{)Z{We z1El>bF#7=Nx=BHv63(M3iN3*`CRmFdd3`?5ScA!XXJ7gAH0xp2!M>V8?^{TlOKa0? z_m2sEx~q;YK-~4&-v-z*Gv@;Uccg>kI9l+C9||y}?srryu&3QoigS&!yL{T&A&`$?b%0pQ(PIi-pX>hfR1q)ShQgJPFMR1@UX&oc+3eOOUG3Sdwk=Rz zsE#c!u}E^+h3@HQFR|AyC-ag(ZhriJV42z#y8HBQcaX& z+085Vws6EodDLQzQu*+DjM2Lrzxgg;CisV>t>DXw+yu|SCKn1Vj*bXJ;YFG3)DmNn-61=P*m}&+xwcMPT6WmUDBkH-*+B-g&sRRkijqpe{y&{Rkp?6Av9v zZ1)7mdDKJNPm)PJKP9F_;04a?AOgzvYru(q#BO!*Ld~ow(6y&DH1Bz?FCavJk2c${=#T=TCa9|6 zvxJv#$d?Tkxo1Wi6xCh3x?T#rxR>~X_jz6BQ9Ocy0}MEDiCqnLy}eQJBe-2V3uFE! zYuCqo!7$NBMT*f4GF&?YWEKCq9@i?rq-#)I>#MRfD#d;aIU@hnKb29q_%)T$jh4`@H*+v7#^6UE@ zY?qU+wpj(Z?OaRMJAKN(_FbIC(BR73{r%^Z+O632)zZSX@RP9AFPXNlu^&2f4Q^TN zu^mcwTaQ0Aw34LFF}M+(8vz$k6UwxnqzVN7zJhhV=R*UqJO1g^RdT0>{&uP#3HyUS z2|IIlDG9l+R(l7OQ}LsxA-?Pff!lvS5t{so$TVP{E)?RYu)dyKTgA1sJ}1-UEV8-q z_-D6sku4A(8R<=+Qbv_Ns81$z@(VFtph}h`LK**p*W@`_CcpmlU+bf#hpl$OLzeJ z!tbAsu#h_<@J~koX!LM_Z^O?OzTrtPAu-f8G%~bUI~T?9e|>@x zCUd+}js1iC<1e4)2EKLM{zm;-KW*c5P1eQRrOIV*&2`y?o5GRKW4xHPbLiDgawAv% z`?ZX)KE#5aY>Q*gbG3j$On%_fE}O%QldIF=${olW2Qc^3fGK!%X8eoqN`hJev2BhY zd>by>7;no=8lJ~F9xQmb?BU?33-na6}kf6@b-V zg-HDMIgW}`{A2+~C@&mc_v;+|bnWOFBG)5wuF-WrEgUNsI+I-I;r~Fq!K%@@S`h^C zTXQ4??$aod-l9bWAzEZD(f~#k+gufS&d8>S)QuH z94`8|6ZXd(ZJXNq#jy1JQlQ>LGxrREG(nij@?X>N+;4I>dl~%1<|z$yUl+2+^?e$h zR`FkR-M1c$=H8!HU)_@OFMmy%A}FTUW91g<&4ka=KqtzyJ`(op9X}q*4`y{p`Ile? zfdnbkd=XnFT>TxKM$<@_cGNOAPonRB>TygduQ)@&B3j3TtjKlfhB z!T_oTHN2G^z4>256@kZ}f)aN7-DfiV5A_GU+^o&-6?e2g$Z${~Egl|l9{gA$y(P_I zNnxbr4#g(h9k<;scagNiHSI$w(H1NzP=0;saEE*K=c3vE0;Wrwgf-K_e3j~`#hgy} zCzbg}X`I~t>7alI)Xg>j6@StluKx0}V04WliRGXRdmz4W_^WJ6daZFoW^c|V61n_m z%l(%n#eO4E`{1?sv$^TLnNfUXyQ1Iv;Y?wmHg)kaHqycPFU609u&a3N+PgGUTTlnU zLj_g4pEG$y#%{Ddo-~~1Xb1xh_U-3PeJtTDzH0nn_ z*qf^y`jZHR_McizGeeFFY5tw!$nfh0d+Lri`a~6%yZ9t#=fr1zifI2VkxCiiLO_$b zwYQ`^T?}eB1BdUx&Bf68q|3WjaJ#EtRfWB;uFY}(lq(;a_nXUl@i7X&u-ufuS+c*( zzPsm7qW-q@Q51Iun)S;zN#-N(4aBGxbf>m{8VxyePLm(fje^}P!9`YvB)oqjQu#UT zbt<`hUH3?PHviYT?!W=p`CISaI&_!T|L&f?lqv8PlzqH3;F>8QAlt!gFWWI?FLUQh zkA8ufflJvxrtEKmLJwp6>rt+&ty1{oqf#rjL6AX|Rheg)L#MS{s=rF+ z-cTX^dYu0j_5&{oOCsgZPA%1(kFb}lHb50j42aW!Ocu488_{bIq3E4Ov($G}Q)}d{ zw1?km?cXb3w|MZJ^4P5~$`I`Ci$m=Oi`(Pa!$tk|LBe4~as|%P0^G?{VnMcmgX%f3 z5K%{|KtrrgF+Y9zwxU3(5uQEGMcE35soI#mdy7UDucvBb_ly_4dEw-oPWOjLH6NRz zfdSU?S3`>>6Sh~Bc4Cw1t-UAY$=|ilfdZ>*O|jqSuXr&S%{nrC?QoCVU!AarS)vxF z?CX=nN=E_{>Y)u*%O(sjyuEWsa*?jV-~qw+s@AQf1Axa_i8-BiJ6w14<0bQm{nvXH z87&Wtr0=5ZPb$AfqNgB`ASc2Lat*B(@@D=U9-QWbv#BJ~yGiB&;`PNtf!DP>5f4)H z%swH_=^P}7`pd2SS=jn~*RfcE`U1!b*epwJoe;l4eAiBN5Tq?Ej;g@vffXe%bn*TN zul-#Cb(hO--Q|8B_mUQFW6I!|PwE!Ec}HE#nF~Q@!CR64ZAW~9APsC&azcI!FY}vP zH$22qscm@2Os zl;#1JcJ*J!8W>%2d=~`APagmO@b~+lkjTz>Wz>?sx=xm^U&cv^%i}W38_OpA5Y+W_ zBoLrzSkEB8e2RS1frPHV*Qa%G6uX+p_BqBsR}0RkFk>LN!XQCF6~50`0Q?`y;Gc8> z09Kp<1&CCG(6qnJ0p}X`o8fpm*H>NBzlYt?i3H*K&J3%oC1=p{Fp;+;+U_>E?0^iw zddK%wzmKo6XQerhZZ?9-wVk)QdC_}Eb(P-!XE^{sos-&xFG9zUPbiMY9FJ~LDiJS} zDw8c!G@~YLKq2Lm%&-=0bkC=zr!51I z$5KFa*aDDgTU4X9QG3^qjQD>>Rf&K;Za2Jiv?Nit0h^NC_&FFD!(W$$lAMu6K8hhb zAn9cMFO!yh#RXr<2hH{h8nA*|n@n))6P|pENg+-vWxy7y~8S z_L*-E7vLr2J^>~gNInZBH)?QHW#;HTWQ5>TCJW4Cl+256_W_Al{Zc=eVL9?gnQ2XA zi~uAEg1n?2GsLzg54@zC!jwEMWd76zG4$R~fHa;Yr_X_`x4+E%eULe`IqAku+z_F- zq~0~enKj$(dAp6_R#)Xps%Tojn8Spvv*P~SO+k*C4eE~>M+rU!*O9OfY&^k`b5!x) za!m{l9dNDedo)*EqW}O>;hLsa=&gi;`(ft?CY~1N1^45cXmtb^M29JN46ZHK5 zi6sxdGALucdXyqJ9l-|=&2TqB#RfsO6>3(1kC*LNjjs*vq3V;3h%<&>KD_V$}!q-vl3aCad7=1CafCLb(i zi@r5pP`Tc%qjUh=U3-9r>G#_ z)J0raBl%X@{N6PwA%1w}^0+r0UQhD-JS7T9wDLw$ou6~nOG1}-btdP)3n=Fe-yg(Bs%wgM{AU7X$fz zrOuDS%O{L%N;pgBFSr94`j^}i=m$ocB~dh@K9Cx+KVzQH|o~v)_%n)9fbaTD$FKX{>l5I#L`0aGRZX2 zHkkI5R@d~9_Cl@;Gwo)R&wV+kddagXHjBcwep$A|Y-3zsZ_C%KmrWu~i>`g}8&5s~ zYrDPR`yk#nf7W~3*(J~E4`p@Lj@1<=EpGsr7f~XE+vW;wBd(QbN5Khj;tc0|Il71~R zzTft;vU@J8`QEMCvMY#F3)<04`YPW-tl=wp{It%K7BV3<OOtn$@~%V}CzYTD`F?In#d5^QCek znJJy{b*Xyko0nmwo&4`bSyuLo(Pdq{w^SCxc=n$Jy%&kN59BfBv^dVnaQkKKkI)R< z%jkR)5++)bdDXIW9i!$FXa8RQX~GZNfs&k%SOrNfHnE25ET;($xd{wePcbr;ae6P8 zzkr4a=4lHnj+;VT*IK12Yc#x-CdV*~C!LwLQ zMAnZQR%Up}tGTmFOwLR5$gR$zh?0d*wbZH{r=mW-vBq=_RM~|l>-uwOOoj>5NS@(6XbzbZItSM*-zoN!oyADJ2XocAw-rZZ9!uzgYgnVq? zKwUjDuNhPaRvdwT%PJ+m(N|1PqyWlxOR@MqQbQQoK})*qlS0Kr7cF0h_MX}fBb7$n z1WZ!#4&;~hl307k<91h|AN$<&@EZ7rna|fo#k-LiKECzdg{HB<@>_6ss<3rRPL=oU zI(5Ac!(>=R%stkYT3k*;Ygw@%s^L$z+9Ud(31HV;Ck=)SWk(#Nz0V`z!I6U~vq79y zxRKLQnD1!0=~}tN?0EQ?I^BuJxR>>jw7+#*&0b1k=X~~3De|FS$dZrE!uZaUFLj#L z;8z*Iur_W2`BPF7D?-;zzf_Nwt3`!$XESI5^vx1nP%4alGmfxjgo3O~~&U9t?n%w=`BLHPeuhJ)kb3vS<-FI;zz!?IG{`MfRPbZQzlX@^m4KT7$Z< z8iSNG@tNP0%>seNgOL6Ellz1)KP=jF>L)9L3W}@`QY1#ke`rvMuF?ep?^gp?HTfve z(!a_Tn8VM?vi&$hQ#{JnE27T+C(0&1c40A1Yiw!D$HxXnPYqo&p1enHt<`LTM!W`U za@f@JTdPp&rW;oNu1rcpwylZmT@RWOqn%tBC2Jdb<@X82y?yWx3eStg%Rl50qU8Qa z@BS)qd4bibE$YGZ2rmz8Xnpz|SaJWb6Yx7bJ|rqQFV<~Z0Y4|x42Jdw6StFHO}9*9 zdm|2N^Gl<~+nN9YdChn^SaoiL2G5oG(cf%ISg_t8oj+}aMN(LG(~j({_bZT2hFSGa zJxQ+E_nh3jCeC3%eC;-KdX!kmJ%q$`cY#5t~{$ z>QIpOCF2=kjN|+EZ&FBdGLoEeWcS4cBNPAjh&6CJlCP#W|H@|g8yntQA8fFro-b}S;mKi6;}U8sq66_Lp!>K$gf1ojRIi`KUW~IePW@)7B!I#UETwB!C>BKw6)O>6 z5bx1@-CS+$>W|fJ51(V<&Y^SS%)P(=bZrg|OeCKEsP-d8cW)yr>f zTeE9(7ZBj-JeF*j8bbHz;a@X(9tU_E=qiJ3*^j3>lNX(8=OkHY3Z=~W=yC}YeSIiH zrc23fEBk_ERZ}ua!4|_C!s{-CRcu=ZOdOe#$-x6ApbnZr2b~!{~|X zlGO5|wphnL$$KLj^M1HLHT7HzP4Gi2+3D`sf__VkGyO0FeL zZrJB^Vr-x0%bD@u@QXp-$&1p|Ld-DOprd)dM-7?)(}*X3@>JJ~G=$t^W80clzy39V z+U90Fr~j`OQoiv9HYa<3!0cSvJ2%7r^i|jKEU8HeyZ4Zc$}(Mf+(~j2258uiK(!g? zO2}R?ju}gG$EXp@OE{N9*fT>;rOc*M!(#|ejb331Hqb&U_<%nvdT$dyT%^GH3r1tx zG~*4iE^j8_{UhxARGYStlMN(;IaGLbMkHlFK|WqBRz*)7__-mwNj(l-&hNp|EPGtI z?VE&y*YJTN>8>BKW_XG8dRGlSRYlnt5$n-}dHWi9I*q9muGuJ70+O>s ze@S)ynNq7!opLQ{mJ7LH;t8bTCq)cf!9inVb>5eTfpe*) z5~$4+AX~!INUm8KJwA9<;*za)grI6z=AZw-M({-xGkX76PS%gFljC}X_I-t9>FwSd zd34FE<&kc_Cyxi-dTcCH8(O9%mI&F@9-><**T)yOh2sf3jE`^Tq4@CTXkRihXplf# z19R?pw#NqRNLyEi0A8=PYGd1%0ZL^3_{*;a0t8+KaFFcnzIy;IBi>o($A^QuVr0fB za)3#-K3HEz{ph7bd?GX1`5W7M7{6#G5Y(3~KxPtXzi|->V5xg_We_o}DE5)11j@+R zkN>|;{=y587Ny{Ey3oC`1CVqqjgr;NfLr)~XbE1t1Cs_pjBk|@t%rS)1x+kZZWiX* zhnJYjGBYMDonavKu9wtD>;p~rw!%LW0>l-9`6i7Bka_ciiw+26L}><*gd5rMxww)N zJ^`aOue$jm=4*Wz17xI~;inQfz*fnj#T)!{ZI73_jHnC!3#3TdQVjO;E!%0kJB}Yq zPDH`@|12ay0C0L}3q z^2eipya(x0d3~S(;M6}s;;|zR-xtgAKG6Z=og(kD)Z@Q-{H~Xeg#V<)n2M>w=w}q* zIY4HJ&OB$TJ39LJjK;p$kl>+a&vWK_|BrNFmTHogaW)8RIrwai7H?y$@5)?|jVA{& zyebX4g3rmQdZu!O@K zGGdQ@@1q0p_KtZd>dYdJ^xQAM%7dy)UF1Q58U#=eV*)6^TR8fyNC4d!`uFz!Dj>kU z(RjDqAyb|Sv6$97$-pxwFQv}VVu=U5&Cgk9^acpQ+v`EynHBiyT4!69pN|q%ruuXF znpz*<{-BIV!&)zIdkit1P9r0x+SNWe`Pu|Z=_|r->3yn*^nWWJp9H3&0fh`8^$4hz zZ-M`keFOm`-jzIbb)m+r^Q|h}A#rn2yl=;h20zBh0k|>mY+C$mmUIPh3`=@{W&jVF z{vtpYB({7C^ zfwYnEyTF zWqy==?49wlQ&y}!Ym3F1(A^~@sTEkCEr1<#CJ*8v&{y==0bbm{y4OGB@wAZO%n$Uw zrp^k)bw!Q*xI|-MQav@0{sXVos{m<97Llhc53k9GfVn8n2=JJh0Md@kRA%d2sUW*~ zIrv3XI@i!91t1+>?Lr+fp<$jb7a_(MQwKofo>)%;1{{~gCpo+6ObcT`k2%-CX8 z$VjY+&j+ zO?yYtltPIHi{p-xr39WfX?|MhyGMU108ZDWW|3ilkb>K!u!2{D1^YkRA@KG%@#ZGH zAXtl6BJ)i0E=AKE*8!--AA*5W<@k##L~>d!sXQ%oPAn1o{$C`d>ktyhLog+&vb9q- z6G@bU?aEUJw-398?e>fmWtZr1sz1;A zI6!;54Q!w#T5!!j1lKDO<}ZY6E$j0wFj*BHl!w~7`lEL#R%OFvWkRTh8o#dIhxp!m zylDRU2z-$j5BQD6KS=b+LQ+d<6b)G@JZnxk==m=>>ZVbMc$(q2>tp%FV;WBApZLPi z#Yd%Pwc5Rw4wBdh$91~(4p@m9o!rea{+h7Y-{@35WF$hp-+Ju&ycvvQ$~1qj94={n zK)aJJBGW7=Pk$sLup~o!w+%@h27d@8H6E)dWQ3P~> z?hdp+@8-OL`$aD7&+J%~_bqbh-xBsZ{phQCt45OP29Xn>ih)0J|(ekLYkj zo8;&e`m*5;?&^!D*2(uK*Y(|{k>1U zpI%>$k&c?fyyYPvfq5o}H6Iz#*YB5F+iiQ~2U8P-?R+ixZJN8IaTx?NyAYypJm;^Z zln)GbJ-#WMZImXdQ7z>YeLiaw5;!vK(OEcr95*EFOz85dj)FuXsB2<(;N41)mJV_>VYbg&??tQX0qdP5abUsN-JgoCZCCs3qU22Sa`g84$k-i4VKi3 zT~oTL7v^SxFZIB`*HfI#=6>39|DG<}0UR}JKxwTdhIqNN8gQa@s9lBKU%umWl03}d zTz^Qe$3`N!PYX#4f778z)1L$I5hg^Ti#GH|E&+yzWP#=v>+R&1!6o%dJrsFo zi(Ykp3wq1n0}F3sBF|?m-&}7{#@aS1&6HRLLZwX(r@iP8<`FAJf!xee&#M2J6vAcq zc%!^sqtdkak##cgpgIa+yr5r94ug5(g(JIxr33R;O&Wf?ns7ZCN4X0p%wEGSmb7m} z7N^O>>bMgqigjUcF82rJAH)tn^8!LAY`)>)b)=zmqMofs zy|}y2#JDBNW+tY{J+cBnmzL*ggRz8kp(&AQ)3w~eXyf|v$^yx%Z~BaN1Mdtp2Bd>O zVsoN*Zl7*SrRDHm!=9_bBkr0AN1Z>rWLQg6Fw3M)?QythAQ43qeQr;;Ia({)*Rg>o zA8LuBEL%y%O3NCI6;t(uqoj1AaUYFvEF}fiPWAAIrmX0D&ij_a4*SlXw9E!;4g00^ zZp40G>(31}v5$_Mahy)Q4cO+$+kBt%*V5yF{Vk?3;I3?vEVvY!h zdwz<~*$1sQhz!eLe(Hn^%{r4DulF@eD_VUxaqVU^FVbLQn+g5Bt6Kf&_A&gb#jE#D z<^pm5PgLgqW*`s28D=w5L|$PcYdlQa>~ccemnbi0O4kOJ9mqnrlJF!FB7k)p?bPto(L-y2ZZ1hSh%WOH3|R z>in4cZk^R8@szFlZOD942qYigML%8m6X@hHRBYz`1Y@c^lP3HsFiER_yYm$9^fS^w z2IjXD&U!dn=s32Uo}sao&TYv!)f3eABrZmV&sugj+_gu4Df%M(QF zUofk^d~-*}+>6Sg=R0v;u)2mo2xsYSMQre!bH7j4lR+hv{fkkLg{!#hH>u3}H+omh zCB@|1jDQ^(SgXe91O~nbPSVTTIQg?gsp*lH(X#)r(0VbGyr8#|!Fu*5>u^xtlw1H- zQhE1!g_!k{QNA3a@YUWC3$y77f0cjhAW_^K&8EB-3o;Ft3QVNdTZZa<@|g#9yx)tA zb6Ln?MgyzgXSaTDJCM@7Ow^g(F#IAs+}I7{_ODl$C?aM4q?CE^ex&EU)gbxdilF)t z{UBT9*t?i&4Sm?>v<6fI+HlQV*T5-Q!s%jSY}B3Dp1XfV8<>plASpC`n={%(qkeis zJE!oi)h})N()?#__PZ>NH$Ftm0A$o7^XuRYx;?4mnX~HWB(dEDX<0H1a1}q;jpqB8 z?{-XaZd_C$X17QXWYZW-bzanjreiBt-C?cYaGmo_lhZ}g4d^xp)%UpbQfWE8%56^g z^>*frDca$Pxexgl2dDWLu{*YN;B{Qn4N9WRJLE>i{^bFVW9IbO6~p6XY{KOoU1jqh zCxu^eKVA?jT<~3fIwvl_wTJ_|pM&G}&|NJ%^S=6s2%EWF^P$_D!dOS~HcYX5hgO(% zoy|eqJK@)2PGnP@dUv+wsM)qP5rR&1pBmHDQ%g%{X(8Ew+sQKBmR*RSsFraO(#=QUcyTtV#=dFJP{lY~qdS$< zFx+U3Sq$?YwiX%d7kIE;C%;Ma6y@-h!)YetiLpIa8bsSRiw2e9rmYA1V^dsKJMLT@08#hc+U+wp0bQNc1@(-? zr56_gfRvrWg`IcY!INA&*TWgU$8%YI+47j{ zP@6^=0~t}nRs_K*W3E7qpDwOx3StT!2rdDu=y!Lic%!#h@_ z$DXSQ;Wq<{G)QdP#8a97O)!C>*+2 zYA&pCf&{4AM-TZ-Wiq;QhxVyPpVWvW(^JH|TAJ1Fyf!Hoc4iyAweS7t`ykCd1Z$DX zmoUyj3Ydw@&+>U+wbT^Bj=JQ{S7wrKGW6kx3EQkwt;I&Xm@tb4va{A3^fM#7w1e@A zeP#;r;og|KStTLV-2F(G6__lHw1@Gx9H?GA?b+p6XuS~hZgHrd(0TNOnr%(D7m8rF++5hVXX@PE}*cO01EuI z69qm(#g%#SSCCy*gr39H1l{_7nfpMRit@wy-~R{9eNjUHW$r7rJNwt%hub^eig=MpXhmBag)0hG7wf`)Yq}n~cgL}tM%RgToRAI0_672h z_i}$!)Q7u7Pq7T*qRn`N#|l)M4iqs#BJV4bw^#WGeAo?f{XLdZvwROJDVAo5pJB75l+H#z?Hdq!RTv08t4X2}qe1a_I5A`J|%PhzYJcY-Pk@_)NzPG|C_prV8d+>%Jg z*Ll2z-X)il2~sjCEl;qj$5K*V1DwmCoPmh1r64h;)Pr3L#m93XC zmpX;d*Ex!<_t|uM>)R&;-~K##A%18Ipf7(&AH1_ zM^N8@?xf$y+1Ho)>i%3&wMqUi-Y(YZSD*cQVwu;US2DyamNOP4jP*@*+pW=V^rG*? z23)8=9+qwLbji#jn|~H~G=7W3)(q?lV8{~!cRyNifreT+XD>OU+BW}D%h*2n5Gb?D zF#yh3eY@ETAwvKSP!(BiNJ=zVx?=Jw)*Y0fZ`hp|L z*JMrBH}C;5127xhQ6UIa*qA!!KFQeY{9ED6J^6{sZ!31U@`fVleSMi#NIr|`jR;A_24jg^>Wf#6Fuep!u8 z?0DSaG}{~F?;^2E*Urtn1!e;Q+x1bqmyrJqY>u0_1AdEo;lD8UobJ|DQ@`!l;Ede^ zvNUc4`5y++07G5Z92}*yM7#c)nnx*Bn9?!ra)tZjR2kT#D!Om_*`>MlMku~54l*m; z)?C*w*Nb%ccVm1`-kkRb#m$1YI);EnEA(fK-(!}#T4+G3+0U3LA#E${MIzdx(}1G5 zF^3^=b?NTM0a*9ax?Q4po)-@a~p0%ouW+Q4W}kZRpEs+1IQt@0n#+iVW* z#k~9Bl>OwvM(k^-AS3S&*$KMpcL|@V-Qr;DRt$*gwDz86o-Bb^Eu5%S_B0a&yv+L z(VX;I7_C?ym(GvN-Pk=kT=lr=d05sDvUY1TuIz+vuR__M*x0!)9dAoWqmnVaJl@j^ zLJ9U1-5dvZ8D@^>ChnD$ovlhC%zs4I=c(Ae4`PL#5h~-Wju~8<@*52sRgsQKPEYT) z!ZM|}UA;o)7ST69X>pLhuzxVoyj_vyMOt0{e(9V(NxEITslsuRl*szKz+H~Pk}3hN zO`7vi8^@G)0GWPs8tvOC_WZ~eY4Q_jEPr% zBiV$V;)hbC=PH!+{o6l@BdDmNEUG`GDmC@sSxv1tO)7rf^-Jptu|zhtNa_PRcYlTF zN<8ue$J{}9m7zQYRHXlhY41ZP5i97J1)&_vwb-icGM|}HoNsAKS?L6AT@4J|yBVyy zE7lMm@RYBwwl($wuv#b^Pv$U~c-kn~&4^leeW}FZ9$(4?`GLON7Qw+sm7Yen{T0~< z01uv#&0*1)|dhVZs0;VBl zEKgX9AGDP5Lzk}OLzV_#On-O;GIsVNHeXhVlIyS7XE>K(TtYe#fZFG(Ij>}VO~Irp zD*h18N$p)douTb#bKe~(fc+BkXRD#0^5vH56wujwvHcHY{0wQYU{j!&W}emJR}d}5OC zhq^nQ@pjkyhmE6QN)8_%2&CLD3cY zwmWjgWxry^|M#Z8fYyET^uu|EPx$@vwOd{8!oEjhhTnZFmrv?Bz1jkaTE~dJ_KzKY zfq{5W2gK$M5x@tN(-l3lKG;3wjr{=5?eTInmGK8ID%>G}9CDbW*Zid7HTv*l+8EhU z7&t1b^wO5@Z(}1-NWfNWn0WKIQ}knk6xyFafGo{3q~OQedrn>+phWxolVMp?zx~y5 zB@<;6fqnabKoo5|y)zfyLwKQ!n^w;$|7N`bRIzHF1v1TFfy3NOxqsD#00Ox!b*mt6 z6X9-mRv4J&m|{z4FZHILotn$$wAp zebuwh|2@BYSgu%yqK{{2sz}<|UO&Zm`uC~U4YmLi$R!S}u%1f(NM>yh0QR8UQ<9ixQjxA9YU#TWz}5JKeAmiV_$datb=D;S=C{;ESG z&9~-!NpI-wFS}n4jJf9E$xexp!9wex{% Date: Mon, 18 Jan 2021 13:31:53 +0200 Subject: [PATCH 011/194] correct step three of Manual run entry --- CI-CD_DOCUMENTATION.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CI-CD_DOCUMENTATION.md b/CI-CD_DOCUMENTATION.md index ef71b2020..9fa3f4841 100644 --- a/CI-CD_DOCUMENTATION.md +++ b/CI-CD_DOCUMENTATION.md @@ -10,7 +10,7 @@ Once you've set up all the steps above correctly, you should be able to successf 2. From the "Workflows" list on the left, click on "Notepads CI/CD Pipeline" - 3. On the right, next to the "This workflow has a workflow_dispatch event trigger" label, click on the "Run workflow" dropdown, make sure the **master** branch is selected in the "Use workflow from" dropdown and click the "Run workflow" button + 3. On the right, next to the "This workflow has a workflow_dispatch event trigger" label, click on the "Run workflow" dropdown, make sure the default branch is selected (if not manually changed, should be main or master) in the "Use workflow from" dropdown and click the "Run workflow" button ![Actions_workflow_dispatch](/ScreenShots/CI-CD_DOCUMENTATION/Actions_workflow_dispatch.png) From 35409ab7b0f092c06bb65d6ceb68833b11574721 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Tue, 19 Jan 2021 14:06:28 +0200 Subject: [PATCH 012/194] add initial entry for the release sequence --- CI-CD_DOCUMENTATION.md | 67 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/CI-CD_DOCUMENTATION.md b/CI-CD_DOCUMENTATION.md index 9fa3f4841..988a1ff95 100644 --- a/CI-CD_DOCUMENTATION.md +++ b/CI-CD_DOCUMENTATION.md @@ -84,6 +84,73 @@ We've also configured CodeQL to run on schedule, so every day at 8:00AM UTC, it NOTE: **screenshots are only exemplary** +## *. How to create a release + +The "Release sequence" encompasses creating a release in your GitHub repo and adding the necessary files to it. + +Files added are: +- Deployment package (msixbundle) +- Source code (zip) +- Source code (tar.gz) + +Note: **not every commit to your master branch creates a release** + +Follow these instructions for any commit (push or PR merge) to your master branch, you would like to create a release. + +Whenever you would like to trigger the "Create release" sequence, you would need one of three keywords at the start of your commit title. Each of the three keywords corresponds to a number in your release version i.e. v1.2.3. The release versioning uses the ["Conventional Commits" specification](https://www.conventionalcommits.org/en/v1.0.0/): + +* "fix: ..." - this keyword corresponds to the last number v1.2.**3**, also known as PATCH; +* "feat: ..." - this keyword corresponds to the middle number v1.**2**.3, also known as MINOR; +* "perf: ..." - this keyword corresponds to the first number v**1**.2.3, also known as MAJOR. In addition, to trigger a MAJOR release, you would need to write "BREAKING CHANGE: ..." in the description of the commit, with an empty line above it to indicate it is in the "**footer**" portion of the description; + +Note: when making a MAJOR release by committing through a terminal, use the multiple line syntax to add the commit title on one line and then adding an empty line, and then adding the "BREAKING CHANGE: " label + +### EXAMPLES + +Example(fix/PATCH):
+` +git commit -a -m "fix: this is a PATCH release triggering commit" +` +
+` +git push origin master +` +
+Result: v1.2.3 -> **v1.2.4** +
+
+
+Example(feat/MINOR):
+` +git commit -a -m "feat: this is a MINOR release triggering commit" +` +
+` +git push origin master +` +
+Result: v1.2.3 -> **v1.3.0** +
+
+
+Example(perf/MAJOR):
+`` +git commit -a -m "perf: this is a MAJOR release triggering commit ` +`` +
+>>
+>> ` BREAKING CHANGE: this is the breaking change" +` +
+` +git push origin master +` +
+Result: v1.2.3 -> **v2.0.0** +
+
+Note: in the MAJOR release example, the PowerShell multiline syntax ` (backtick) is used. After writing a backtick, a press of the Enter key should open a new line. + # Built with ❤ by [Pipeline Foundation](http://pipeline.foundation) \ No newline at end of file From fe00710e6ce38e2c2d0dc881b32226e86749b91f Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Fri, 22 Jan 2021 14:09:58 +0200 Subject: [PATCH 013/194] add code scanning alerts bulk dismissal yml and test jq installation --- .github/workflows/csa-bulk-dismissal.yml | 40 ++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 .github/workflows/csa-bulk-dismissal.yml diff --git a/.github/workflows/csa-bulk-dismissal.yml b/.github/workflows/csa-bulk-dismissal.yml new file mode 100644 index 000000000..ad35cfb9e --- /dev/null +++ b/.github/workflows/csa-bulk-dismissal.yml @@ -0,0 +1,40 @@ +name: Code scanning alerts bulk dismissal + +on: [push, workflow_dispatch] + +jobs: + create-project: + runs-on: ubuntu-latest + env: + # Settings + OWNER: AleksIvanovSinglet # verbatim from URL + PROJECT_NAME: Notepads # verbatim from URL + ACCESS_TOKEN: ${{ secrets.CSA_ACCESS_TOKEN }} # requires security_events read/write permissions + DISMISS_REASON: false positive # "false positive", "won't fix" or "used in tests". + steps: + - name: Install jq + id: install_jq + uses: sergeysova@jq-action@v2 + + - name: Check jq + run: jq --version + + # - name: Run automation + # id: run_automation + # shell: bash + # run: | + # RESULT=$(curl -u $OWNER:$ACCESS_TOKEN -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts?state=open | jq '.[].number') + + # while [ -n "$RESULT" ] + # do + # for index in $RESULT + # do + # ALERT_URL="https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts/$index" + + # curl -u $OWNER:$ACCESS_TOKEN -X PATCH -H "Accept: application/vnd.github.v3+json" $ALERT_URL -d '{"state":"dismissed","dismissed_reason":"'"$DISMISS_REASON"'"}' + # done + + # RESULT=$(curl -u $OWNER:$ACCESS_TOKEN -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts?state=open | jq '.[].number') + # done + +# Built with ❤ by [Pipeline Foundation](http://pipeline.foundation) \ No newline at end of file From 3cf21c321813af4d1de6eb9550b0dbb9bc10800a Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Fri, 22 Jan 2021 14:11:27 +0200 Subject: [PATCH 014/194] test jq installation --- .github/workflows/csa-bulk-dismissal.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/csa-bulk-dismissal.yml b/.github/workflows/csa-bulk-dismissal.yml index ad35cfb9e..4da829145 100644 --- a/.github/workflows/csa-bulk-dismissal.yml +++ b/.github/workflows/csa-bulk-dismissal.yml @@ -14,7 +14,7 @@ jobs: steps: - name: Install jq id: install_jq - uses: sergeysova@jq-action@v2 + uses: r26d/jq-action@master - name: Check jq run: jq --version From 89970fef6b57c8f609503b1b7f4ee0ccb2ec9ceb Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Fri, 22 Jan 2021 14:14:22 +0200 Subject: [PATCH 015/194] test bulk alert dismissal script --- .github/workflows/csa-bulk-dismissal.yml | 44 ++++++++++++------------ 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/.github/workflows/csa-bulk-dismissal.yml b/.github/workflows/csa-bulk-dismissal.yml index 4da829145..76f1afe37 100644 --- a/.github/workflows/csa-bulk-dismissal.yml +++ b/.github/workflows/csa-bulk-dismissal.yml @@ -3,7 +3,8 @@ name: Code scanning alerts bulk dismissal on: [push, workflow_dispatch] jobs: - create-project: + dismiss-alerts: + name: Dismiss alerts runs-on: ubuntu-latest env: # Settings @@ -15,26 +16,25 @@ jobs: - name: Install jq id: install_jq uses: r26d/jq-action@master - - - name: Check jq - run: jq --version - - # - name: Run automation - # id: run_automation - # shell: bash - # run: | - # RESULT=$(curl -u $OWNER:$ACCESS_TOKEN -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts?state=open | jq '.[].number') - - # while [ -n "$RESULT" ] - # do - # for index in $RESULT - # do - # ALERT_URL="https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts/$index" - - # curl -u $OWNER:$ACCESS_TOKEN -X PATCH -H "Accept: application/vnd.github.v3+json" $ALERT_URL -d '{"state":"dismissed","dismissed_reason":"'"$DISMISS_REASON"'"}' - # done - - # RESULT=$(curl -u $OWNER:$ACCESS_TOKEN -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts?state=open | jq '.[].number') - # done + with: + cmd: jq -n env + + - name: Run automation + id: run_automation + shell: bash + run: | + RESULT=$(curl -u $OWNER:$ACCESS_TOKEN -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts?state=open | jq '.[].number') + + while [ -n "$RESULT" ] + do + for index in $RESULT + do + ALERT_URL="https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts/$index" + + curl -u $OWNER:$ACCESS_TOKEN -X PATCH -H "Accept: application/vnd.github.v3+json" $ALERT_URL -d '{"state":"dismissed","dismissed_reason":"'"$DISMISS_REASON"'"}' + done + + RESULT=$(curl -u $OWNER:$ACCESS_TOKEN -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts?state=open | jq '.[].number') + done # Built with ❤ by [Pipeline Foundation](http://pipeline.foundation) \ No newline at end of file From aeca8dd43d94bc191585a819d3c1c943efea97bd Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Fri, 22 Jan 2021 14:18:42 +0200 Subject: [PATCH 016/194] test secrets as variable vault --- .github/workflows/csa-bulk-dismissal.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/csa-bulk-dismissal.yml b/.github/workflows/csa-bulk-dismissal.yml index 76f1afe37..bc1133fc6 100644 --- a/.github/workflows/csa-bulk-dismissal.yml +++ b/.github/workflows/csa-bulk-dismissal.yml @@ -8,10 +8,10 @@ jobs: runs-on: ubuntu-latest env: # Settings - OWNER: AleksIvanovSinglet # verbatim from URL - PROJECT_NAME: Notepads # verbatim from URL + OWNER: ${{ secrets.REPO_OWNER_VAR }} # verbatim from URL + PROJECT_NAME: ${{ secrets.REPO_NAME_VAR }} # verbatim from URL ACCESS_TOKEN: ${{ secrets.CSA_ACCESS_TOKEN }} # requires security_events read/write permissions - DISMISS_REASON: false positive # "false positive", "won't fix" or "used in tests". + DISMISS_REASON: ${{ secrets.DISMISS_REASON_VAR }} # "false positive", "won't fix" or "used in tests". steps: - name: Install jq id: install_jq From 8027811e5c5f9ebd5e8339890f366139654b41a8 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Fri, 22 Jan 2021 14:24:37 +0200 Subject: [PATCH 017/194] remove push from workflow triggers --- .github/workflows/csa-bulk-dismissal.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/csa-bulk-dismissal.yml b/.github/workflows/csa-bulk-dismissal.yml index bc1133fc6..50de54eed 100644 --- a/.github/workflows/csa-bulk-dismissal.yml +++ b/.github/workflows/csa-bulk-dismissal.yml @@ -1,6 +1,6 @@ name: Code scanning alerts bulk dismissal -on: [push, workflow_dispatch] +on: [workflow_dispatch] jobs: dismiss-alerts: From 6d88de01d60d5a3996660f2720412aa954288b2b Mon Sep 17 00:00:00 2001 From: Martin Kulov Date: Fri, 22 Jan 2021 22:14:11 +0200 Subject: [PATCH 018/194] Delete CI-CD Documentation.md duplicate of CI-CD Documentation.md --- CI-CD Documentation.md | 52 ------------------------------------------ 1 file changed, 52 deletions(-) delete mode 100644 CI-CD Documentation.md diff --git a/CI-CD Documentation.md b/CI-CD Documentation.md deleted file mode 100644 index a3f6ac1e2..000000000 --- a/CI-CD Documentation.md +++ /dev/null @@ -1,52 +0,0 @@ -# Bogus CI/CD documentation - -* after merging the PR, the first run of the main workflow will not complete successfully, because it requires specific setup explained in this documentation - - -## 1. Set up SonarCloud - -SonarCloud is a cloud-based code quality and security service. - -1. Go to https://sonarcloud.io/ - -2. Click the "Log in" button and create a new account or connect with GitHub account (recommended). - -3. At the top right corner click the "+" sign. - -4. From the dropdown select "Create new Organization". - -5. Click the button "Choose an organization on Github". - -6. Select an account for your organization setup. - -7. On **Repository Access** select "Only select repositories" and select your project and click the "Save" button. - -8. On the "Create organization page" don't change your **Key** and click "Continue". - -9. Select the Free plan then click the "Create Organization" button to finalize the creation of your Organization. - -10. From the dropdown select "Analyze new project". - -11. Select the "Bogus" project and click "Set Up" button at the top right corner. - -12. Under the "Choose another analysis method" sign click the "With Github Actions" sign. - -13. Copy the Name of the token and the Value and use them on step "16". - -14. To Create a secret on GitHub click the fast forward button **Settings>Secrets** . - -15. Then click "New Repository secret" - -16. Enter the "Name" and the "Value" and click **Add Secret**. - -17. No further steps are required for this setup. - -18. Run manually your workflow one time to deliver the code to SonarCloud. - -19. In order to set a "Quality gate" follow the next steps. - -19. After the run go to the Project page. - -20. Click on the button "Set new code definition" and select "Previous version". - -21. Manually run the workflow and there you have set a Quality gate. \ No newline at end of file From 4c29e1bc7c4f92a288f16d5b69ac086877b50feb Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 25 Jan 2021 12:42:03 +0200 Subject: [PATCH 019/194] add documentation entry for the 'Code scanning alerts bulk dismissal' --- CI-CD_DOCUMENTATION.md | 59 ++++++++++++++++++ .../CI-CD_DOCUMENTATION/CSA_execute_1.png | Bin 0 -> 22817 bytes .../CI-CD_DOCUMENTATION/CSA_execute_2.png | Bin 0 -> 28679 bytes .../CI-CD_DOCUMENTATION/CSA_execute_3.png | Bin 0 -> 21688 bytes .../CI-CD_DOCUMENTATION/CSA_execute_4.png | Bin 0 -> 13532 bytes .../CI-CD_DOCUMENTATION/CSA_execute_5.png | Bin 0 -> 34702 bytes .../CI-CD_DOCUMENTATION/CSA_new_pat_1.png | Bin 0 -> 29264 bytes .../CI-CD_DOCUMENTATION/CSA_new_pat_2.png | Bin 0 -> 17536 bytes .../CI-CD_DOCUMENTATION/CSA_new_pat_3.png | Bin 0 -> 6094 bytes .../CI-CD_DOCUMENTATION/CSA_new_pat_4.png | Bin 0 -> 16240 bytes .../CI-CD_DOCUMENTATION/CSA_new_pat_5.png | Bin 0 -> 26428 bytes .../CI-CD_DOCUMENTATION/CSA_new_pat_6.png | Bin 0 -> 6577 bytes .../CI-CD_DOCUMENTATION/CSA_new_secret.png | Bin 0 -> 12912 bytes .../CI-CD_DOCUMENTATION/CSA_secret_add.png | Bin 0 -> 13411 bytes .../CI-CD_DOCUMENTATION/CSA_secrets.png | Bin 0 -> 57397 bytes .../CI-CD_DOCUMENTATION/CSA_url_owner.png | Bin 0 -> 1951 bytes .../CI-CD_DOCUMENTATION/CSA_url_repo.png | Bin 0 -> 2053 bytes 17 files changed, 59 insertions(+) create mode 100644 ScreenShots/CI-CD_DOCUMENTATION/CSA_execute_1.png create mode 100644 ScreenShots/CI-CD_DOCUMENTATION/CSA_execute_2.png create mode 100644 ScreenShots/CI-CD_DOCUMENTATION/CSA_execute_3.png create mode 100644 ScreenShots/CI-CD_DOCUMENTATION/CSA_execute_4.png create mode 100644 ScreenShots/CI-CD_DOCUMENTATION/CSA_execute_5.png create mode 100644 ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_1.png create mode 100644 ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_2.png create mode 100644 ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_3.png create mode 100644 ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_4.png create mode 100644 ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_5.png create mode 100644 ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_6.png create mode 100644 ScreenShots/CI-CD_DOCUMENTATION/CSA_new_secret.png create mode 100644 ScreenShots/CI-CD_DOCUMENTATION/CSA_secret_add.png create mode 100644 ScreenShots/CI-CD_DOCUMENTATION/CSA_secrets.png create mode 100644 ScreenShots/CI-CD_DOCUMENTATION/CSA_url_owner.png create mode 100644 ScreenShots/CI-CD_DOCUMENTATION/CSA_url_repo.png diff --git a/CI-CD_DOCUMENTATION.md b/CI-CD_DOCUMENTATION.md index 988a1ff95..9269e7055 100644 --- a/CI-CD_DOCUMENTATION.md +++ b/CI-CD_DOCUMENTATION.md @@ -82,8 +82,67 @@ We've also configured CodeQL to run on schedule, so every day at 8:00AM UTC, it ![CodeQL_alert_page](/ScreenShots/CI-CD_DOCUMENTATION/CodeQL_alert_page.png) +### Code scanning alerts bulk dismissal +##### - currently, GitHub allows for only 25 code scanning alerts to be dismissed at a time. Sometimes, you might have hundreds you would like to dismiss, so you will have to click many times and wait for a long time to dismiss them. Via the "csa-bulk-dismissal.yml", you would be able to that with one click. + +#### 1. Setup + +1. In your repo, go to the Settings tab -> Secrets + +![CSA_secrets](/ScreenShots/CI-CD_DOCUMENTATION/CSA_secrets.png) + +2. Add the following secrets with the name and the corresponding value, by at the upper right of the section, clicking on the **New repository secret** button : + +![CSA_new_secret](/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_secret.png) + +![CSA_secret_add](/ScreenShots/CI-CD_DOCUMENTATION/CSA_secret_add.png) + +- REPO_OWNER_VAR (secret name) - add repo owner's name, verbatim from GitHub URL (secret value) + +![CSA_url_owner](/ScreenShots/CI-CD_DOCUMENTATION/CSA_url_owner.png) + +- REPO_NAME_VAR - add repo's name, verbatim from GitHub URL + +![CSA_url_repo](/ScreenShots/CI-CD_DOCUMENTATION/CSA_url_repo.png) + +- CSA_ACCESS_TOKEN - add a PAT with "security_events" permission. To do that, in a new tab open GitHub. At the top right corner, click on your profile picture and click on **Settings** from the dropdown. Go to Developer Settings -> Personal access tokens. Click the **Generate new token** button and enter password if prompted. Name the token "CSA_ACCESS_TOKEN" and from the permissions list, choose only "security_events", and at the bottom click on the **Generate token** button. Copy the token value and paste it in the secret "CSA_ACCESS_TOKEN", you created in the previous tab. + +![CSA_new_pat_1](/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_1.png) + +![CSA_new_pat_2](/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_2.png) + +![CSA_new_pat_3](/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_3.png) + +![CSA_new_pat_4](/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_4.png) + +![CSA_new_pat_5](/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_5.png) + +![CSA_new_pat_6](/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_6.png) + +- DISMISS_REASON_VAR - this secret refers to the reason why you dismissed the code scanning alert. Use the appropriate one, out of the three available options: "false positive", "won't fix" or "used in tests". (copy the option value **without** the quotes) + +#### 2. Execution + +1. In your repo, click on the Actions tab and on the left, in the Workflows list, click on the "Code scanning alerts bulk dismissal" + +![CSA_execute_1](/ScreenShots/CI-CD_DOCUMENTATION/CSA_execute_1.png) + +2. On the right, click on the "Run workflow" dropdown. Under "Use workflow from" choose your default branch (usually main/master) and click on the **Run workflow** button + +![CSA_execute_2](/ScreenShots/CI-CD_DOCUMENTATION/CSA_execute_2.png) + +3. If everything was set up currently in the "Setup" phase, the "Code scanning alerts bulk dismissal" workflow is going to be executed, which after some time, would result in **all** currently open code scanning alerts be dismissed + +![CSA_execute_3](/ScreenShots/CI-CD_DOCUMENTATION/CSA_execute_3.png) + +![CSA_execute_4](/ScreenShots/CI-CD_DOCUMENTATION/CSA_execute_4.png) + +![CSA_execute_4](/ScreenShots/CI-CD_DOCUMENTATION/CSA_execute_5.png) + NOTE: **screenshots are only exemplary** +
+ ## *. How to create a release The "Release sequence" encompasses creating a release in your GitHub repo and adding the necessary files to it. diff --git a/ScreenShots/CI-CD_DOCUMENTATION/CSA_execute_1.png b/ScreenShots/CI-CD_DOCUMENTATION/CSA_execute_1.png new file mode 100644 index 0000000000000000000000000000000000000000..bb71528d95393e469c7b5afe2ac7d8c4456ec8b1 GIT binary patch literal 22817 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 literal 0 HcmV?d00001 diff --git a/ScreenShots/CI-CD_DOCUMENTATION/CSA_execute_2.png b/ScreenShots/CI-CD_DOCUMENTATION/CSA_execute_2.png new file mode 100644 index 0000000000000000000000000000000000000000..148d604a40cd2cf4c829fe6b9450aa9c9e565133 GIT binary patch literal 28679 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 xJRtRY!{WWYckSNA{r<17snQD2+fuob2p+hD literal 0 HcmV?d00001 diff --git a/ScreenShots/CI-CD_DOCUMENTATION/CSA_execute_3.png b/ScreenShots/CI-CD_DOCUMENTATION/CSA_execute_3.png new file mode 100644 index 0000000000000000000000000000000000000000..59f98e807e6f5830de6266ab95707b073476922a GIT binary patch literal 21688 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 literal 0 HcmV?d00001 diff --git a/ScreenShots/CI-CD_DOCUMENTATION/CSA_execute_4.png b/ScreenShots/CI-CD_DOCUMENTATION/CSA_execute_4.png new file mode 100644 index 0000000000000000000000000000000000000000..badc65fc6367de10454fa1d0888394bb822ce0ef GIT binary patch literal 13532 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 TTi+mUgRneheG-5C;*I|U&B@xq literal 0 HcmV?d00001 diff --git a/ScreenShots/CI-CD_DOCUMENTATION/CSA_execute_5.png b/ScreenShots/CI-CD_DOCUMENTATION/CSA_execute_5.png new file mode 100644 index 0000000000000000000000000000000000000000..bd92d1462cda86eea31d054be6b1b41aebbcf956 GIT binary patch literal 34702 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�P*BqD>kZNnm%(`$RxvbDfXF9YT*uxGK8{)o3Hh4oc&gbTX}P@e_+VrZqhnjC&|t`>8bUB<2uv|))EzXz^@W-_>r4Q z_4&&Rogk=mR2PxDXc@<`-vABjbM~q4T3$zkbth^XMMhQ2u>N1@IDc^D|E)y9Q4-dF~5@JV-CvLg*pyas_3>K}7qa zP!}5S6~B|@}!;Q+qsqbB2zE0M9;m;K2W>c`YHReWb-gEqRPf>zKW;Fg>v#gNqJn{SyT9Xb{$* z?5)y!L`h+1dMxWQv@#p6_D0Y%QI;?^ z7awKf1d{=jtm)?g(7IQA*D$93%Rj64a(+^uTKFb>LH0t9FG|j;o1QgrT|q`}Ky+aW zQ2TZY88)~<(Ejj)xU9b>cs_q=9NkGO@@_7uBPG4>*#<;|Owhqi29me>V<8sMl^ zV0rO(ncJ9}PeZ=e=upl-y3wb?v-fQJ*-YHT==<)nr{6isO^o$RPE9;#FEQC${==P> zD&H{W?%G;w@!4>*#PsRCjrXnYET#)LzPT0%E;9V>^e8LVcHf)opR9KEvWdx&OgUXq z1+^Lc_{HLw_Q%=UEmnn6cvzFY8YxcFG2wb((U>P=VIHHSBvt3XX5B0i2&WXgvB|Nk zLVH4=*k2mXD;gDzOvSWwL{sET;6}fQXUDSS_WPN9b3Obk?ne4?!Uxq;NJUO;S*{na zC)^8O!Y~#)<`2s*w{Xzz`HLOs`gFS2E}!y9!(90i#s5>@=v%=fmjz-krrk9C;O%xz zhujn=D^>fh{JWKDV%@Pk{fvM}qNyZjyl{_=lCot^x7)t;-*_KH!p5g)3}gD`)#^j1 zV=*D!60ABk74`Eb&~~kl50zD}rDEjZRi6xosUOnYZb-AgclbplA4Mg7*))XnFgIVO z7IxFJQi`fA3Z=#mGl&}t0f-b}JlxO`9c2ZZ11~PvoY{Zz-jJnp$1oetn>cZR=Nw@2 zvYwEY4cNGnU0PXQ{1JHY-oI`n$A9d5x45qkX(Jx~wnI0zi2J@il^ zWHMvA+WW_6psGRp^afp2Jhp7>-3Nme0_i1};E88DFD`%?3VOSJGY2$`fn8vdz^kH2 z|B7gQNL1a}S43lcnn71Ju;n13Rm~i6JQo8PifiKRT+x=qm9!NaP8JQBPOs1D7Le6>o z{`^FE{n4fS4Ja7B)(?^__xnY9m*cDfsQ~p@IbE;P|D#p;_bWumgbk3cWku*dRaH`t za0e6a1(KV#jQ6}@aW`S&QxwON?o5bT=lB{_5@DkUaS zr6kh{oqFq>8PS4sZ;^?|lhopcR-)bk^23BvK@6ajKm6S<5Pl3k(NV$EG!Odd{13&7&dRyjxlrA!57|Gai`F2UX5k$opK6_! zX1hRTG#v81RRGUT?(WF0Wj71okhf4w5L9D`&otdDYZvR~m#?2U5PpoRyR0nDwvy?D ze^#m?qjqv(T|3#YvCX@G#J$N;KYFQRZez{KhU`bqkQ~6Jg-KO_R3uNZp0#@d8tud? zu>dyKqHTbVoPG+@=QB_Rv+FNy1LZEf?QC}lR!n@rFVMvnkU|BCyo<7ex_A@+2Ytu# za9pD>C{AkU%c;di*}GM7f15%BqbgWM$wN^tNvz!$(|)2xmK&j#aTO#}Z zMX(vGVd`jOVX{#IeGC;K$Gi#hQ*veRKLS5}iG6C1lx@#ObNX&AIh5$YS7bf&pkcbYwj9P((w}Qsd&o_nWy^xTXFl)aJ^YN^0)!|d4OEnzz9KNoL^$35*tQM? z+hfRQWL7^R7*w(#As0Ck@IvTiIlx=}|bsMRj~ zA8MED)6y%)AKE#5%kRo!d|L!WJsRCrD}kHdtQSh{ij~<%!&ghZZ*}R4H7sFBKabOw z@il5afN3{EOQQtdY-VzUns;Mipvoqxrb8F4M1Qsw+|Xq*jQ8bP_+A^nuPWYIa4+Z# zzII|~7j$Y5Wrt+&v`;^|sBi#kD%+6Fr02PP>LJL!VBZfWbF18^FgiF&jv9JD1_`RK8qY(Pa;97tBxS| zR`&B!+->4J?Jr4Mb5bA$IIt!N=x9xWoufn!?0*^Yoi;o60=+tBO%M_lt(NH`o>7S3&QLx#+!P zaUF`p1o#Fq)XTFl1C0faqj5~lF({4y!JS|2Vif-?GGozC16oxyz;}}%k7Kd=)_!bs z2o$yfPb=O0u|q#{Z!HQmsHsLju8y%|OfSbQaqRa3I{(~hQ0ET;n_H9Xnwm#LvgY>v z*}d8BT|o?UrgRT9kxrzt2H?<=S4xa1-MsJ#}XNwO@lKi^?> zayk+m&)?Yhi{k9d5dPqS>QPsm;t?na25AkB5Pn#@r^PEVy2~G$dQ{?|?wDrVrOY*Os zclGV`2xuT26v{+}Y1n4-`SkU=Y$)?&7HA-y z0evf7(K`sEk3dt+P5t}+&9*`-)1_2F2#ltcjmfa1;XEPSBni5(G5fE~$%Stfcv#;F zWLZ1xo?7Wr86%^b(w);g0-22Poxa5&&T?v^G%`_N;0*t3Z_qL+ z4aT}ns+Z$+qLw;)_h%CR{9iS#LoW>-M9B%*lvF@&=}qQa36*@4m+&0hrf_X5WD`p` zA%RWZ@SM9t$5BCXRS(kp<_7nGdf<@T1fpIi6S?A&<$ml=8HyQc@O;;5pP0gS-=ayQ zgyafKJE+_5x<7uz`|S0nI;10$lp{D$WfDGE(rw;i&f_z--WVv9^A^_cobWl(cZmVw zHV>Ubu55=M;j5ajw8>!0El}% zDukU%|8FDzGlhmXjqvC_5DC`D6qFpoW*sp(rK{vU<{rH07FU`0&x#I#V?*~CYheM-=TQV!P`srY^|pM5szlhr2rh2Zv~0d^A*|w5iVebpBa30{`G9a!gLQGCz!4 z!#ftG4#`jfp35VQ=W|OQrmBG~+H55AWpWlg67q|JR&boWqcB`&ZzAmL{-jLxbd_&! zv+#i#bN=Y&>)c{Z*I$-gtc)@lI-W(j661#|w^UtVP}tIw?4aE06=-QO0rk%N268ES zzr4D5r3!SLShvJHmdyumX_aga`7N!;s6|%bS5j>*MS#OXx9e343elOE~FAL#i` zHpsVSw+4|<_*MP<#!Ma?9v6yiMq0`V5W%N0^%dorV!Sz|(p*4)_8=k9@20WAh}!zcs9=G$k4v0O096L~H(GZlVoC zE z?3wCZ^oY7NC{m<^+p?#;?n_ejadl9y5h;Qg3q&{j3bSJ7$FmTE6QT0j&LXm9?t>@= z`-@g;NdSxA3z=*H8*WIXD5BF2$9!UTK)B-+nJ9mF(L-7tRcwiuys`W?bz#t7Mf*5lg5=A0XL(Wj+b?^x1Wv9V{ z335czrPqV{C*GN*)eCE*@$YFa@a@^+JA#5a%z=@(O3RvRZ!F)D#}~b`AGDMsvUsAU zigYrYKw2f>Lij>(8q0o5bDJ@v3Sx7_^efGC)-28;Kn|tx0z7K4A;D!ep}pg=Zbawe zx>BZim54oeO8%`ukac+ZSEpL`%OHDu?|Z|&jO(!+^0;wF6a4Cw)g*1S!h73qY2*lM zzTh;(_?`nI1*g--5r63LONRH63UZpSvh`Xby0i8}kUw2<*JV9km~=~<$?%DMpYcXi z^%buTp1XFnw@fL;j1sSm zV>de<6d5qMfA(G69>A$(IfTBXJZEscDJWOP{bFYQ-`Fwn;ZJ7y*|_HGSJeKfhva6j zm`48BUB|CvyiL-1?VT!qEs99}DqkyIiG>`PD>9elhZ0Y+mmqY1v45dXM@$pkzw;1| zYlxv{lTYS{0A*cpj}+?b~8wf%YYHzeQ5#E0Rq11j6V>7;xMJXJmsCLHac) zJxWr(N3={8%39i-deO@`N#cZL@c(w%$Jtj0fAS`kYbBuPkWqS$()y1EOU(zOB)Z8t zk=y0=IdS+qdbZYRl{@kM`4!|jrob8iYVE)Uu#uV2ZO237A15V=gYz@|5cbQvjx3~= z7Y{MNg!f|%tl4$(xgoGxj=M=o>*m9#Q(2nZZZBu2|KoXB-oR>GfYH|Srm8M4^8SaL zkPMLUxC1JTvkUa7YoNSAZC1vGaZwM3UAO`8GTn2q6wd{fdNpEf?BH`MKp>Ludfkec6~kp6hOuIIzzO9a+9?$akSq1b`(55VS$3C0 z>mvcNuT>X7Cw7|LYiROzw?TJMzJAbeg8=vvo}m>-VXJ`bY4H96dj72vu#f3Y%Q2>V zXph<3tmm4+=}cD0jt78nn%`UB7#}b8mj03x-A{3jrgAuO8*jNg*7ylP*mVli#)|#I zk>DDu@WqAl-bav>+gV# zfJp>cwK_sM-7aBFBhLfIr9C@nOawSo=^aX8v`VR#kY!|5_@u8yf07Q>{Q0uo<)OUx zSgM@RY_n&FxU{K`&8*qduq!@G9k!D5YQwM55q~6VHOd*7{r}mG92UcAV9+?Eg+l$Y zYu}`BAH!wLo`?p9ZTwn|9kl{b*UobM>77A2rX9J+tdx0P&mX}|3?JA=Xh8;!zNu=G zja`XhMLndt08sWnUy-m6OYj@MC#m1yIx)T2RQK-co7|8$GI3ouZ2EB^2hvU-18?%H8 zHhVU=``YsP{)gvSu>ho>NsR<{JLO)zFS=TIqPK%svfv~|e-wBKd%VJEXjl3R2G~VC z{1@Y^_SL@MAe+y;(Ry^ppZDCA6{oPcrGNC0G4xJmq*kxeK|IB%J?tTW{%@Sz;U?}e zSrc&Qm9R~z?o)#k;lq>F&dYDgi1HWcGbzQ~3?OVDejTqc#T7J{t z2?+wyyYo^Q-xZGtL4DQ`3c^)Uo6NJ|X0{nzZ}Rtf7u1mO z3C7KF_*LH6;#f?;o$3?b?B+7vljDUyfVFuF#Ho#n6?+c+*SKJ1UKB>%hYN3&P6n|| z%$^QQC~Q?pdPVR^Rl3$fYECJ<;IHH*Ok#(a0de0MXV{0Q#!pKg2pPSlc}$wPDoo5B zN7j-b|3nn%Q{K)_WM%P^H-@W%NyI=c$Yd}`A_B?6n$`nr-BtS;u}sQ9L;UoK5h}Hh zKXTUZ&P7Y_>@MrAY+V~Of^Xp*N?GOLt3AmdfqVFbzK!29DGB`ex&9jO9e0X65(#Vy z9rsf=_j`L?PaE|km~N{QbF!9|*b^utg-uM?0Ik)Zf9#!h-Iij%XJZkyY29>JZttEm z`x9h0N%8(d%}QWt2fZP;&H-=k2v|I0M+X_ltg8B6R?6DKh4dNLBO!)tJ7Dlm7Y5Yg zx764@=dGLlRdX#5!$wP#kTeGsjbR2z(4IfSAt&TsIkQzY*WB*z{m!$l7AMwz%D0TT zM^gZJ!27|As_zY>M38y>-Cj#prMei-zYdk9@bZ z4K_6J$EVtm7$NrHyrWM%@`_MnirH%f_?m^fX`M8lJMmg&0XUf(QeROP6zq zyqK-AKbPs=izmXr6!RTARpGzzblasy(Eds$Tq8q_-;`x zQ}pGg$NsD#iiYR_ZzDVG5}ql?ikLIc0*=y=={tJ)E~BN<-g z8=QU|!U94-J1S|t;pnU-DUprV`=Pk9z{cIGTobSo>ag8s82fnyL7>A8lnqELJ|Ff5<=rX@&JAf0 zYNBhIR=mqzL$3os74rO+47xy_|Bok*G7bV_j%HJYi>;zlMg&Ie9tuUS!A)FOY&7C|qA}ns%8pz`G}8I7khAEUrxH z=000x9~$RZ&*8F~`w-A#fr8AC#I%`*{^fmhcPp?{wBS^i`SJH7YS#@uZ(0Bw?u9f$vC@4HQxh5TNZ$WPXx4Cy_^Yj6dv zE|oO~1uCy~bY<0uP=BI6xzav1&i_G25RB5`(|JZtRq-IyQ7vgXt)WatNW7i!aZawu zuedv4H9uiukwdS2$wuBvYVb{PLns&gT%dhOVxJ!(%M4}s9IY8NBI`G?>@=JDiW`cs z5{d@L*MA8|96J_u_bNj@MF$IStj-XQoN650GUYtx*LL2axli~9%P zU7rx_Hjk=XGB6C9v!Zsop$bV^Nd`X5{4C8roiAb69J&Oi7StxTJ`lyAr+BPhL0#p|U zhCYkBzQj(~jxy-AY0gJ*v1`n6tDNbTjm$1{Stb^I$!)7B9KJTzrf^oEInxe;F|GP(QvM`?IaWwV&d{=!W zQMf84ENHN6S+zi3z;|pwSk(H5bP~^dmIKhF*o0W}wm3M}~f8+#)_3pN$FgQw*3HmIV&W^k&pF5FOo7P{Ix-%?> zA*z|pOok%HTT>RuQn{+q1P;dZgQrnAn^&vN6HjzAM`hc*QOS3!t@iF*9j8eBi^G2mx=IUe$C|zo@NC+FGvNX@tJfOWwit;9qiR=)%AF(@JdF-g} zBXW`9ulvj=D4$}Tg3 zTKbB=w`V8G);Da4>Z=fMZY8fSh^Liw&O0s|)%IZIl;Ie6BLm$uMomC@uw%Rx;#RA9 z`2ftjz44%^iTxUF#w;EnDyCS1HOWd$=By$6BO|`tMWYX1XFc}!Hgh1d2HN7qM``#R zMfFov!^-8WT0ysWRgbQZ@JdCIY2~jW4wuI9!szqm?sSki*PNd$f8i%!!wu_J%v`mB zHN}<;*w=kzE!q37dtdi(MK{Yk4aZhtG*BV*%o6&M?qyOd$S1gu)YiM!i^sO{u&h0S4}jz<<_qW1V|Uc(3- z4?D_+#XV?@D7BUNxkd{8ubgQTzy6nL`Jl@wLkFkBbGx&%=G1#g@~G>I9(~BePrtLG z(viKkk_i5UiR+u8Va|n9{kjzO7=msz0XH(DTGOA@s38kQKA}qYIj;Y*SjVzroAGhf zu(1R|p{mmMMn6u`r5>uJy7(S;#XmiZsYDrOcrrR3&hMW!UG%Gl?h~yM=H$^$n375D1y@G4TRp42h{TEmWvYb%=gDKnek+72>8(Fad z-(-+hzHo^Y9iU%8;%9+7`b&D05sJQ!ygt|wTV8=w?e|+iSboP6YIO5WBjYu-6n`_kT}$HXgs`8kK;R7r;l zN=O|Kg(`@age#M?ZUs2F!6b@OPp-Ri?0w@J{puX&bVkRKkzwwf+J1k;5V&Tp_AIJc zil(L?X71n*2@=@dx5kX#mHIV>9>VWL-5x#)NmNpTD(usFLS$JiW?q=6K3Q{e&HuL6 z(D`m#=i5TQ#D>BX6`66f3J<5x{tLo$w_MAahwk-uTqyT-%lCS6A3+u zms2|W2q>+*O>c}Tlpt(e=zcO&L%M+c(u*E|Rr{@VAhP!#2}2ece{0CMU#! zwLcyRGTQIw+dS6fKi>6!J2Jqy`|nBk?@8D-bpBsR!W5`Azpf*&Zh`ePP(ensYFLKj;%(Ec;D1Yd>t+0Kxe?) z6rMJ5j$Q*Loxm=lHwP>?`tRM_l))cm^qWV(&;R_o<^K&2L^h6d8<~OYiPO;I&(k|c zB;otEWqv2B1m*)zTk|>g{+f7g;OZyE$0DCRDXP*{FJf;Rt_SVU$1ckxsL+zF`yeZ?j61@_lH*jq%KiOHVhje5XiLNmc|GJw{JolgSN3 zYjsPh8ivMw7T%ZYj2jP=a_yMXn*vGkAk!x_?zVnG7yVw1gJ;XrW1O^mJxeR@yd`KC`@XKSDD-lz zRk3*NUAL^e=h8>fRqsb`b*7e_f_L>%l6@~6Vt5g*bJ+MU2jw{xNxdIs@R_>uEg+ns zl*Iowo^U!Ao@XfM_Kkdrrst*Kw${E<7n{ff|1ljSNJ~1dw-6H?;;8_uGv}wh3lN%u zy$#WTC{o_ZoAqP$`t)^z zKv9qPbR&)$iS&g@6Wz4sH%G$9z2BDo$o;CTma%td=cIDu_Vb^1Ok8(Hl#9lCtkvQF%2)MJn0!$zeOPN35<9J z)OO=H&qc9@n|R=5T5HAhccLXlc?sa+>&c4J>x z>{dviTzWGn>%k#1S*hNcN=$$eq*?6xGsC3C_G12Y0)~?D_LeGsYIh2 z#d6rO^C`9iphD{Xq6ulDr##HGjtt<3i$=tEmEY|V{d|sEeyUrAh8kF!ZfeW05 z$x%*aIFkuix3mQZzQ*RY>}iDtUykX*gVw&PAlUOMAxE;jBC*BggVhUiN*&2nNW_|A zCH?lU<6N7i7in%5GL>BOT+LU{LYQ_)dwB>|*2-u-q%XB|5eDrkw*@_<1h(_{P1=*D_tix71B zRg^}O!T`I!ZtOuz#h$&eV9~N770-d4e|Fd3y9_SloE@unJn>w# zB42ymCuu$Ye6awvgPGcBnZnO_hewxBmvdZdM+)?^6sT1dN!wY;ayYnJ&dt55k_&Zk zB|q7INFuqM@ek)i;L5i&^K!o+6`_I_hPC8S8n^1xr{_<=fp$ zM8#A>S5EmVlKBUdSerahhu>uoEeajOh>3b?|P^LcQZ zVho8-ZnAC&R1*ch`5xXC*Z#9eUnzZc`~WW}pS<&XKEz{PC6A*^9%7Zrm=(#@Rmcku&L3j3C+QbAiLH-UC-^#JEF8*i5 zo0C63egC;si}qVq{@FFKSk}L3P~7bq#+T zz9WYiVHX9D*Nv@F>ssC#m5H7|P7T?po}e*%X@B_S+rr?OrH1X@)UKpoB=*=)c{Ab( zZsE=adlQRh6cmNHama5)wrddu9YKqcOX2Qpa2h-S(Nh4MY&LKyVIq;*M+>G798#QW zWT`p=QPnz`E?$!(zQLJpW-feF-G4fYx$SbkL0Ww1%}oJAR9WvaMgE$DK2_ zcln#O-DT%*`l|L{_DsuV7{)^h+LO^`Y~++L)1lNQ=DpSwi}YSLNow(OJ&{B0e)hE8 zYh^`nGwAvC%9oRExJp6~tLF1r-+je4-A9^TD;`{UVTCH7-ftgs z^3Q#?_chV*^>UTse7z4j)M z=fp=W$?}x8y0oT`1h+e4#JzhOT--?1Gapsl*u|Hip?A~XA1GC?6Mb}9mH^SK%8O0cd9P+m~g zjc%zxu(CdB9!W#LN;;>{*Pc_Ip1$eHcf;o}Gy)Xsk3Md>*dZC$Ok-_3)&VSQW7$Jz ztCpL*hgTF8ya)7$rr26g(C>b2flI;JTJ`(by)lgEECBYsbAR09J08hI+?pw}DXE!# zo9vXAj6dnI4DVsIUp}@c4>;~^bnA^3L}ZslEZ+ChJOFD*!Fo1<`N<~qBm_X{r#b%r zV$=ga;{O|-M<3@7T>|J2#8?jR8}n3 XB=ZM*!bC;spXgpPyqJ68)}#LeegZW4 literal 0 HcmV?d00001 diff --git a/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_1.png b/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_1.png new file mode 100644 index 0000000000000000000000000000000000000000..4d11b5656249acd768beee471352a792ab98ae79 GIT binary patch literal 29264 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 S00Uov#86StlrNVv5B?uuXTA>r literal 0 HcmV?d00001 diff --git a/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_2.png b/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_2.png new file mode 100644 index 0000000000000000000000000000000000000000..1b6f508ae717e8ef5e66649128d5995f005e5680 GIT binary patch literal 17536 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 literal 0 HcmV?d00001 diff --git a/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_3.png b/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_3.png new file mode 100644 index 0000000000000000000000000000000000000000..3219075ad2d11eb0810a76f8816e523cfd19c9f4 GIT binary patch literal 6094 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 H=ez#_N8EA= literal 0 HcmV?d00001 diff --git a/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_4.png b/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_4.png new file mode 100644 index 0000000000000000000000000000000000000000..f6e77b1653e9d145946fba4b91bfdffff8beef0d GIT binary patch literal 16240 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 W)wDZK^>If67#o;fLtJ%w^4|apUENLq literal 0 HcmV?d00001 diff --git a/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_5.png b/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_5.png new file mode 100644 index 0000000000000000000000000000000000000000..8f3c33daa05838bf04926d61a591677ec7c1def1 GIT binary patch literal 26428 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 ZXv3iIi=#~p;Jn#%ZyDXhYTbSQzW@OnODg~X literal 0 HcmV?d00001 diff --git a/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_6.png b/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_6.png new file mode 100644 index 0000000000000000000000000000000000000000..5dc3e75a97eddb4836ffb00295414cb7934fa28b GIT binary patch literal 6577 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 U6ejeew#B8niPgmtBew_t1F?<{4gdfE literal 0 HcmV?d00001 diff --git a/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_secret.png b/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_secret.png new file mode 100644 index 0000000000000000000000000000000000000000..77491a94a4239c2cb057a2bbf9b951341e256d6c GIT binary patch literal 12912 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 I{3`r^0OTc@cmMzZ literal 0 HcmV?d00001 diff --git a/ScreenShots/CI-CD_DOCUMENTATION/CSA_secret_add.png b/ScreenShots/CI-CD_DOCUMENTATION/CSA_secret_add.png new file mode 100644 index 0000000000000000000000000000000000000000..e62b402cc55239b9d65302496f588bfcefdba899 GIT binary patch literal 13411 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 XG&wbF8w37f5O76PSEK0CornJmDSgVb literal 0 HcmV?d00001 diff --git a/ScreenShots/CI-CD_DOCUMENTATION/CSA_secrets.png b/ScreenShots/CI-CD_DOCUMENTATION/CSA_secrets.png new file mode 100644 index 0000000000000000000000000000000000000000..db29ead99ccbdbb0262a4b593656c2c13c89fbbc GIT binary patch literal 57397 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
6wmI7cDEj%DV;Tesy)V4y>lX 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 z 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 literal 0 HcmV?d00001 diff --git a/ScreenShots/CI-CD_DOCUMENTATION/CSA_url_owner.png b/ScreenShots/CI-CD_DOCUMENTATION/CSA_url_owner.png new file mode 100644 index 0000000000000000000000000000000000000000..5c9067d454ed3d24799c74956720402e42c30686 GIT binary patch literal 1951 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 Date: Mon, 25 Jan 2021 12:49:30 +0200 Subject: [PATCH 020/194] clear the PAT step --- CI-CD_DOCUMENTATION.md | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/CI-CD_DOCUMENTATION.md b/CI-CD_DOCUMENTATION.md index 9269e7055..7b423e20c 100644 --- a/CI-CD_DOCUMENTATION.md +++ b/CI-CD_DOCUMENTATION.md @@ -105,19 +105,29 @@ We've also configured CodeQL to run on schedule, so every day at 8:00AM UTC, it ![CSA_url_repo](/ScreenShots/CI-CD_DOCUMENTATION/CSA_url_repo.png) -- CSA_ACCESS_TOKEN - add a PAT with "security_events" permission. To do that, in a new tab open GitHub. At the top right corner, click on your profile picture and click on **Settings** from the dropdown. Go to Developer Settings -> Personal access tokens. Click the **Generate new token** button and enter password if prompted. Name the token "CSA_ACCESS_TOKEN" and from the permissions list, choose only "security_events", and at the bottom click on the **Generate token** button. Copy the token value and paste it in the secret "CSA_ACCESS_TOKEN", you created in the previous tab. +- CSA_ACCESS_TOKEN - add a PAT with "security_events" permission. -![CSA_new_pat_1](/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_1.png) + 1. In a new tab open GitHub, at the top right corner, click on your profile picture and click on **Settings** from the dropdown. -![CSA_new_pat_2](/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_2.png) + ![CSA_new_pat_1](/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_1.png) -![CSA_new_pat_3](/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_3.png) + 2. Go to Developer Settings -> Personal access tokens. -![CSA_new_pat_4](/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_4.png) + ![CSA_new_pat_2](/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_2.png) -![CSA_new_pat_5](/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_5.png) + ![CSA_new_pat_3](/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_3.png) -![CSA_new_pat_6](/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_6.png) + 3. Click the **Generate new token** button and enter password if prompted. + + ![CSA_new_pat_4](/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_4.png) + + 4. Name the token "CSA_ACCESS_TOKEN". From the permissions list, choose only "security_events", and at the bottom click on the **Generate token** button. + + ![CSA_new_pat_5](/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_5.png) + + 5. Copy the token value and paste it in the secret "CSA_ACCESS_TOKEN", you created in the previous tab. + + ![CSA_new_pat_6](/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_6.png) - DISMISS_REASON_VAR - this secret refers to the reason why you dismissed the code scanning alert. Use the appropriate one, out of the three available options: "false positive", "won't fix" or "used in tests". (copy the option value **without** the quotes) From 8c89b9d97b37b4980a75d226277bf94dfa409af2 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 25 Jan 2021 12:59:54 +0200 Subject: [PATCH 021/194] add some clarifications --- CI-CD_DOCUMENTATION.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CI-CD_DOCUMENTATION.md b/CI-CD_DOCUMENTATION.md index 7b423e20c..9e5212463 100644 --- a/CI-CD_DOCUMENTATION.md +++ b/CI-CD_DOCUMENTATION.md @@ -141,7 +141,7 @@ We've also configured CodeQL to run on schedule, so every day at 8:00AM UTC, it ![CSA_execute_2](/ScreenShots/CI-CD_DOCUMENTATION/CSA_execute_2.png) -3. If everything was set up currently in the "Setup" phase, the "Code scanning alerts bulk dismissal" workflow is going to be executed, which after some time, would result in **all** currently open code scanning alerts be dismissed +3. If everything was set up currently in the "Setup" phase, the "Code scanning alerts bulk dismissal" workflow is going to be executed successfully, which after some time, would result in **all** previously open code scanning alerts be dismissed ![CSA_execute_3](/ScreenShots/CI-CD_DOCUMENTATION/CSA_execute_3.png) @@ -149,6 +149,8 @@ We've also configured CodeQL to run on schedule, so every day at 8:00AM UTC, it ![CSA_execute_4](/ScreenShots/CI-CD_DOCUMENTATION/CSA_execute_5.png) +NOTE: "closed" refers to "dismissed" alerts + NOTE: **screenshots are only exemplary**
From 11436966fbf238d57e34739e350332df275c4fee Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 25 Jan 2021 13:02:17 +0200 Subject: [PATCH 022/194] fix a syntactical mistake in CodeQL entry --- CI-CD_DOCUMENTATION.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CI-CD_DOCUMENTATION.md b/CI-CD_DOCUMENTATION.md index 9e5212463..69a3dfbea 100644 --- a/CI-CD_DOCUMENTATION.md +++ b/CI-CD_DOCUMENTATION.md @@ -72,7 +72,7 @@ CodeQL is GitHub's own industry-leading semantic code analysis engine. CodeQL re To activate it and see its results, only a push commit or a merge of a PR to the default branch of your repository, is required. -We've also configured CodeQL to run on schedule, so every day at 8:00AM UTC, it automatically test the code. +We've also configured CodeQL to run on schedule, so every day at 8:00AM UTC, it automatically tests the code. - you can see the results here at **Security** tab -> **Code scanning alerts** -> **CodeQL**: From f039c757a735d44b69af4d9fdf11349c605f30a9 Mon Sep 17 00:00:00 2001 From: Svetoslav Zlatkov Date: Tue, 26 Jan 2021 11:37:03 +0200 Subject: [PATCH 023/194] Test sonarcloud without GITHUB_TOKEN. --- .github/workflows/main.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ad15a6143..ef484e777 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -63,7 +63,6 @@ jobs: name: Initialize SonarCloud scanner id: init_sonar_scanner env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} shell: powershell run: .\.sonar\scanner\dotnet-sonarscanner begin /k:"${{ github.repository_owner }}_${{ github.event.repository.name }}" /o:"${{ steps.lowercase_string_gen.outputs.owner_name }}" /d:sonar.login="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" @@ -92,7 +91,6 @@ jobs: - name: Send SonarCloud results id: send_sonar_results env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} shell: powershell run: .\.sonar\scanner\dotnet-sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN }}" From cd634b2d13c37c06e38136e09e885914a2f6f3f2 Mon Sep 17 00:00:00 2001 From: Svetoslav Zlatkov Date: Tue, 26 Jan 2021 12:39:57 +0200 Subject: [PATCH 024/194] Update GITHUB_TOKEN --- .github/workflows/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ef484e777..7398ab4e3 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -91,6 +91,7 @@ jobs: - name: Send SonarCloud results id: send_sonar_results env: + GITHUB_TOKEN: ${{ secrets.SONAR_ACCESS_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} shell: powershell run: .\.sonar\scanner\dotnet-sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN }}" From 4485bc9a40af7e855d034f7a01ffa46e45630f8e Mon Sep 17 00:00:00 2001 From: Svetoslav Zlatkov Date: Tue, 26 Jan 2021 13:44:35 +0200 Subject: [PATCH 025/194] Update actions/cache@v1 to v2. --- .github/workflows/main.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 7398ab4e3..07a0cf922 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -17,7 +17,7 @@ jobs: steps: - name: Set up JDK 11 - id: Setup_JDK + id: Setup_JDK uses: actions/setup-java@v1 with: java-version: 1.11 @@ -28,7 +28,7 @@ jobs: - if: github.event_name == 'push' name: Cache SonarCloud packages id: cache_sonar_packages - uses: actions/cache@v1 + uses: actions/cache@v2 with: path: ~\sonar\cache key: ${{ runner.os }}-sonar @@ -37,7 +37,7 @@ jobs: - if: github.event_name == 'push' name: Cache SonarCloud scanner id: cache_sonar_scanner - uses: actions/cache@v1 + uses: actions/cache@v2 with: path: .\.sonar\scanner key: ${{ runner.os }}-sonar-scanner From 4ac85530cb327c06d81ce7f499adde176f95843b Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Tue, 26 Jan 2021 16:19:15 +0200 Subject: [PATCH 026/194] remove Release entry from docs --- CI-CD_DOCUMENTATION.md | 69 ------------------------------------------ 1 file changed, 69 deletions(-) diff --git a/CI-CD_DOCUMENTATION.md b/CI-CD_DOCUMENTATION.md index 69a3dfbea..b20d46276 100644 --- a/CI-CD_DOCUMENTATION.md +++ b/CI-CD_DOCUMENTATION.md @@ -153,75 +153,6 @@ NOTE: "closed" refers to "dismissed" alerts NOTE: **screenshots are only exemplary** -
- -## *. How to create a release - -The "Release sequence" encompasses creating a release in your GitHub repo and adding the necessary files to it. - -Files added are: -- Deployment package (msixbundle) -- Source code (zip) -- Source code (tar.gz) - -Note: **not every commit to your master branch creates a release** - -Follow these instructions for any commit (push or PR merge) to your master branch, you would like to create a release. - -Whenever you would like to trigger the "Create release" sequence, you would need one of three keywords at the start of your commit title. Each of the three keywords corresponds to a number in your release version i.e. v1.2.3. The release versioning uses the ["Conventional Commits" specification](https://www.conventionalcommits.org/en/v1.0.0/): - -* "fix: ..." - this keyword corresponds to the last number v1.2.**3**, also known as PATCH; -* "feat: ..." - this keyword corresponds to the middle number v1.**2**.3, also known as MINOR; -* "perf: ..." - this keyword corresponds to the first number v**1**.2.3, also known as MAJOR. In addition, to trigger a MAJOR release, you would need to write "BREAKING CHANGE: ..." in the description of the commit, with an empty line above it to indicate it is in the "**footer**" portion of the description; - -Note: when making a MAJOR release by committing through a terminal, use the multiple line syntax to add the commit title on one line and then adding an empty line, and then adding the "BREAKING CHANGE: " label - -### EXAMPLES - -Example(fix/PATCH):
-` -git commit -a -m "fix: this is a PATCH release triggering commit" -` -
-` -git push origin master -` -
-Result: v1.2.3 -> **v1.2.4** -
-
-
-Example(feat/MINOR):
-` -git commit -a -m "feat: this is a MINOR release triggering commit" -` -
-` -git push origin master -` -
-Result: v1.2.3 -> **v1.3.0** -
-
-
-Example(perf/MAJOR):
-`` -git commit -a -m "perf: this is a MAJOR release triggering commit ` -`` -
->>
->> ` BREAKING CHANGE: this is the breaking change" -` -
-` -git push origin master -` -
-Result: v1.2.3 -> **v2.0.0** -
-
-Note: in the MAJOR release example, the PowerShell multiline syntax ` (backtick) is used. After writing a backtick, a press of the Enter key should open a new line. - # Built with ❤ by [Pipeline Foundation](http://pipeline.foundation) \ No newline at end of file From b26569adee90ca86e7daf8dc616f2f2c1eeaddaf Mon Sep 17 00:00:00 2001 From: Svetoslav Zlatkov Date: Tue, 26 Jan 2021 16:30:55 +0200 Subject: [PATCH 027/194] Change SONAR_ACCESS_TOKEN to SONAR_GITHUB_TOKEN. --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 7398ab4e3..c118eb2b7 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -91,7 +91,7 @@ jobs: - name: Send SonarCloud results id: send_sonar_results env: - GITHUB_TOKEN: ${{ secrets.SONAR_ACCESS_TOKEN }} + GITHUB_TOKEN: ${{ secrets.SONAR_GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} shell: powershell run: .\.sonar\scanner\dotnet-sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN }}" From 87f51c945292c1f4542c32549fe791d0ce4dfac0 Mon Sep 17 00:00:00 2001 From: Svetoslav Zlatkov Date: Tue, 26 Jan 2021 16:32:38 +0200 Subject: [PATCH 028/194] Change the name frin SIBAR_ACCESS_TOKEN to SONAR_GITHUB_TOKEN. --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 07a0cf922..af603b7f0 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -91,7 +91,7 @@ jobs: - name: Send SonarCloud results id: send_sonar_results env: - GITHUB_TOKEN: ${{ secrets.SONAR_ACCESS_TOKEN }} + GITHUB_TOKEN: ${{ secrets.SONAR_GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} shell: powershell run: .\.sonar\scanner\dotnet-sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN }}" From 98450c48b244cbdfdf40cc1754e4b9c689eede96 Mon Sep 17 00:00:00 2001 From: Svetoslav Zlatkov <62066501+szlatkow@users.noreply.github.com> Date: Tue, 26 Jan 2021 17:14:59 +0200 Subject: [PATCH 029/194] Skip running SonarCloud on PR. (#14) * Add SonarCloud and Testspace. * Delete Testspace. * Add if condition for the step "Install SonarCloud scanner" . * Change the name from SONAR_ACCESS_TOKEN to SONAR_GITHUB_TOKEN. * Set trigger "on: [push, pull_request, workflow_dispatch]" --- .github/workflows/main.yml | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index af603b7f0..76c4ae1e7 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -21,11 +21,13 @@ jobs: uses: actions/setup-java@v1 with: java-version: 1.11 + - uses: actions/checkout@v2 + id: actions_checkout with: fetch-depth: 50 - - if: github.event_name == 'push' + - if: github.event_name != 'pull_request' name: Cache SonarCloud packages id: cache_sonar_packages uses: actions/cache@v2 @@ -34,7 +36,7 @@ jobs: key: ${{ runner.os }}-sonar restore-keys: ${{ runner.os }}-sonar - - if: github.event_name == 'push' + - if: github.event_name != 'pull_request' name: Cache SonarCloud scanner id: cache_sonar_scanner uses: actions/cache@v2 @@ -43,7 +45,7 @@ jobs: key: ${{ runner.os }}-sonar-scanner restore-keys: ${{ runner.os }}-sonar-scanner - - if: github.event_name == 'push' && steps.cache_sonar_scanner.outputs.cache-hit != 'true' + - if: github.event_name != 'pull_request' && steps.cache_sonar_scanner.outputs.cache-hit != 'true' name: Install SonarCloud scanner id: install_sonar_scanner shell: powershell @@ -51,7 +53,7 @@ jobs: New-Item -Path .\.sonar\scanner -ItemType Directory dotnet tool update dotnet-sonarscanner --tool-path .\.sonar\scanner - - if: github.event_name == 'push' + - if: github.event_name != 'pull_request' name: Lowercase string generator id: lowercase_string_gen shell: powershell @@ -59,7 +61,7 @@ jobs: $LOWERCASE_OWNER = "${{ github.repository_owner }}".ToLower() echo "::set-output name=owner_name::$LOWERCASE_OWNER" - - if: github.event_name == 'push' + - if: github.event_name != 'pull_request' name: Initialize SonarCloud scanner id: init_sonar_scanner env: @@ -80,15 +82,15 @@ jobs: - name: Build id: build_app - run: | - msbuild $env:Project_Path /p:Configuration=$env:Configuration /p:UapAppxPackageBuildMode=$env:Appx_Package_Build_Mode /p:AppxBundle=$env:Appx_Bundle /p:AppxPackageSigningEnabled=false /p:AppxBundlePlatforms="$env:Appx_Bundle_Platforms" + run: msbuild $env:Project_Path /p:Configuration=$env:Configuration /p:UapAppxPackageBuildMode=$env:Appx_Package_Build_Mode /p:AppxBundle=$env:Appx_Bundle /p:AppxPackageSigningEnabled=false /p:AppxBundlePlatforms="$env:Appx_Bundle_Platforms" env: Appx_Bundle: Always Appx_Bundle_Platforms: x86|x64 Appx_Package_Build_Mode: StoreUpload Configuration: ${{ matrix.configuration }} - - name: Send SonarCloud results + - if: github.event_name != 'pull_request' + name: Send SonarCloud results id: send_sonar_results env: GITHUB_TOKEN: ${{ secrets.SONAR_GITHUB_TOKEN }} From c0b599d345759b16c7ef8efc461f0f1582840a42 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Tue, 26 Jan 2021 17:59:42 +0200 Subject: [PATCH 030/194] fix a syntax mistake in the CSABR entry --- CI-CD_DOCUMENTATION.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CI-CD_DOCUMENTATION.md b/CI-CD_DOCUMENTATION.md index b20d46276..904a8482f 100644 --- a/CI-CD_DOCUMENTATION.md +++ b/CI-CD_DOCUMENTATION.md @@ -147,7 +147,7 @@ We've also configured CodeQL to run on schedule, so every day at 8:00AM UTC, it ![CSA_execute_4](/ScreenShots/CI-CD_DOCUMENTATION/CSA_execute_4.png) -![CSA_execute_4](/ScreenShots/CI-CD_DOCUMENTATION/CSA_execute_5.png) +![CSA_execute_5](/ScreenShots/CI-CD_DOCUMENTATION/CSA_execute_5.png) NOTE: "closed" refers to "dismissed" alerts From 5721654474d743f0d8ad71d7fb825805752ef18b Mon Sep 17 00:00:00 2001 From: Svetoslav Zlatkov Date: Tue, 26 Jan 2021 19:36:25 +0200 Subject: [PATCH 031/194] Add value in the documentation file about SonarCloud --- CI-CD_DOCUMENTATION.md | 58 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/CI-CD_DOCUMENTATION.md b/CI-CD_DOCUMENTATION.md index b20d46276..e5853e464 100644 --- a/CI-CD_DOCUMENTATION.md +++ b/CI-CD_DOCUMENTATION.md @@ -154,5 +154,63 @@ NOTE: "closed" refers to "dismissed" alerts NOTE: **screenshots are only exemplary** # +## Set up SonarCloud +### SonarCloud is a cloud-based code quality and security service. + +1. Go to https://sonarcloud.io/ + +2. Click the "Log in" button and create a new account or connect with GitHub account (recommended). + +3. At the top right corner click the "+" sign. + +4. From the dropdown select "Create new Organization". + +5. Click the button "Choose an organization on Github". + +6. Select an account for your organization setup. + +7. On Repository Access select "Only select repositories" and select your project and click the "Save" button. + +8. On the "Create organization page" don't change your Key and click "Continue". + +9. Select the Free plan then click the "Create Organization" button to finalize the creation of your Organization. + +10. From the dropdown select "Analyze new project". + +11. Select the "Bogus" project and click "Set Up" button at the top right corner. + +12. Under the "Choose another analysis method" sign click the "With Github Actions" sign. + +13. Copy the Name of the token and the Value and use them on step "16". + +14. To Create a secret on GitHub click the fast forward button Settings>Secrets . + +15. Then click "New Repository secret" + +16. Enter the "Name" and the "Value" and click Add Secret. + +17. Next you have to go to https://github.com/settings/tokens and click " Personal access tokens". + +18. Click on "Generate new token" set the name for the token and select **repo_deployment** and **read:packages**. + +19. Then scroll down and select **Generate token**. + +20. Now coppy the token and create another Secret. + +21. Set the name token **SONAR_GITHUB_TOKEN** and paste the value from the generated token. + +22. No further steps are required for this setup. + +23. Run manually your workflow one time to deliver the code to SonarCloud. + +24. In order to set a "Quality gate" follow the next steps. + +25. After the run go to the Project page. + +26. Click on the button "Set new code definition" and select "Previous version". + +27. Manually run the workflow and there you have set a Quality gate. + + Built with ❤ by [Pipeline Foundation](http://pipeline.foundation) \ No newline at end of file From 2d6a6d80448049ba33009e34a84c65c5d2c3d0db Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Wed, 27 Jan 2021 12:08:33 +0200 Subject: [PATCH 032/194] correct the https miss in the credits and add credits where needed --- .github/dependabot.yml | 4 +++- .github/workflows/codeql-analysis.yml | 4 +++- .github/workflows/csa-bulk-dismissal.yml | 2 +- .github/workflows/main.yml | 2 ++ CI-CD_DOCUMENTATION.md | 2 +- 5 files changed, 10 insertions(+), 4 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 0b662e53b..6a31b8206 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -16,4 +16,6 @@ updates: # location of package manifests directory: "/src/Notepads.Controls" schedule: - interval: "daily" \ No newline at end of file + interval: "daily" + +# Built with ❤ by [Pipeline Foundation](https://pipeline.foundation) \ No newline at end of file diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index ac870d4b8..654e339b6 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -60,4 +60,6 @@ jobs: - name: Perform CodeQL Analysis id: analyze_codeql - uses: github/codeql-action/analyze@v1 \ No newline at end of file + uses: github/codeql-action/analyze@v1 + +# Built with ❤ by [Pipeline Foundation](https://pipeline.foundation) \ No newline at end of file diff --git a/.github/workflows/csa-bulk-dismissal.yml b/.github/workflows/csa-bulk-dismissal.yml index 50de54eed..7196fc0ff 100644 --- a/.github/workflows/csa-bulk-dismissal.yml +++ b/.github/workflows/csa-bulk-dismissal.yml @@ -37,4 +37,4 @@ jobs: RESULT=$(curl -u $OWNER:$ACCESS_TOKEN -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts?state=open | jq '.[].number') done -# Built with ❤ by [Pipeline Foundation](http://pipeline.foundation) \ No newline at end of file +# Built with ❤ by [Pipeline Foundation](https://pipeline.foundation) \ No newline at end of file diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 76c4ae1e7..4f3ae769a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -97,3 +97,5 @@ jobs: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} shell: powershell run: .\.sonar\scanner\dotnet-sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN }}" + +# Built with ❤ by [Pipeline Foundation](https://pipeline.foundation) \ No newline at end of file diff --git a/CI-CD_DOCUMENTATION.md b/CI-CD_DOCUMENTATION.md index 904a8482f..813156c94 100644 --- a/CI-CD_DOCUMENTATION.md +++ b/CI-CD_DOCUMENTATION.md @@ -155,4 +155,4 @@ NOTE: **screenshots are only exemplary** # -Built with ❤ by [Pipeline Foundation](http://pipeline.foundation) \ No newline at end of file +Built with ❤ by [Pipeline Foundation](https://pipeline.foundation) \ No newline at end of file From f3558c6538ba666fd15a730e2e3af6bce21e0112 Mon Sep 17 00:00:00 2001 From: Svetoslav Zlatkov Date: Wed, 27 Jan 2021 13:48:59 +0200 Subject: [PATCH 033/194] Update the changes requested from the last PR. --- CI-CD_DOCUMENTATION.md | 42 +++++++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/CI-CD_DOCUMENTATION.md b/CI-CD_DOCUMENTATION.md index e5853e464..ae885ed62 100644 --- a/CI-CD_DOCUMENTATION.md +++ b/CI-CD_DOCUMENTATION.md @@ -157,6 +157,8 @@ NOTE: **screenshots are only exemplary** ## Set up SonarCloud ### SonarCloud is a cloud-based code quality and security service. +#### Create your SonarCloud project. + 1. Go to https://sonarcloud.io/ 2. Click the "Log in" button and create a new account or connect with GitHub account (recommended). @@ -165,7 +167,7 @@ NOTE: **screenshots are only exemplary** 4. From the dropdown select "Create new Organization". -5. Click the button "Choose an organization on Github". +5. Click the "Choose an organization on Github" button. 6. Select an account for your organization setup. @@ -175,42 +177,44 @@ NOTE: **screenshots are only exemplary** 9. Select the Free plan then click the "Create Organization" button to finalize the creation of your Organization. -10. From the dropdown select "Analyze new project". +#### Configure SonarCloud project. -11. Select the "Bogus" project and click "Set Up" button at the top right corner. +1. From the dropdown select "Analyze new project". -12. Under the "Choose another analysis method" sign click the "With Github Actions" sign. +2. Select your project and click "Set Up" button at the top right corner. -13. Copy the Name of the token and the Value and use them on step "16". +3. Under the "Choose another analysis method" sign click the "With Github Actions" sign. -14. To Create a secret on GitHub click the fast forward button Settings>Secrets . +4. Copy the Name of the token and the Value and use them on step "16". -15. Then click "New Repository secret" +5. To Create a secret on GitHub click the fast forward button Settings>Secrets . -16. Enter the "Name" and the "Value" and click Add Secret. +6. Then click "New Repository secret" -17. Next you have to go to https://github.com/settings/tokens and click " Personal access tokens". +7. Enter the "Name" and the "Value" and click Add Secret. -18. Click on "Generate new token" set the name for the token and select **repo_deployment** and **read:packages**. +8. Go to https://github.com/settings/tokens and click " Personal access tokens". -19. Then scroll down and select **Generate token**. +9. Click on "Generate new token" set the name for the token and select **repo_deployment** and **read:packages**. -20. Now coppy the token and create another Secret. +10. Scroll down and select **Generate token**. -21. Set the name token **SONAR_GITHUB_TOKEN** and paste the value from the generated token. +11. Coppy the token and create another Secret. -22. No further steps are required for this setup. +12. Set the name of the token **SONAR_GITHUB_TOKEN** and paste the value from the generated token. -23. Run manually your workflow one time to deliver the code to SonarCloud. +13. Run manually your workflow one time to deliver the code to SonarCloud. + + NOTE: Make sure first run is completed successfully before proceeding! -24. In order to set a "Quality gate" follow the next steps. +#### Set Quality Gate. -25. After the run go to the Project page. +25. Go to the Project page. -26. Click on the button "Set new code definition" and select "Previous version". +26. Click the "Set new code definition" button and select "Previous version". 27. Manually run the workflow and there you have set a Quality gate. -Built with ❤ by [Pipeline Foundation](http://pipeline.foundation) \ No newline at end of file +Built with ❤ by [Pipeline Foundation](https://pipeline.foundation) \ No newline at end of file From dc492d4b534d342900f51088feada8e91bca2af1 Mon Sep 17 00:00:00 2001 From: Svetoslav Zlatkov Date: Wed, 27 Jan 2021 14:49:02 +0200 Subject: [PATCH 034/194] Change steps counting from numbers to "-". --- CI-CD_DOCUMENTATION.md | 50 +++++++++++++++++++++--------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/CI-CD_DOCUMENTATION.md b/CI-CD_DOCUMENTATION.md index ae885ed62..ab17f7031 100644 --- a/CI-CD_DOCUMENTATION.md +++ b/CI-CD_DOCUMENTATION.md @@ -159,61 +159,61 @@ NOTE: **screenshots are only exemplary** #### Create your SonarCloud project. -1. Go to https://sonarcloud.io/ +- Go to https://sonarcloud.io/ -2. Click the "Log in" button and create a new account or connect with GitHub account (recommended). +- Click the "Log in" button and create a new account or connect with GitHub account (recommended). -3. At the top right corner click the "+" sign. +- At the top right corner click the "+" sign. -4. From the dropdown select "Create new Organization". +- From the dropdown select "Create new Organization". -5. Click the "Choose an organization on Github" button. +- Click the "Choose an organization on Github" button. -6. Select an account for your organization setup. +- Select an account for your organization setup. -7. On Repository Access select "Only select repositories" and select your project and click the "Save" button. +- On Repository Access select "Only select repositories" and select your project and click the "Save" button. -8. On the "Create organization page" don't change your Key and click "Continue". +- On the "Create organization page" don't change your Key and click "Continue". -9. Select the Free plan then click the "Create Organization" button to finalize the creation of your Organization. +- Select the Free plan then click the "Create Organization" button to finalize the creation of your Organization. #### Configure SonarCloud project. -1. From the dropdown select "Analyze new project". +- From the dropdown select "Analyze new project". -2. Select your project and click "Set Up" button at the top right corner. +- Select your project and click "Set Up" button at the top right corner. -3. Under the "Choose another analysis method" sign click the "With Github Actions" sign. +- Under the "Choose another analysis method" sign click the "With Github Actions" sign. -4. Copy the Name of the token and the Value and use them on step "16". +- Copy the Name of the token and the Value and use them on step "16". -5. To Create a secret on GitHub click the fast forward button Settings>Secrets . +- To Create a secret on GitHub click the fast forward button Settings>Secrets . -6. Then click "New Repository secret" +- Then click "New Repository secret" -7. Enter the "Name" and the "Value" and click Add Secret. +- Enter the "Name" and the "Value" and click Add Secret. -8. Go to https://github.com/settings/tokens and click " Personal access tokens". +- Go to https://github.com/settings/tokens and click " Personal access tokens". -9. Click on "Generate new token" set the name for the token and select **repo_deployment** and **read:packages**. +- Click on "Generate new token" set the name for the token and select **repo_deployment** and **read:packages**. -10. Scroll down and select **Generate token**. +- Scroll down and select **Generate token**. -11. Coppy the token and create another Secret. +- Coppy the token and create another Secret. -12. Set the name of the token **SONAR_GITHUB_TOKEN** and paste the value from the generated token. +- Set the name of the token **SONAR_GITHUB_TOKEN** and paste the value from the generated token. -13. Run manually your workflow one time to deliver the code to SonarCloud. +- Run manually your workflow one time to deliver the code to SonarCloud. NOTE: Make sure first run is completed successfully before proceeding! #### Set Quality Gate. -25. Go to the Project page. +- Go to the Project page. -26. Click the "Set new code definition" button and select "Previous version". +- Click the "Set new code definition" button and select "Previous version". -27. Manually run the workflow and there you have set a Quality gate. +- Manually run the workflow and there you have set a Quality gate. From 8257caaa35810c7920336631f1545dc5afb76f30 Mon Sep 17 00:00:00 2001 From: Svetoslav Zlatkov Date: Wed, 27 Jan 2021 15:20:14 +0200 Subject: [PATCH 035/194] Remove the dots from the SonarCloud documentation. --- CI-CD_DOCUMENTATION.md | 56 +++++++++++++++++++++--------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/CI-CD_DOCUMENTATION.md b/CI-CD_DOCUMENTATION.md index ab17f7031..28d53e12a 100644 --- a/CI-CD_DOCUMENTATION.md +++ b/CI-CD_DOCUMENTATION.md @@ -155,65 +155,65 @@ NOTE: **screenshots are only exemplary** # ## Set up SonarCloud -### SonarCloud is a cloud-based code quality and security service. +### SonarCloud is a cloud-based code quality and security service -#### Create your SonarCloud project. +#### Create your SonarCloud project - Go to https://sonarcloud.io/ -- Click the "Log in" button and create a new account or connect with GitHub account (recommended). +- Click the "Log in" button and create a new account or connect with GitHub account (recommended) -- At the top right corner click the "+" sign. +- At the top right corner click the "+" sign -- From the dropdown select "Create new Organization". +- From the dropdown select "Create new Organization" -- Click the "Choose an organization on Github" button. +- Click the "Choose an organization on Github" button -- Select an account for your organization setup. +- Select an account for your organization setup -- On Repository Access select "Only select repositories" and select your project and click the "Save" button. +- On Repository Access select "Only select repositories" and select your project and click the "Save" button -- On the "Create organization page" don't change your Key and click "Continue". +- On the "Create organization page" don't change your Key and click "Continue" -- Select the Free plan then click the "Create Organization" button to finalize the creation of your Organization. +- Select the Free plan then click the "Create Organization" button to finalize the creation of your Organization -#### Configure SonarCloud project. +#### Configure SonarCloud project -- From the dropdown select "Analyze new project". +- From the dropdown select "Analyze new project" -- Select your project and click "Set Up" button at the top right corner. +- Select your project and click "Set Up" button at the top right corner -- Under the "Choose another analysis method" sign click the "With Github Actions" sign. +- Under the "Choose another analysis method" sign click the "With Github Actions" sign -- Copy the Name of the token and the Value and use them on step "16". +- Copy the Name of the token and the Value and use them on step "16" -- To Create a secret on GitHub click the fast forward button Settings>Secrets . +- To Create a secret on GitHub click the fast forward button Settings>Secrets - Then click "New Repository secret" -- Enter the "Name" and the "Value" and click Add Secret. +- Enter the "Name" and the "Value" and click Add Secret -- Go to https://github.com/settings/tokens and click " Personal access tokens". +- Go to https://github.com/settings/tokens and click " Personal access tokens" -- Click on "Generate new token" set the name for the token and select **repo_deployment** and **read:packages**. +- Click on "Generate new token" set the name for the token and select **repo_deployment** and **read:packages** -- Scroll down and select **Generate token**. +- Scroll down and select **Generate token** -- Coppy the token and create another Secret. +- Coppy the token and create another Secret -- Set the name of the token **SONAR_GITHUB_TOKEN** and paste the value from the generated token. +- Set the name of the token **SONAR_GITHUB_TOKEN** and paste the value from the generated token -- Run manually your workflow one time to deliver the code to SonarCloud. +- Run manually your workflow one time to deliver the code to SonarCloud - NOTE: Make sure first run is completed successfully before proceeding! + NOTE: Make sure first run is completed successfully before proceeding -#### Set Quality Gate. +#### Set Quality Gate -- Go to the Project page. +- Go to the Project page -- Click the "Set new code definition" button and select "Previous version". +- Click the "Set new code definition" button and select "Previous version" -- Manually run the workflow and there you have set a Quality gate. +- Manually run the workflow and there you have set a Quality gate From e9cc89cd7dfb5776e0d9e397b02964e4c9a5ca50 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Fri, 29 Jan 2021 17:12:53 +0200 Subject: [PATCH 036/194] improve CSABD pipeline --- .github/workflows/csa-bulk-dismissal.yml | 30 ++++++++++++++++++------ 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/.github/workflows/csa-bulk-dismissal.yml b/.github/workflows/csa-bulk-dismissal.yml index 50de54eed..8eddb7c74 100644 --- a/.github/workflows/csa-bulk-dismissal.yml +++ b/.github/workflows/csa-bulk-dismissal.yml @@ -12,6 +12,8 @@ jobs: PROJECT_NAME: ${{ secrets.REPO_NAME_VAR }} # verbatim from URL ACCESS_TOKEN: ${{ secrets.CSA_ACCESS_TOKEN }} # requires security_events read/write permissions DISMISS_REASON: ${{ secrets.DISMISS_REASON_VAR }} # "false positive", "won't fix" or "used in tests". + ALERTS_PER_PAGE: 100 + ALERT_DESCRIPTION: ${{ secrets.ALERT_DESCRIPTION }} steps: - name: Install jq id: install_jq @@ -23,18 +25,32 @@ jobs: id: run_automation shell: bash run: | - RESULT=$(curl -u $OWNER:$ACCESS_TOKEN -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts?state=open | jq '.[].number') + i=1 + LIST_OF_ALERTS=$(curl -u $OWNER:$ACCESS_TOKEN -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts?state=open&page=$i&per_page=$ALERTS_PER_PAGE"| jq .[].number ) - while [ -n "$RESULT" ] + while [ -n "$LIST_OF_ALERTS" ] do - for index in $RESULT - do + echo -n $LIST_OF_ALERTS" " >> "data.json" + + ((i=i+1)) + + LIST_OF_ALERTS=$(curl -u $OWNER:$ACCESS_TOKEN -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts?state=open&page=$i&per_page=$ALERTS_PER_PAGE"| jq .[].number ) + done + + LIST_OF_INDEXES=$(cat data.json) + + for index in $LIST_OF_INDEXES + do + ALERT_DESC=$(curl -u $OWNER:$ACCESS_TOKEN -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts/$index" | jq .rule.description) + REQUIRED_STR=$ALERT_DESCRIPTION + + if [ "$ALERT_DESC" == "$REQUIRED_STR" ]; then ALERT_URL="https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts/$index" curl -u $OWNER:$ACCESS_TOKEN -X PATCH -H "Accept: application/vnd.github.v3+json" $ALERT_URL -d '{"state":"dismissed","dismissed_reason":"'"$DISMISS_REASON"'"}' - done - - RESULT=$(curl -u $OWNER:$ACCESS_TOKEN -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts?state=open | jq '.[].number') + fi done + rm -f data.json + # Built with ❤ by [Pipeline Foundation](http://pipeline.foundation) \ No newline at end of file From d22a58a570608fce57280faa3f9e14d78d363de9 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet <74899441+AleksIvanovSinglet@users.noreply.github.com> Date: Fri, 29 Jan 2021 17:18:44 +0200 Subject: [PATCH 037/194] test --- .github/workflows/csa-bulk-dismissal.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/csa-bulk-dismissal.yml b/.github/workflows/csa-bulk-dismissal.yml index 8eddb7c74..9575a6cc4 100644 --- a/.github/workflows/csa-bulk-dismissal.yml +++ b/.github/workflows/csa-bulk-dismissal.yml @@ -26,6 +26,9 @@ jobs: shell: bash run: | i=1 + + curl -u $OWNER:$ACCESS_TOKEN -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts?state=open&page=$i&per_page=$ALERTS_PER_PAGE" + LIST_OF_ALERTS=$(curl -u $OWNER:$ACCESS_TOKEN -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts?state=open&page=$i&per_page=$ALERTS_PER_PAGE"| jq .[].number ) while [ -n "$LIST_OF_ALERTS" ] @@ -53,4 +56,4 @@ jobs: rm -f data.json -# Built with ❤ by [Pipeline Foundation](http://pipeline.foundation) \ No newline at end of file +# Built with ❤ by [Pipeline Foundation](http://pipeline.foundation) From 1a66696685738b2e15841cb75770f823fe73d08e Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet <74899441+AleksIvanovSinglet@users.noreply.github.com> Date: Fri, 29 Jan 2021 17:43:30 +0200 Subject: [PATCH 038/194] test2 --- .github/workflows/csa-bulk-dismissal.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/csa-bulk-dismissal.yml b/.github/workflows/csa-bulk-dismissal.yml index 9575a6cc4..436ebcd6c 100644 --- a/.github/workflows/csa-bulk-dismissal.yml +++ b/.github/workflows/csa-bulk-dismissal.yml @@ -48,9 +48,17 @@ jobs: REQUIRED_STR=$ALERT_DESCRIPTION if [ "$ALERT_DESC" == "$REQUIRED_STR" ]; then + printf --- --- --- + echo Alert \#$index is $REQUIRED_STR + printf --- --- --- + ALERT_URL="https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts/$index" curl -u $OWNER:$ACCESS_TOKEN -X PATCH -H "Accept: application/vnd.github.v3+json" $ALERT_URL -d '{"state":"dismissed","dismissed_reason":"'"$DISMISS_REASON"'"}' + else + printf --- --- --- + echo Alert \#$index is not $REQUIRED_STR + printf --- --- --- fi done From 8a189a15d25eec681989ec0e32b99589c88fe0a3 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet <74899441+AleksIvanovSinglet@users.noreply.github.com> Date: Fri, 29 Jan 2021 17:47:55 +0200 Subject: [PATCH 039/194] test3 --- .github/workflows/csa-bulk-dismissal.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/csa-bulk-dismissal.yml b/.github/workflows/csa-bulk-dismissal.yml index 436ebcd6c..b2ffeece4 100644 --- a/.github/workflows/csa-bulk-dismissal.yml +++ b/.github/workflows/csa-bulk-dismissal.yml @@ -48,17 +48,17 @@ jobs: REQUIRED_STR=$ALERT_DESCRIPTION if [ "$ALERT_DESC" == "$REQUIRED_STR" ]; then - printf --- --- --- + printf \-\-\- \-\-\- \-\-\- echo Alert \#$index is $REQUIRED_STR - printf --- --- --- + printf \-\-\- \-\-\- \-\-\- ALERT_URL="https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts/$index" curl -u $OWNER:$ACCESS_TOKEN -X PATCH -H "Accept: application/vnd.github.v3+json" $ALERT_URL -d '{"state":"dismissed","dismissed_reason":"'"$DISMISS_REASON"'"}' else - printf --- --- --- + printf \-\-\- \-\-\- \-\-\- echo Alert \#$index is not $REQUIRED_STR - printf --- --- --- + printf \-\-\- \-\-\- \-\-\- fi done From faa3d545bb1b36142d411fcba74fc1832e5ff87c Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet <74899441+AleksIvanovSinglet@users.noreply.github.com> Date: Fri, 29 Jan 2021 17:51:07 +0200 Subject: [PATCH 040/194] test4 --- .github/workflows/csa-bulk-dismissal.yml | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/.github/workflows/csa-bulk-dismissal.yml b/.github/workflows/csa-bulk-dismissal.yml index b2ffeece4..fbef36d83 100644 --- a/.github/workflows/csa-bulk-dismissal.yml +++ b/.github/workflows/csa-bulk-dismissal.yml @@ -25,10 +25,7 @@ jobs: id: run_automation shell: bash run: | - i=1 - - curl -u $OWNER:$ACCESS_TOKEN -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts?state=open&page=$i&per_page=$ALERTS_PER_PAGE" - + i=1 LIST_OF_ALERTS=$(curl -u $OWNER:$ACCESS_TOKEN -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts?state=open&page=$i&per_page=$ALERTS_PER_PAGE"| jq .[].number ) while [ -n "$LIST_OF_ALERTS" ] @@ -48,17 +45,17 @@ jobs: REQUIRED_STR=$ALERT_DESCRIPTION if [ "$ALERT_DESC" == "$REQUIRED_STR" ]; then - printf \-\-\- \-\-\- \-\-\- + printf "\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*" echo Alert \#$index is $REQUIRED_STR - printf \-\-\- \-\-\- \-\-\- + printf "\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*" ALERT_URL="https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts/$index" curl -u $OWNER:$ACCESS_TOKEN -X PATCH -H "Accept: application/vnd.github.v3+json" $ALERT_URL -d '{"state":"dismissed","dismissed_reason":"'"$DISMISS_REASON"'"}' else - printf \-\-\- \-\-\- \-\-\- + printf "\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*" echo Alert \#$index is not $REQUIRED_STR - printf \-\-\- \-\-\- \-\-\- + printf "\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*" fi done From 4ce7ac9eb3d799570195a193dabd7c1d4cc46e23 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet <74899441+AleksIvanovSinglet@users.noreply.github.com> Date: Fri, 29 Jan 2021 18:54:56 +0200 Subject: [PATCH 041/194] test5 --- .github/workflows/csa-bulk-dismissal.yml | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/.github/workflows/csa-bulk-dismissal.yml b/.github/workflows/csa-bulk-dismissal.yml index fbef36d83..551015fd5 100644 --- a/.github/workflows/csa-bulk-dismissal.yml +++ b/.github/workflows/csa-bulk-dismissal.yml @@ -25,7 +25,7 @@ jobs: id: run_automation shell: bash run: | - i=1 + i=1 LIST_OF_ALERTS=$(curl -u $OWNER:$ACCESS_TOKEN -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts?state=open&page=$i&per_page=$ALERTS_PER_PAGE"| jq .[].number ) while [ -n "$LIST_OF_ALERTS" ] @@ -45,17 +45,9 @@ jobs: REQUIRED_STR=$ALERT_DESCRIPTION if [ "$ALERT_DESC" == "$REQUIRED_STR" ]; then - printf "\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*" - echo Alert \#$index is $REQUIRED_STR - printf "\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*" - ALERT_URL="https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts/$index" curl -u $OWNER:$ACCESS_TOKEN -X PATCH -H "Accept: application/vnd.github.v3+json" $ALERT_URL -d '{"state":"dismissed","dismissed_reason":"'"$DISMISS_REASON"'"}' - else - printf "\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*" - echo Alert \#$index is not $REQUIRED_STR - printf "\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*" fi done From 85bb26d6ee66137bd0ac8fd7ff600ce7e631dcdf Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet <74899441+AleksIvanovSinglet@users.noreply.github.com> Date: Fri, 29 Jan 2021 19:37:51 +0200 Subject: [PATCH 042/194] test6 --- .github/workflows/csa-bulk-dismissal.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/csa-bulk-dismissal.yml b/.github/workflows/csa-bulk-dismissal.yml index 551015fd5..e2c27727d 100644 --- a/.github/workflows/csa-bulk-dismissal.yml +++ b/.github/workflows/csa-bulk-dismissal.yml @@ -26,7 +26,7 @@ jobs: shell: bash run: | i=1 - LIST_OF_ALERTS=$(curl -u $OWNER:$ACCESS_TOKEN -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts?state=open&page=$i&per_page=$ALERTS_PER_PAGE"| jq .[].number ) + LIST_OF_ALERTS=$(curl -u $OWNER:$ACCESS_TOKEN -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts?state=open&page=$i&per_page=$ALERTS_PER_PAGE" | jq .[].number ) while [ -n "$LIST_OF_ALERTS" ] do @@ -34,7 +34,7 @@ jobs: ((i=i+1)) - LIST_OF_ALERTS=$(curl -u $OWNER:$ACCESS_TOKEN -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts?state=open&page=$i&per_page=$ALERTS_PER_PAGE"| jq .[].number ) + LIST_OF_ALERTS=$(curl -u $OWNER:$ACCESS_TOKEN -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts?state=open&page=$i&per_page=$ALERTS_PER_PAGE" | jq .[].number ) done LIST_OF_INDEXES=$(cat data.json) @@ -48,6 +48,8 @@ jobs: ALERT_URL="https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts/$index" curl -u $OWNER:$ACCESS_TOKEN -X PATCH -H "Accept: application/vnd.github.v3+json" $ALERT_URL -d '{"state":"dismissed","dismissed_reason":"'"$DISMISS_REASON"'"}' + else + echo Alert \#$index is not $REQUIRED_STR fi done From 1b9be5f2aabc9d0fa6e87556eefc9d1de51419ea Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet <74899441+AleksIvanovSinglet@users.noreply.github.com> Date: Fri, 29 Jan 2021 19:49:38 +0200 Subject: [PATCH 043/194] test7 --- .github/workflows/csa-bulk-dismissal.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/csa-bulk-dismissal.yml b/.github/workflows/csa-bulk-dismissal.yml index e2c27727d..ee6d79a58 100644 --- a/.github/workflows/csa-bulk-dismissal.yml +++ b/.github/workflows/csa-bulk-dismissal.yml @@ -13,7 +13,7 @@ jobs: ACCESS_TOKEN: ${{ secrets.CSA_ACCESS_TOKEN }} # requires security_events read/write permissions DISMISS_REASON: ${{ secrets.DISMISS_REASON_VAR }} # "false positive", "won't fix" or "used in tests". ALERTS_PER_PAGE: 100 - ALERT_DESCRIPTION: ${{ secrets.ALERT_DESCRIPTION }} + ALERT_DESCRIPTION: '"Calls to unmanaged code"' steps: - name: Install jq id: install_jq From 54992a96812c98e29f4bc9f53411f32568386741 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet <74899441+AleksIvanovSinglet@users.noreply.github.com> Date: Fri, 29 Jan 2021 20:10:54 +0200 Subject: [PATCH 044/194] test8 --- .github/workflows/csa-bulk-dismissal.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/csa-bulk-dismissal.yml b/.github/workflows/csa-bulk-dismissal.yml index ee6d79a58..cdd1bf66e 100644 --- a/.github/workflows/csa-bulk-dismissal.yml +++ b/.github/workflows/csa-bulk-dismissal.yml @@ -42,7 +42,7 @@ jobs: for index in $LIST_OF_INDEXES do ALERT_DESC=$(curl -u $OWNER:$ACCESS_TOKEN -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts/$index" | jq .rule.description) - REQUIRED_STR=$ALERT_DESCRIPTION + REQUIRED_STR="$ALERT_DESCRIPTION" if [ "$ALERT_DESC" == "$REQUIRED_STR" ]; then ALERT_URL="https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts/$index" From 7469c75db1066ddb1a0341377cfce4aa9778ea86 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet <74899441+AleksIvanovSinglet@users.noreply.github.com> Date: Fri, 29 Jan 2021 20:14:25 +0200 Subject: [PATCH 045/194] test9 --- .github/workflows/csa-bulk-dismissal.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/csa-bulk-dismissal.yml b/.github/workflows/csa-bulk-dismissal.yml index cdd1bf66e..9504727c1 100644 --- a/.github/workflows/csa-bulk-dismissal.yml +++ b/.github/workflows/csa-bulk-dismissal.yml @@ -44,6 +44,9 @@ jobs: ALERT_DESC=$(curl -u $OWNER:$ACCESS_TOKEN -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts/$index" | jq .rule.description) REQUIRED_STR="$ALERT_DESCRIPTION" + echo $ALERT_DESC + echo $REQUIRED_STR + if [ "$ALERT_DESC" == "$REQUIRED_STR" ]; then ALERT_URL="https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts/$index" From 3a0bf0236c46573a53821a6bcf192a9f5d9b2a86 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet <74899441+AleksIvanovSinglet@users.noreply.github.com> Date: Fri, 29 Jan 2021 20:24:47 +0200 Subject: [PATCH 046/194] test10 --- .github/workflows/csa-bulk-dismissal.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/csa-bulk-dismissal.yml b/.github/workflows/csa-bulk-dismissal.yml index 9504727c1..1144bec56 100644 --- a/.github/workflows/csa-bulk-dismissal.yml +++ b/.github/workflows/csa-bulk-dismissal.yml @@ -13,7 +13,7 @@ jobs: ACCESS_TOKEN: ${{ secrets.CSA_ACCESS_TOKEN }} # requires security_events read/write permissions DISMISS_REASON: ${{ secrets.DISMISS_REASON_VAR }} # "false positive", "won't fix" or "used in tests". ALERTS_PER_PAGE: 100 - ALERT_DESCRIPTION: '"Calls to unmanaged code"' + ALERT_DESCRIPTION: ${{ secrets.ALERT_DESCRIPTION }} steps: - name: Install jq id: install_jq From 093d723c164deeafa0e1a44ffc4637194a8b28b5 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet <74899441+AleksIvanovSinglet@users.noreply.github.com> Date: Fri, 29 Jan 2021 20:32:57 +0200 Subject: [PATCH 047/194] test11 --- .github/workflows/csa-bulk-dismissal.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/csa-bulk-dismissal.yml b/.github/workflows/csa-bulk-dismissal.yml index 1144bec56..9504727c1 100644 --- a/.github/workflows/csa-bulk-dismissal.yml +++ b/.github/workflows/csa-bulk-dismissal.yml @@ -13,7 +13,7 @@ jobs: ACCESS_TOKEN: ${{ secrets.CSA_ACCESS_TOKEN }} # requires security_events read/write permissions DISMISS_REASON: ${{ secrets.DISMISS_REASON_VAR }} # "false positive", "won't fix" or "used in tests". ALERTS_PER_PAGE: 100 - ALERT_DESCRIPTION: ${{ secrets.ALERT_DESCRIPTION }} + ALERT_DESCRIPTION: '"Calls to unmanaged code"' steps: - name: Install jq id: install_jq From 39a0b448cd261c05d2fda5b964c74fe885957151 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet <74899441+AleksIvanovSinglet@users.noreply.github.com> Date: Fri, 29 Jan 2021 21:15:11 +0200 Subject: [PATCH 048/194] test12 --- .github/workflows/csa-bulk-dismissal.yml | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/.github/workflows/csa-bulk-dismissal.yml b/.github/workflows/csa-bulk-dismissal.yml index 9504727c1..d3e061045 100644 --- a/.github/workflows/csa-bulk-dismissal.yml +++ b/.github/workflows/csa-bulk-dismissal.yml @@ -6,6 +6,9 @@ jobs: dismiss-alerts: name: Dismiss alerts runs-on: ubuntu-latest + strategy: + matrix: + ALERT_DESC: ['"Calls to unmanaged code"', '"Unmanaged code"'] env: # Settings OWNER: ${{ secrets.REPO_OWNER_VAR }} # verbatim from URL @@ -13,7 +16,7 @@ jobs: ACCESS_TOKEN: ${{ secrets.CSA_ACCESS_TOKEN }} # requires security_events read/write permissions DISMISS_REASON: ${{ secrets.DISMISS_REASON_VAR }} # "false positive", "won't fix" or "used in tests". ALERTS_PER_PAGE: 100 - ALERT_DESCRIPTION: '"Calls to unmanaged code"' + ALERT_DESCRIPTION: ${{ matrix.ALERT_DESC }} steps: - name: Install jq id: install_jq @@ -26,7 +29,7 @@ jobs: shell: bash run: | i=1 - LIST_OF_ALERTS=$(curl -u $OWNER:$ACCESS_TOKEN -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts?state=open&page=$i&per_page=$ALERTS_PER_PAGE" | jq .[].number ) + LIST_OF_ALERTS=$(curl -u $OWNER:$ACCESS_TOKEN -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts?state=open&page=$i&per_page=$ALERTS_PER_PAGE"| jq .[].number ) while [ -n "$LIST_OF_ALERTS" ] do @@ -34,7 +37,7 @@ jobs: ((i=i+1)) - LIST_OF_ALERTS=$(curl -u $OWNER:$ACCESS_TOKEN -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts?state=open&page=$i&per_page=$ALERTS_PER_PAGE" | jq .[].number ) + LIST_OF_ALERTS=$(curl -u $OWNER:$ACCESS_TOKEN -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts?state=open&page=$i&per_page=$ALERTS_PER_PAGE"| jq .[].number ) done LIST_OF_INDEXES=$(cat data.json) @@ -42,18 +45,17 @@ jobs: for index in $LIST_OF_INDEXES do ALERT_DESC=$(curl -u $OWNER:$ACCESS_TOKEN -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts/$index" | jq .rule.description) - REQUIRED_STR="$ALERT_DESCRIPTION" - echo $ALERT_DESC - echo $REQUIRED_STR + if [ "$ALERT_DESC" == "$ALERT_DESCRIPTION" ]; then - if [ "$ALERT_DESC" == "$REQUIRED_STR" ]; then ALERT_URL="https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts/$index" curl -u $OWNER:$ACCESS_TOKEN -X PATCH -H "Accept: application/vnd.github.v3+json" $ALERT_URL -d '{"state":"dismissed","dismissed_reason":"'"$DISMISS_REASON"'"}' + else - echo Alert \#$index is not $REQUIRED_STR + echo Alert \#$index is not "$ALERT_DESCRIPTION" fi + done rm -f data.json From 3b409dda26c08583cc17a9e985d5e9bc2c07d2ba Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet <74899441+AleksIvanovSinglet@users.noreply.github.com> Date: Fri, 29 Jan 2021 21:25:25 +0200 Subject: [PATCH 049/194] test13 --- .github/workflows/csa-bulk-dismissal.yml | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/.github/workflows/csa-bulk-dismissal.yml b/.github/workflows/csa-bulk-dismissal.yml index d3e061045..32bbdc06a 100644 --- a/.github/workflows/csa-bulk-dismissal.yml +++ b/.github/workflows/csa-bulk-dismissal.yml @@ -28,16 +28,16 @@ jobs: id: run_automation shell: bash run: | - i=1 - LIST_OF_ALERTS=$(curl -u $OWNER:$ACCESS_TOKEN -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts?state=open&page=$i&per_page=$ALERTS_PER_PAGE"| jq .[].number ) + page=1 + LIST_OF_ALERTS=$(curl -u $OWNER:$ACCESS_TOKEN -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts?state=open&page=$page&per_page=$ALERTS_PER_PAGE"| jq .[].number ) while [ -n "$LIST_OF_ALERTS" ] do echo -n $LIST_OF_ALERTS" " >> "data.json" - ((i=i+1)) + ((page=page+1)) - LIST_OF_ALERTS=$(curl -u $OWNER:$ACCESS_TOKEN -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts?state=open&page=$i&per_page=$ALERTS_PER_PAGE"| jq .[].number ) + LIST_OF_ALERTS=$(curl -u $OWNER:$ACCESS_TOKEN -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts?state=open&page=$page&per_page=$ALERTS_PER_PAGE"| jq .[].number ) done LIST_OF_INDEXES=$(cat data.json) @@ -47,15 +47,10 @@ jobs: ALERT_DESC=$(curl -u $OWNER:$ACCESS_TOKEN -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts/$index" | jq .rule.description) if [ "$ALERT_DESC" == "$ALERT_DESCRIPTION" ]; then - ALERT_URL="https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts/$index" curl -u $OWNER:$ACCESS_TOKEN -X PATCH -H "Accept: application/vnd.github.v3+json" $ALERT_URL -d '{"state":"dismissed","dismissed_reason":"'"$DISMISS_REASON"'"}' - - else - echo Alert \#$index is not "$ALERT_DESCRIPTION" fi - done rm -f data.json From 4f14f926927c3b8b2f414343f6d519ce0f7b9332 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet <74899441+AleksIvanovSinglet@users.noreply.github.com> Date: Fri, 29 Jan 2021 21:34:51 +0200 Subject: [PATCH 050/194] test14 --- .github/workflows/csa-bulk-dismissal.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/csa-bulk-dismissal.yml b/.github/workflows/csa-bulk-dismissal.yml index 32bbdc06a..56a649ef0 100644 --- a/.github/workflows/csa-bulk-dismissal.yml +++ b/.github/workflows/csa-bulk-dismissal.yml @@ -8,7 +8,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - ALERT_DESC: ['"Calls to unmanaged code"', '"Unmanaged code"'] + ALERT_DESC: ${{ secrets.ALERT_DESCRIPTION_ARRAY }} env: # Settings OWNER: ${{ secrets.REPO_OWNER_VAR }} # verbatim from URL From d8b063da0a3b0a3b9c5582c281e4aac20a321e68 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Fri, 29 Jan 2021 21:37:21 +0200 Subject: [PATCH 051/194] improve CSABD pipeline --- .github/workflows/csa-bulk-dismissal.yml | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/.github/workflows/csa-bulk-dismissal.yml b/.github/workflows/csa-bulk-dismissal.yml index 8eddb7c74..32bbdc06a 100644 --- a/.github/workflows/csa-bulk-dismissal.yml +++ b/.github/workflows/csa-bulk-dismissal.yml @@ -6,6 +6,9 @@ jobs: dismiss-alerts: name: Dismiss alerts runs-on: ubuntu-latest + strategy: + matrix: + ALERT_DESC: ['"Calls to unmanaged code"', '"Unmanaged code"'] env: # Settings OWNER: ${{ secrets.REPO_OWNER_VAR }} # verbatim from URL @@ -13,7 +16,7 @@ jobs: ACCESS_TOKEN: ${{ secrets.CSA_ACCESS_TOKEN }} # requires security_events read/write permissions DISMISS_REASON: ${{ secrets.DISMISS_REASON_VAR }} # "false positive", "won't fix" or "used in tests". ALERTS_PER_PAGE: 100 - ALERT_DESCRIPTION: ${{ secrets.ALERT_DESCRIPTION }} + ALERT_DESCRIPTION: ${{ matrix.ALERT_DESC }} steps: - name: Install jq id: install_jq @@ -25,16 +28,16 @@ jobs: id: run_automation shell: bash run: | - i=1 - LIST_OF_ALERTS=$(curl -u $OWNER:$ACCESS_TOKEN -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts?state=open&page=$i&per_page=$ALERTS_PER_PAGE"| jq .[].number ) + page=1 + LIST_OF_ALERTS=$(curl -u $OWNER:$ACCESS_TOKEN -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts?state=open&page=$page&per_page=$ALERTS_PER_PAGE"| jq .[].number ) while [ -n "$LIST_OF_ALERTS" ] do echo -n $LIST_OF_ALERTS" " >> "data.json" - ((i=i+1)) + ((page=page+1)) - LIST_OF_ALERTS=$(curl -u $OWNER:$ACCESS_TOKEN -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts?state=open&page=$i&per_page=$ALERTS_PER_PAGE"| jq .[].number ) + LIST_OF_ALERTS=$(curl -u $OWNER:$ACCESS_TOKEN -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts?state=open&page=$page&per_page=$ALERTS_PER_PAGE"| jq .[].number ) done LIST_OF_INDEXES=$(cat data.json) @@ -42,9 +45,8 @@ jobs: for index in $LIST_OF_INDEXES do ALERT_DESC=$(curl -u $OWNER:$ACCESS_TOKEN -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts/$index" | jq .rule.description) - REQUIRED_STR=$ALERT_DESCRIPTION - if [ "$ALERT_DESC" == "$REQUIRED_STR" ]; then + if [ "$ALERT_DESC" == "$ALERT_DESCRIPTION" ]; then ALERT_URL="https://api.github.com/repos/$OWNER/$PROJECT_NAME/code-scanning/alerts/$index" curl -u $OWNER:$ACCESS_TOKEN -X PATCH -H "Accept: application/vnd.github.v3+json" $ALERT_URL -d '{"state":"dismissed","dismissed_reason":"'"$DISMISS_REASON"'"}' @@ -53,4 +55,4 @@ jobs: rm -f data.json -# Built with ❤ by [Pipeline Foundation](http://pipeline.foundation) \ No newline at end of file +# Built with ❤ by [Pipeline Foundation](http://pipeline.foundation) From 240a42938299b7acb78bd1bb85e397dc6273cdfc Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Fri, 29 Jan 2021 21:38:56 +0200 Subject: [PATCH 052/194] improve CSABD pipeline --- .github/workflows/csa-bulk-dismissal.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/csa-bulk-dismissal.yml b/.github/workflows/csa-bulk-dismissal.yml index 32bbdc06a..71596cd35 100644 --- a/.github/workflows/csa-bulk-dismissal.yml +++ b/.github/workflows/csa-bulk-dismissal.yml @@ -55,4 +55,4 @@ jobs: rm -f data.json -# Built with ❤ by [Pipeline Foundation](http://pipeline.foundation) +# Built with ❤ by [Pipeline Foundation](https://pipeline.foundation) From 0b10b1753dfc34aef157000368cefefc1392c749 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 1 Feb 2021 15:56:22 +0200 Subject: [PATCH 053/194] change all 'your project' to 'the project' --- CI-CD_DOCUMENTATION.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/CI-CD_DOCUMENTATION.md b/CI-CD_DOCUMENTATION.md index 3959ca091..824d9490c 100644 --- a/CI-CD_DOCUMENTATION.md +++ b/CI-CD_DOCUMENTATION.md @@ -20,7 +20,7 @@ - Select an account for your organization setup -- On Repository Access select "Only select repositories" and select your project and click the "Save" button +- On Repository Access select "Only select repositories" and select the project and click the "Save" button - On the "Create organization page" don't change your Key and click "Continue" @@ -30,7 +30,7 @@ - From the dropdown select "Analyze new project" -- Select your project and click "Set Up" button at the top right corner +- Select the project and click "Set Up" button at the top right corner - Under the "Choose another analysis method" sign click the "With Github Actions" sign @@ -86,9 +86,9 @@ NOTE: **screenshots are only exemplary** ## *. Set up Dependabot -Dependabot is a GitHub native security tool that goes through the dependencies in your project and creates alerts, and PRs with updates when a new and/or non-vulnerable version is found. +Dependabot is a GitHub native security tool that goes through the dependencies in the project and creates alerts, and PRs with updates when a new and/or non-vulnerable version is found. -- for PRs with version updates, this pipeline comes pre-configured for all current dependency sources in your project, so at "Insights" tab -> "Dependency graph" -> "Dependabot", you should be able to see all tracked sources of dependencies, when they have been checked last and view a full log of the last check +- for PRs with version updates, this pipeline comes pre-configured for all current dependency sources in the project, so at "Insights" tab -> "Dependency graph" -> "Dependabot", you should be able to see all tracked sources of dependencies, when they have been checked last and view a full log of the last check ![Dependabot_tab](/ScreenShots/CI-CD_DOCUMENTATION/Dependabot_tab.png) @@ -103,7 +103,7 @@ Dependabot is a GitHub native security tool that goes through the dependencies i 3. Click "Enable" for both "Dependabot alerts" and "Dependabot security updates" -- By enabling "Dependabot alerts", you would be notified for any vulnerable dependencies in your project. At "Security" tab -> "Dependabot alerts", you can manage all alerts. By clicking on an alert, you would be able to see a detailed explanation of the vulnerability and a viable solution. +- By enabling "Dependabot alerts", you would be notified for any vulnerable dependencies in the project. At "Security" tab -> "Dependabot alerts", you can manage all alerts. By clicking on an alert, you would be able to see a detailed explanation of the vulnerability and a viable solution. ![Dependabot_alerts_page](/ScreenShots/CI-CD_DOCUMENTATION/Dependabot_alerts_page.png) From f1263412648d65a24838a3bc714dc8a9d7f4338b Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Tue, 2 Feb 2021 12:46:12 +0200 Subject: [PATCH 054/194] add an entry for the CSABD description filtering to the docs --- CI-CD_DOCUMENTATION.md | 24 ++++++++++++++++-- .../CI-CD_DOCUMENTATION/CSA_custom_1.png | Bin 0 -> 15448 bytes .../CI-CD_DOCUMENTATION/CSA_custom_2.png | Bin 0 -> 3637 bytes 3 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 ScreenShots/CI-CD_DOCUMENTATION/CSA_custom_1.png create mode 100644 ScreenShots/CI-CD_DOCUMENTATION/CSA_custom_2.png diff --git a/CI-CD_DOCUMENTATION.md b/CI-CD_DOCUMENTATION.md index 824d9490c..7f2fca4d3 100644 --- a/CI-CD_DOCUMENTATION.md +++ b/CI-CD_DOCUMENTATION.md @@ -146,9 +146,11 @@ We've also configured CodeQL to run on schedule, so every day at 8:00AM UTC, it ![CodeQL_alert_page](/ScreenShots/CI-CD_DOCUMENTATION/CodeQL_alert_page.png) -### Code scanning alerts bulk dismissal +### Code scanning alerts bulk dismissal tool ##### - currently, GitHub allows for only 25 code scanning alerts to be dismissed at a time. Sometimes, you might have hundreds you would like to dismiss, so you will have to click many times and wait for a long time to dismiss them. Via the "csa-bulk-dismissal.yml", you would be able to that with one click. +NOTE: This tool executes manual **only**. It won't execute on any other GitHub event like push commit, PR creation etc. + #### 1. Setup 1. In your repo, go to the Settings tab -> Secrets @@ -215,7 +217,25 @@ We've also configured CodeQL to run on schedule, so every day at 8:00AM UTC, it NOTE: "closed" refers to "dismissed" alerts -NOTE: **screenshots are only exemplary** +#### 3. Customization + +The "ALERT_DESC" strategy matrix in the pipeline, allows for more precise filtering of alerts to bulk dismiss. It uses the description of the alert to determine if it has to be dismissed or not. We've added the following alert descriptions by default: + +- "Calls to unmanaged code" +- "Unmanaged code" + +To add more descriptions, follow these steps: + +1. In your source code, open ".github/workflows/csa-bulk-dismissal.yml" +2. On line 11, notice "ALERT_DESC: ['"Calls to unmanaged code"', '"Unmanaged code"']". This is the array of descriptions that the CSABD (Code scanning alerts bulk dismissal) tool uses to filter through the alerts: + +![CSA_custom_1](/ScreenShots/CI-CD_DOCUMENTATION/CSA_custom_1.png) + +3. To add more descriptions use comma separation, followed by a single space and the description enclosed in double quotes, then enclosed in single quotes: + +![CSA_custom_2](/ScreenShots/CI-CD_DOCUMENTATION/CSA_custom_2.png) + +# Built with ❤ by [Pipeline Foundation](https://pipeline.foundation) \ No newline at end of file diff --git a/ScreenShots/CI-CD_DOCUMENTATION/CSA_custom_1.png b/ScreenShots/CI-CD_DOCUMENTATION/CSA_custom_1.png new file mode 100644 index 0000000000000000000000000000000000000000..908e739a3ccc416cd0a0867abcaedfa193bc59e0 GIT binary patch literal 15448 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 literal 0 HcmV?d00001 diff --git a/ScreenShots/CI-CD_DOCUMENTATION/CSA_custom_2.png b/ScreenShots/CI-CD_DOCUMENTATION/CSA_custom_2.png new file mode 100644 index 0000000000000000000000000000000000000000..9c646ad953c6978b8a9c3120a4f6d39d5945cf3c GIT binary patch literal 3637 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 Date: Tue, 2 Feb 2021 14:17:41 +0200 Subject: [PATCH 055/194] correct pipeline name --- .github/workflows/main.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 4f3ae769a..8e8b5c65c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,18 +1,15 @@ -name: Build +name: Notepads CI/CD Pipeline on: [push, pull_request, workflow_dispatch] jobs: - build: - strategy: matrix: configuration: [Debug, Release] env: Solution_Name: src\Notepads.sln Project_Path: src\Notepads\Notepads.csproj - runs-on: windows-latest steps: From dbe12651d99df8777d2d59a166e3b316de32d1a3 Mon Sep 17 00:00:00 2001 From: szlatkow Date: Wed, 3 Feb 2021 09:33:27 +0200 Subject: [PATCH 056/194] Test if the package building is working. --- .github/workflows/cd.yml | 52 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 .github/workflows/cd.yml diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml new file mode 100644 index 000000000..c58b87700 --- /dev/null +++ b/.github/workflows/cd.yml @@ -0,0 +1,52 @@ +name: Notepads CD Pipeline + +on: [push, pull_request, workflow_dispatch] + +jobs: + build: + strategy: + matrix: + configuration: [Debug, Release] + env: + SigningCertificate: GitHubActionsDemo.pfx + Solution_Path: src/Notepads.sln + Wpf_Project_Path: src/Notepads/Notepads.csproj + Wap_Project_Directory: Notepads.Package + Wap_Project_Name: Notepads.Package.wapproj + runs-on: windows-latest + steps: + + - uses: actions/checkout@v2 + id: actions_checkout + with: + fetch-depth: 50 + + - name: Install .NET Core + uses: actions/setup-dotnet@v1 + with: + dotnet-version: 3.1.100 + + - name: Setup MSBuild.exe + uses: microsoft/setup-msbuild@v1.0.0 + + - name: Restore the application + id: restore_application + run: msbuild $env:Solution_Name /t:Restore /p:Configuration=$env:Configuration /p:RuntimeIdentifier=$env:RuntimeIdentifier + env: + Configuration: ${{ matrix.configuration }} + + - name: Build the Windows Application Packaging Project (wapproj) + id: build_app + run: msbuild $env:Solution_Path /p:Platform=$env:TargetPlatform /p:Configuration=$env:Configuration /p:UapAppxPackageBuildMode=$env:BuildMode /p:AppxBundle=$env:AppxBundle /p:AppxPackageSigningEnabled=false + env: + Appx_Bundle: Never + BuildMode: SideLoadOnly + Appx_Bundle_Platforms: x86|x64 + Appx_Package_Build_Mode: StoreUpload + Configuration: ${{ matrix.configuration }} + + - name: Upload build artifacts + uses: actions/upload-artifact@v1 + with: + name: MSIX Package + path: Notepads.Package\AppPackages\ \ No newline at end of file From 10fe1d37bba73e260c15ba2f371eb91ba2151ff4 Mon Sep 17 00:00:00 2001 From: szlatkow Date: Wed, 3 Feb 2021 09:56:13 +0200 Subject: [PATCH 057/194] upgrade versions on msbuild and dotnet. --- .github/workflows/cd.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index c58b87700..8cf8a1192 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -23,11 +23,10 @@ jobs: - name: Install .NET Core uses: actions/setup-dotnet@v1 - with: - dotnet-version: 3.1.100 - - name: Setup MSBuild.exe - uses: microsoft/setup-msbuild@v1.0.0 + - name: Setup MSBuild + id: setup_msbuild + uses: microsoft/setup-msbuild@v1 - name: Restore the application id: restore_application From be8096c4c895eeff0f9e27f834e919b01d3a00dc Mon Sep 17 00:00:00 2001 From: szlatkow Date: Wed, 3 Feb 2021 09:59:21 +0200 Subject: [PATCH 058/194] add env for solution name. --- .github/workflows/cd.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 8cf8a1192..ab0878609 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -13,6 +13,8 @@ jobs: Wpf_Project_Path: src/Notepads/Notepads.csproj Wap_Project_Directory: Notepads.Package Wap_Project_Name: Notepads.Package.wapproj + Solution_Name: src\Notepads.sln + Project_Path: src\Notepads\Notepads.csproj runs-on: windows-latest steps: From 751e7b9dff6412c90a26dca7ae7b934f8201bddc Mon Sep 17 00:00:00 2001 From: szlatkow Date: Wed, 3 Feb 2021 10:05:24 +0200 Subject: [PATCH 059/194] Add TargetPlatform. --- .github/workflows/cd.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index ab0878609..86c8fcd3f 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -45,6 +45,7 @@ jobs: Appx_Bundle_Platforms: x86|x64 Appx_Package_Build_Mode: StoreUpload Configuration: ${{ matrix.configuration }} + TargetPlatform: ${{ matrix.targetplatform }} - name: Upload build artifacts uses: actions/upload-artifact@v1 From 3dbabfa075de34641a2a187109a25665b342a514 Mon Sep 17 00:00:00 2001 From: szlatkow Date: Wed, 3 Feb 2021 10:16:34 +0200 Subject: [PATCH 060/194] eddit the env for the build process. --- .github/workflows/cd.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 86c8fcd3f..f53744ab4 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -42,8 +42,6 @@ jobs: env: Appx_Bundle: Never BuildMode: SideLoadOnly - Appx_Bundle_Platforms: x86|x64 - Appx_Package_Build_Mode: StoreUpload Configuration: ${{ matrix.configuration }} TargetPlatform: ${{ matrix.targetplatform }} From d9eacd7ba817c81e386007c5604416ca9e07ddd8 Mon Sep 17 00:00:00 2001 From: szlatkow Date: Wed, 3 Feb 2021 10:22:40 +0200 Subject: [PATCH 061/194] change the configuration. --- .github/workflows/cd.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index f53744ab4..791240338 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -6,7 +6,7 @@ jobs: build: strategy: matrix: - configuration: [Debug, Release] + configuration: [Release] env: SigningCertificate: GitHubActionsDemo.pfx Solution_Path: src/Notepads.sln @@ -42,7 +42,7 @@ jobs: env: Appx_Bundle: Never BuildMode: SideLoadOnly - Configuration: ${{ matrix.configuration }} + Configuration: Release TargetPlatform: ${{ matrix.targetplatform }} - name: Upload build artifacts From 8807a205733b122aadf969f1e525bdb9eba37e1a Mon Sep 17 00:00:00 2001 From: szlatkow Date: Wed, 3 Feb 2021 10:57:45 +0200 Subject: [PATCH 062/194] replace the run step on the build --- .github/workflows/cd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 791240338..7c87a0be6 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -38,7 +38,7 @@ jobs: - name: Build the Windows Application Packaging Project (wapproj) id: build_app - run: msbuild $env:Solution_Path /p:Platform=$env:TargetPlatform /p:Configuration=$env:Configuration /p:UapAppxPackageBuildMode=$env:BuildMode /p:AppxBundle=$env:AppxBundle /p:AppxPackageSigningEnabled=false + run: msbuild $env:Solution_Path /p:Platform=$env:TargetPlatform /p:Configuration=$env:Configuration /p:UapAppxPackageBuildMode=$env:BuildMode /p:AppxBundle=$env:AppxBundle /p:PackageCertificateKeyFile=$env:SigningCertificate /p:PackageCertificatePassword=${{ secrets.Pfx_Key }} env: Appx_Bundle: Never BuildMode: SideLoadOnly From a0aab2c733b983d4852d27e99329bd1e7dac34f1 Mon Sep 17 00:00:00 2001 From: szlatkow Date: Wed, 3 Feb 2021 11:30:54 +0200 Subject: [PATCH 063/194] use different env for solution name --- .github/workflows/cd.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 7c87a0be6..3167e8d37 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -9,8 +9,8 @@ jobs: configuration: [Release] env: SigningCertificate: GitHubActionsDemo.pfx - Solution_Path: src/Notepads.sln - Wpf_Project_Path: src/Notepads/Notepads.csproj + Solution_Path: src\Notepads.sln + Wpf_Project_Path: src\Notepads\Notepads.csproj Wap_Project_Directory: Notepads.Package Wap_Project_Name: Notepads.Package.wapproj Solution_Name: src\Notepads.sln @@ -38,7 +38,7 @@ jobs: - name: Build the Windows Application Packaging Project (wapproj) id: build_app - run: msbuild $env:Solution_Path /p:Platform=$env:TargetPlatform /p:Configuration=$env:Configuration /p:UapAppxPackageBuildMode=$env:BuildMode /p:AppxBundle=$env:AppxBundle /p:PackageCertificateKeyFile=$env:SigningCertificate /p:PackageCertificatePassword=${{ secrets.Pfx_Key }} + run: msbuild $env:Solution_Name /p:Platform=$env:TargetPlatform /p:Configuration=$env:Configuration /p:UapAppxPackageBuildMode=$env:BuildMode /p:AppxBundle=$env:AppxBundle /p:PackageCertificateKeyFile=$env:SigningCertificate /p:PackageCertificatePassword=${{ secrets.Pfx_Key }} env: Appx_Bundle: Never BuildMode: SideLoadOnly From c0fe4b324dfa1426ad743de22a1e6dfdcd388334 Mon Sep 17 00:00:00 2001 From: szlatkow Date: Wed, 3 Feb 2021 11:38:21 +0200 Subject: [PATCH 064/194] use Project_Path instead of Solution _Path in the build step. --- .github/workflows/cd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 3167e8d37..550502ae1 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -38,7 +38,7 @@ jobs: - name: Build the Windows Application Packaging Project (wapproj) id: build_app - run: msbuild $env:Solution_Name /p:Platform=$env:TargetPlatform /p:Configuration=$env:Configuration /p:UapAppxPackageBuildMode=$env:BuildMode /p:AppxBundle=$env:AppxBundle /p:PackageCertificateKeyFile=$env:SigningCertificate /p:PackageCertificatePassword=${{ secrets.Pfx_Key }} + run: msbuild $env:Project_Path /p:Platform=$env:TargetPlatform /p:Configuration=$env:Configuration /p:UapAppxPackageBuildMode=$env:BuildMode /p:AppxBundle=$env:AppxBundle /p:PackageCertificateKeyFile=$env:SigningCertificate /p:PackageCertificatePassword=${{ secrets.Pfx_Key }} env: Appx_Bundle: Never BuildMode: SideLoadOnly From bb3e0a851cf62ceba81b5ca439341907bba5c505 Mon Sep 17 00:00:00 2001 From: szlatkow Date: Wed, 3 Feb 2021 11:52:31 +0200 Subject: [PATCH 065/194] disable package signing. --- .github/workflows/cd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 550502ae1..33caf728b 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -38,7 +38,7 @@ jobs: - name: Build the Windows Application Packaging Project (wapproj) id: build_app - run: msbuild $env:Project_Path /p:Platform=$env:TargetPlatform /p:Configuration=$env:Configuration /p:UapAppxPackageBuildMode=$env:BuildMode /p:AppxBundle=$env:AppxBundle /p:PackageCertificateKeyFile=$env:SigningCertificate /p:PackageCertificatePassword=${{ secrets.Pfx_Key }} + run: msbuild $env:Solution_Path /p:Platform=$env:TargetPlatform /p:Configuration=$env:Configuration /p:UapAppxPackageBuildMode=$env:BuildMode /p:AppxBundle=$env:AppxBundle /p:AppxPackageSigningEnabled=false env: Appx_Bundle: Never BuildMode: SideLoadOnly From 9987aedf9b9ec55078b14df39ce68b94b46db182 Mon Sep 17 00:00:00 2001 From: szlatkow Date: Wed, 3 Feb 2021 11:59:29 +0200 Subject: [PATCH 066/194] et Appx_Bundle_Platforms: x86|x64 and turn off the trigger for other workflows. --- .github/workflows/Build.yml | 2 +- .github/workflows/cd.yml | 1 + .github/workflows/codeql-analysis.yml | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/Build.yml b/.github/workflows/Build.yml index 44df7c1a6..a559165ab 100644 --- a/.github/workflows/Build.yml +++ b/.github/workflows/Build.yml @@ -1,6 +1,6 @@ name: Build -on: [push, pull_request] +#on: [push, pull_request] jobs: diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 33caf728b..1bb1b58cf 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -41,6 +41,7 @@ jobs: run: msbuild $env:Solution_Path /p:Platform=$env:TargetPlatform /p:Configuration=$env:Configuration /p:UapAppxPackageBuildMode=$env:BuildMode /p:AppxBundle=$env:AppxBundle /p:AppxPackageSigningEnabled=false env: Appx_Bundle: Never + Appx_Bundle_Platforms: x86|x64 BuildMode: SideLoadOnly Configuration: Release TargetPlatform: ${{ matrix.targetplatform }} diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 654e339b6..d6a753e66 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -1,6 +1,6 @@ name: CodeQL Analysis -on: +#on: push: pull_request: schedule: From 698c126a2d3affb75fd8ecf9fbaf83b5edb6a685 Mon Sep 17 00:00:00 2001 From: szlatkow Date: Wed, 3 Feb 2021 12:11:25 +0200 Subject: [PATCH 067/194] set target platform . --- .github/workflows/cd.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 1bb1b58cf..c74939b9a 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -41,9 +41,9 @@ jobs: run: msbuild $env:Solution_Path /p:Platform=$env:TargetPlatform /p:Configuration=$env:Configuration /p:UapAppxPackageBuildMode=$env:BuildMode /p:AppxBundle=$env:AppxBundle /p:AppxPackageSigningEnabled=false env: Appx_Bundle: Never - Appx_Bundle_Platforms: x86|x64 + Appx_Bundle_Platforms: ${{ matrix.targetplatform }} BuildMode: SideLoadOnly - Configuration: Release + Configuration: ${{ matrix.configuration }} TargetPlatform: ${{ matrix.targetplatform }} - name: Upload build artifacts From 8539737ce4f453c64d76828ca4f6eb07e44327b0 Mon Sep 17 00:00:00 2001 From: szlatkow Date: Wed, 3 Feb 2021 12:18:48 +0200 Subject: [PATCH 068/194] add matrix targetplatform --- .github/workflows/cd.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index c74939b9a..75715455c 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -7,6 +7,7 @@ jobs: strategy: matrix: configuration: [Release] + targetplatform: [x86,x64] env: SigningCertificate: GitHubActionsDemo.pfx Solution_Path: src\Notepads.sln From 45d45e2669f479232a4299f3a07d3cb4ae0f18ad Mon Sep 17 00:00:00 2001 From: szlatkow Date: Wed, 3 Feb 2021 18:11:13 +0200 Subject: [PATCH 069/194] ussing project instead of solution for the build process. --- .github/workflows/cd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 75715455c..388874e65 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -39,7 +39,7 @@ jobs: - name: Build the Windows Application Packaging Project (wapproj) id: build_app - run: msbuild $env:Solution_Path /p:Platform=$env:TargetPlatform /p:Configuration=$env:Configuration /p:UapAppxPackageBuildMode=$env:BuildMode /p:AppxBundle=$env:AppxBundle /p:AppxPackageSigningEnabled=false + run: msbuild $env:Project_Path /p:Platform=$env:TargetPlatform /p:Configuration=$env:Configuration /p:UapAppxPackageBuildMode=$env:BuildMode /p:AppxBundle=$env:AppxBundle /p:AppxPackageSigningEnabled=false env: Appx_Bundle: Never Appx_Bundle_Platforms: ${{ matrix.targetplatform }} From 63f781376a5936fe94ff66ccf04eb6d1ab8c69ea Mon Sep 17 00:00:00 2001 From: szlatkow Date: Wed, 3 Feb 2021 22:38:40 +0200 Subject: [PATCH 070/194] switched off the trigger for main.yml and changed the path of the package. --- .github/workflows/cd.yml | 2 +- .github/workflows/main.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 388874e65..ae17b29e1 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -51,4 +51,4 @@ jobs: uses: actions/upload-artifact@v1 with: name: MSIX Package - path: Notepads.Package\AppPackages\ \ No newline at end of file + path: Notepads\Notepads.Package \ No newline at end of file diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 8e8b5c65c..5eae27392 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,6 +1,6 @@ name: Notepads CI/CD Pipeline -on: [push, pull_request, workflow_dispatch] +#on: [push, pull_request, workflow_dispatch] jobs: build: From 6bf65fff6bb423c5ff45c28243d3d235b307d0de Mon Sep 17 00:00:00 2001 From: szlatkow Date: Wed, 3 Feb 2021 22:47:57 +0200 Subject: [PATCH 071/194] change the path for the package. --- .github/workflows/cd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index ae17b29e1..edeeb8e19 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -51,4 +51,4 @@ jobs: uses: actions/upload-artifact@v1 with: name: MSIX Package - path: Notepads\Notepads.Package \ No newline at end of file + path: .\Notepads.Package \ No newline at end of file From 506276a0cd8b7e8a91e6befe9c624f6a3fe5b864 Mon Sep 17 00:00:00 2001 From: szlatkow Date: Thu, 4 Feb 2021 11:23:48 +0200 Subject: [PATCH 072/194] run the ls command --- .github/workflows/cd.yml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index edeeb8e19..9acd368e5 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -47,8 +47,10 @@ jobs: Configuration: ${{ matrix.configuration }} TargetPlatform: ${{ matrix.targetplatform }} - - name: Upload build artifacts - uses: actions/upload-artifact@v1 - with: - name: MSIX Package - path: .\Notepads.Package \ No newline at end of file + - name: Run ls in main folder + run: gci + # - name: Upload build artifacts + # uses: actions/upload-artifact@v1 + # with: + # name: MSIX Package + # path: .\Notepads.App \ No newline at end of file From d01730b34d82a89a3869033ad59bbf7e44dc60ef Mon Sep 17 00:00:00 2001 From: szlatkow Date: Thu, 4 Feb 2021 11:37:44 +0200 Subject: [PATCH 073/194] use Get-ChildItem -Depth 1 insted of gci. --- .github/workflows/cd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 9acd368e5..2b097b9b7 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -48,7 +48,7 @@ jobs: TargetPlatform: ${{ matrix.targetplatform }} - name: Run ls in main folder - run: gci + run: Get-ChildItem -Depth 1 # - name: Upload build artifacts # uses: actions/upload-artifact@v1 # with: From a38d1db936054126b069061f3ccccbcb8982c6b7 Mon Sep 17 00:00:00 2001 From: szlatkow Date: Thu, 4 Feb 2021 11:49:30 +0200 Subject: [PATCH 074/194] use Depth 5 --- .github/workflows/cd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 2b097b9b7..b3d2a1370 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -48,7 +48,7 @@ jobs: TargetPlatform: ${{ matrix.targetplatform }} - name: Run ls in main folder - run: Get-ChildItem -Depth 1 + run: Get-ChildItem -Depth 5 # - name: Upload build artifacts # uses: actions/upload-artifact@v1 # with: From 3a28a8bfc27b1cb5a35c48ef53be0a7f1497bb0e Mon Sep 17 00:00:00 2001 From: szlatkow Date: Thu, 4 Feb 2021 12:07:05 +0200 Subject: [PATCH 075/194] change depth to 20 --- .github/workflows/cd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index b3d2a1370..639738d09 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -48,7 +48,7 @@ jobs: TargetPlatform: ${{ matrix.targetplatform }} - name: Run ls in main folder - run: Get-ChildItem -Depth 5 + run: Get-ChildItem -Depth 20 # - name: Upload build artifacts # uses: actions/upload-artifact@v1 # with: From ef4ce15b386d947faa6000fa4983acae9857de80 Mon Sep 17 00:00:00 2001 From: szlatkow Date: Thu, 4 Feb 2021 17:26:24 +0200 Subject: [PATCH 076/194] change directory of the msix package. --- .github/workflows/cd.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 639738d09..3a8dba99a 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -14,7 +14,6 @@ jobs: Wpf_Project_Path: src\Notepads\Notepads.csproj Wap_Project_Directory: Notepads.Package Wap_Project_Name: Notepads.Package.wapproj - Solution_Name: src\Notepads.sln Project_Path: src\Notepads\Notepads.csproj runs-on: windows-latest steps: @@ -33,7 +32,7 @@ jobs: - name: Restore the application id: restore_application - run: msbuild $env:Solution_Name /t:Restore /p:Configuration=$env:Configuration /p:RuntimeIdentifier=$env:RuntimeIdentifier + run: msbuild $env:Solution_Path /t:Restore /p:Configuration=$env:Configuration /p:RuntimeIdentifier=$env:RuntimeIdentifier env: Configuration: ${{ matrix.configuration }} @@ -49,8 +48,9 @@ jobs: - name: Run ls in main folder run: Get-ChildItem -Depth 20 - # - name: Upload build artifacts - # uses: actions/upload-artifact@v1 - # with: - # name: MSIX Package - # path: .\Notepads.App \ No newline at end of file + + - name: Upload build artifacts + uses: actions/upload-artifact@v1 + with: + name: MSIX Package + path: ${{ env.Wap_Project_Directory }}\AppPackages \ No newline at end of file From db42979583d7bf8e9a334770ee0b1600288c45db Mon Sep 17 00:00:00 2001 From: szlatkow Date: Thu, 4 Feb 2021 17:39:10 +0200 Subject: [PATCH 077/194] use the github demo signing, --- .github/workflows/cd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 3a8dba99a..bb2c83018 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -38,7 +38,7 @@ jobs: - name: Build the Windows Application Packaging Project (wapproj) id: build_app - run: msbuild $env:Project_Path /p:Platform=$env:TargetPlatform /p:Configuration=$env:Configuration /p:UapAppxPackageBuildMode=$env:BuildMode /p:AppxBundle=$env:AppxBundle /p:AppxPackageSigningEnabled=false + run: msbuild $env:Project_Path /p:Platform=$env:TargetPlatform /p:Configuration=$env:Configuration /p:UapAppxPackageBuildMode=$env:BuildMode /p:AppxBundle=$env:AppxBundle /p:PackageCertificateKeyFile=$env:SigningCertificate /p:PackageCertificatePassword=${{ secrets.Pfx_Key }} env: Appx_Bundle: Never Appx_Bundle_Platforms: ${{ matrix.targetplatform }} From 0d060f696fc35219ece17456a6ef8b4f102b3e06 Mon Sep 17 00:00:00 2001 From: szlatkow Date: Mon, 8 Feb 2021 09:43:32 +0200 Subject: [PATCH 078/194] Change build mode to StoreUpload --- .github/workflows/cd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index bb2c83018..b14d3d0e7 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -42,7 +42,7 @@ jobs: env: Appx_Bundle: Never Appx_Bundle_Platforms: ${{ matrix.targetplatform }} - BuildMode: SideLoadOnly + BuildMode: StoreUpload Configuration: ${{ matrix.configuration }} TargetPlatform: ${{ matrix.targetplatform }} From b9f6f34d724d35b372e3d5a80a5723404892230c Mon Sep 17 00:00:00 2001 From: szlatkow Date: Mon, 8 Feb 2021 10:19:45 +0200 Subject: [PATCH 079/194] Change the "Appx_Boundle:" to Always. --- .github/workflows/cd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index b14d3d0e7..b4f0eee86 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -40,7 +40,7 @@ jobs: id: build_app run: msbuild $env:Project_Path /p:Platform=$env:TargetPlatform /p:Configuration=$env:Configuration /p:UapAppxPackageBuildMode=$env:BuildMode /p:AppxBundle=$env:AppxBundle /p:PackageCertificateKeyFile=$env:SigningCertificate /p:PackageCertificatePassword=${{ secrets.Pfx_Key }} env: - Appx_Bundle: Never + Appx_Bundle: Always Appx_Bundle_Platforms: ${{ matrix.targetplatform }} BuildMode: StoreUpload Configuration: ${{ matrix.configuration }} From 2aaca390441cf44b36039df4fdbee55d703804f4 Mon Sep 17 00:00:00 2001 From: szlatkow Date: Mon, 8 Feb 2021 11:54:43 +0200 Subject: [PATCH 080/194] replace the project file with solution for the build. --- .github/workflows/cd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index b4f0eee86..8b56192bb 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -38,7 +38,7 @@ jobs: - name: Build the Windows Application Packaging Project (wapproj) id: build_app - run: msbuild $env:Project_Path /p:Platform=$env:TargetPlatform /p:Configuration=$env:Configuration /p:UapAppxPackageBuildMode=$env:BuildMode /p:AppxBundle=$env:AppxBundle /p:PackageCertificateKeyFile=$env:SigningCertificate /p:PackageCertificatePassword=${{ secrets.Pfx_Key }} + run: msbuild $env:Solution_Path /p:Platform=$env:TargetPlatform /p:Configuration=$env:Configuration /p:UapAppxPackageBuildMode=$env:BuildMode /p:AppxBundle=$env:AppxBundle /p:PackageCertificateKeyFile=$env:SigningCertificate /p:PackageCertificatePassword=${{ secrets.Pfx_Key }} env: Appx_Bundle: Always Appx_Bundle_Platforms: ${{ matrix.targetplatform }} From 6581729c041f6dbc7211e4c61c948716b92831f4 Mon Sep 17 00:00:00 2001 From: szlatkow Date: Mon, 8 Feb 2021 12:30:31 +0200 Subject: [PATCH 081/194] echo all env. --- .github/workflows/cd.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 8b56192bb..a46c4d688 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -38,7 +38,15 @@ jobs: - name: Build the Windows Application Packaging Project (wapproj) id: build_app - run: msbuild $env:Solution_Path /p:Platform=$env:TargetPlatform /p:Configuration=$env:Configuration /p:UapAppxPackageBuildMode=$env:BuildMode /p:AppxBundle=$env:AppxBundle /p:PackageCertificateKeyFile=$env:SigningCertificate /p:PackageCertificatePassword=${{ secrets.Pfx_Key }} + run: | + echo $env:Solution_Path + echo $env:TargetPlatform + echo $env:Configuration + echo $env:BuildMode + echo $env:AppxBundle + echo $env:SigningCertificate + echo $env:Appx_Bundle_Platforms + msbuild $env:Solution_Path /p:Platform=$env:TargetPlatform /p:Configuration=$env:Configuration /p:UapAppxPackageBuildMode=$env:BuildMode /p:AppxBundle=$env:AppxBundle /p:PackageCertificateKeyFile=$env:SigningCertificate /p:PackageCertificatePassword=${{ secrets.Pfx_Key }} env: Appx_Bundle: Always Appx_Bundle_Platforms: ${{ matrix.targetplatform }} From 47c334904bf59be3a4547fc57b2ddbe5ef737a88 Mon Sep 17 00:00:00 2001 From: szlatkow Date: Mon, 8 Feb 2021 12:42:43 +0200 Subject: [PATCH 082/194] build without signing --- .github/workflows/cd.yml | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index a46c4d688..1fd95d098 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -38,15 +38,7 @@ jobs: - name: Build the Windows Application Packaging Project (wapproj) id: build_app - run: | - echo $env:Solution_Path - echo $env:TargetPlatform - echo $env:Configuration - echo $env:BuildMode - echo $env:AppxBundle - echo $env:SigningCertificate - echo $env:Appx_Bundle_Platforms - msbuild $env:Solution_Path /p:Platform=$env:TargetPlatform /p:Configuration=$env:Configuration /p:UapAppxPackageBuildMode=$env:BuildMode /p:AppxBundle=$env:AppxBundle /p:PackageCertificateKeyFile=$env:SigningCertificate /p:PackageCertificatePassword=${{ secrets.Pfx_Key }} + run: msbuild $env:Solution_Path /p:Platform=$env:TargetPlatform /p:Configuration=$env:Configuration /p:UapAppxPackageBuildMode=$env:BuildMode /p:AppxBundle=$env:AppxBundle /p:AppxPackageSigningEnabled=false env: Appx_Bundle: Always Appx_Bundle_Platforms: ${{ matrix.targetplatform }} @@ -57,8 +49,8 @@ jobs: - name: Run ls in main folder run: Get-ChildItem -Depth 20 - - name: Upload build artifacts - uses: actions/upload-artifact@v1 - with: - name: MSIX Package - path: ${{ env.Wap_Project_Directory }}\AppPackages \ No newline at end of file + # - name: Upload build artifacts + # uses: actions/upload-artifact@v1 + # with: + # name: MSIX Package + # path: ${{ env.Wap_Project_Directory }}\AppPackages \ No newline at end of file From d2b0d5f5a0dd47de7cbe2fd059cc32456cb4e7df Mon Sep 17 00:00:00 2001 From: szlatkow Date: Tue, 9 Feb 2021 09:27:23 +0200 Subject: [PATCH 083/194] upload the working directory as a artifact. --- .github/workflows/cd.yml | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 1fd95d098..9c0abb86b 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -2,6 +2,10 @@ name: Notepads CD Pipeline on: [push, pull_request, workflow_dispatch] +defaults: + run: + working-directory: web + jobs: build: strategy: @@ -49,8 +53,8 @@ jobs: - name: Run ls in main folder run: Get-ChildItem -Depth 20 - # - name: Upload build artifacts - # uses: actions/upload-artifact@v1 - # with: - # name: MSIX Package - # path: ${{ env.Wap_Project_Directory }}\AppPackages \ No newline at end of file + - name: Upload build artifacts + uses: actions/upload-artifact@v1 + with: + name: MSIX Package + path: web \ No newline at end of file From 57cadc424a63cf88d6c385a5f61230439722386c Mon Sep 17 00:00:00 2001 From: szlatkow Date: Tue, 9 Feb 2021 11:07:29 +0200 Subject: [PATCH 084/194] Add AppxPackageDir. --- .github/workflows/cd.yml | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 9c0abb86b..4b8e43735 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -2,10 +2,6 @@ name: Notepads CD Pipeline on: [push, pull_request, workflow_dispatch] -defaults: - run: - working-directory: web - jobs: build: strategy: @@ -20,6 +16,7 @@ jobs: Wap_Project_Name: Notepads.Package.wapproj Project_Path: src\Notepads\Notepads.csproj runs-on: windows-latest + steps: - uses: actions/checkout@v2 @@ -42,7 +39,15 @@ jobs: - name: Build the Windows Application Packaging Project (wapproj) id: build_app - run: msbuild $env:Solution_Path /p:Platform=$env:TargetPlatform /p:Configuration=$env:Configuration /p:UapAppxPackageBuildMode=$env:BuildMode /p:AppxBundle=$env:AppxBundle /p:AppxPackageSigningEnabled=false + run: | + msbuild $env:Solution_Path + /p:Platform=$env:TargetPlatform + /p:Configuration=$env:Configuration + /p:AppxBundlePlatforms=$env:Appx_Bundle_Platforms + /p:UapAppxPackageBuildMode=$env:BuildMode + /p:AppxBundle=$env:AppxBundle + /p:AppxPackageSigningEnabled=false + /p:AppxPackageDir="Artifacts" env: Appx_Bundle: Always Appx_Bundle_Platforms: ${{ matrix.targetplatform }} @@ -57,4 +62,4 @@ jobs: uses: actions/upload-artifact@v1 with: name: MSIX Package - path: web \ No newline at end of file + path: ./Artifacts \ No newline at end of file From 5b3b79fb4edac02a53a29eee47b7b522d90d29a1 Mon Sep 17 00:00:00 2001 From: szlatkow Date: Tue, 9 Feb 2021 11:26:50 +0200 Subject: [PATCH 085/194] set shell to powershell --- .github/workflows/cd.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 4b8e43735..54b1f4a8f 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -48,6 +48,7 @@ jobs: /p:AppxBundle=$env:AppxBundle /p:AppxPackageSigningEnabled=false /p:AppxPackageDir="Artifacts" + shell: powershell env: Appx_Bundle: Always Appx_Bundle_Platforms: ${{ matrix.targetplatform }} @@ -62,4 +63,4 @@ jobs: uses: actions/upload-artifact@v1 with: name: MSIX Package - path: ./Artifacts \ No newline at end of file + path: Artifacts/ \ No newline at end of file From 5034d8242b8fb2a264e8b2fe063051496b666ca1 Mon Sep 17 00:00:00 2001 From: szlatkow Date: Tue, 9 Feb 2021 11:30:49 +0200 Subject: [PATCH 086/194] fix syntax in build step. --- .github/workflows/cd.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 54b1f4a8f..ee5bad742 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -40,15 +40,14 @@ jobs: - name: Build the Windows Application Packaging Project (wapproj) id: build_app run: | - msbuild $env:Solution_Path - /p:Platform=$env:TargetPlatform - /p:Configuration=$env:Configuration - /p:AppxBundlePlatforms=$env:Appx_Bundle_Platforms - /p:UapAppxPackageBuildMode=$env:BuildMode - /p:AppxBundle=$env:AppxBundle - /p:AppxPackageSigningEnabled=false + msbuild $env:Solution_Path ` + /p:Platform=$env:TargetPlatform ` + /p:Configuration=$env:Configuration ` + /p:AppxBundlePlatforms=$env:Appx_Bundle_Platforms ` + /p:UapAppxPackageBuildMode=$env:BuildMode ` + /p:AppxBundle=$env:AppxBundle ` + /p:AppxPackageSigningEnabled=false ` /p:AppxPackageDir="Artifacts" - shell: powershell env: Appx_Bundle: Always Appx_Bundle_Platforms: ${{ matrix.targetplatform }} From d38cb46bce78d7cb987f006ecf7f19c287a7df62 Mon Sep 17 00:00:00 2001 From: szlatkow Date: Tue, 9 Feb 2021 11:48:40 +0200 Subject: [PATCH 087/194] change appxpackageDir --- .github/workflows/cd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index ee5bad742..2781b97f4 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -47,7 +47,7 @@ jobs: /p:UapAppxPackageBuildMode=$env:BuildMode ` /p:AppxBundle=$env:AppxBundle ` /p:AppxPackageSigningEnabled=false ` - /p:AppxPackageDir="Artifacts" + /p:AppxPackageDir="$GITHUB_WORKSPACE/Artifacts" env: Appx_Bundle: Always Appx_Bundle_Platforms: ${{ matrix.targetplatform }} From 058c9f1c8cc34eff825b9f8fcbce4a602e618ef9 Mon Sep 17 00:00:00 2001 From: szlatkow Date: Tue, 9 Feb 2021 12:09:09 +0200 Subject: [PATCH 088/194] change the path for build artifact --- .github/workflows/cd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 2781b97f4..dd0274b33 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -62,4 +62,4 @@ jobs: uses: actions/upload-artifact@v1 with: name: MSIX Package - path: Artifacts/ \ No newline at end of file + path: "$GITHUB_WORKSPACE/Artifacts" \ No newline at end of file From 283e91470c71b5234affc2934d1a95745fafed9a Mon Sep 17 00:00:00 2001 From: szlatkow Date: Tue, 9 Feb 2021 12:24:51 +0200 Subject: [PATCH 089/194] test full template --- .github/workflows/cd.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index dd0274b33..023a4928b 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -31,12 +31,16 @@ jobs: id: setup_msbuild uses: microsoft/setup-msbuild@v1 + - name: Execute Unit Tests + run: dotnet test $env:Test_Project_Path + - name: Restore the application id: restore_application run: msbuild $env:Solution_Path /t:Restore /p:Configuration=$env:Configuration /p:RuntimeIdentifier=$env:RuntimeIdentifier env: Configuration: ${{ matrix.configuration }} - + RuntimeIdentifier: win-${{ matrix.targetplatform }} + - name: Build the Windows Application Packaging Project (wapproj) id: build_app run: | From 29cd3f43c3e481463228f0a809edb56299e05745 Mon Sep 17 00:00:00 2001 From: szlatkow Date: Tue, 9 Feb 2021 12:30:33 +0200 Subject: [PATCH 090/194] Add RuntimeIdentifier --- .github/workflows/cd.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 023a4928b..86a3bf918 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -31,16 +31,13 @@ jobs: id: setup_msbuild uses: microsoft/setup-msbuild@v1 - - name: Execute Unit Tests - run: dotnet test $env:Test_Project_Path - - name: Restore the application id: restore_application run: msbuild $env:Solution_Path /t:Restore /p:Configuration=$env:Configuration /p:RuntimeIdentifier=$env:RuntimeIdentifier env: Configuration: ${{ matrix.configuration }} RuntimeIdentifier: win-${{ matrix.targetplatform }} - + - name: Build the Windows Application Packaging Project (wapproj) id: build_app run: | From 9953df0a4251cf847ae1d552ff32242cf9db33d3 Mon Sep 17 00:00:00 2001 From: szlatkow Date: Tue, 9 Feb 2021 13:23:03 +0200 Subject: [PATCH 091/194] change the name from cd to ci --- .github/workflows/{cd.yml => ci.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/workflows/{cd.yml => ci.yml} (100%) diff --git a/.github/workflows/cd.yml b/.github/workflows/ci.yml similarity index 100% rename from .github/workflows/cd.yml rename to .github/workflows/ci.yml From 1b4a134d26ca1a9d2175ca75f3d7b2402f14f880 Mon Sep 17 00:00:00 2001 From: szlatkow Date: Tue, 9 Feb 2021 13:34:09 +0200 Subject: [PATCH 092/194] Fix identation for AppxBundle --- .github/workflows/ci.yml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 86a3bf918..53921bbd1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,12 +9,8 @@ jobs: configuration: [Release] targetplatform: [x86,x64] env: - SigningCertificate: GitHubActionsDemo.pfx Solution_Path: src\Notepads.sln - Wpf_Project_Path: src\Notepads\Notepads.csproj - Wap_Project_Directory: Notepads.Package - Wap_Project_Name: Notepads.Package.wapproj - Project_Path: src\Notepads\Notepads.csproj + runs-on: windows-latest steps: @@ -50,7 +46,7 @@ jobs: /p:AppxPackageSigningEnabled=false ` /p:AppxPackageDir="$GITHUB_WORKSPACE/Artifacts" env: - Appx_Bundle: Always + AppxBundle: Always Appx_Bundle_Platforms: ${{ matrix.targetplatform }} BuildMode: StoreUpload Configuration: ${{ matrix.configuration }} From 3e90ba75c25ac418627121e08e555b22c5d4e720 Mon Sep 17 00:00:00 2001 From: szlatkow Date: Tue, 9 Feb 2021 16:48:46 +0200 Subject: [PATCH 093/194] Add numbering for the tools. --- CI-CD_DOCUMENTATION.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/CI-CD_DOCUMENTATION.md b/CI-CD_DOCUMENTATION.md index 7f2fca4d3..57a05fb45 100644 --- a/CI-CD_DOCUMENTATION.md +++ b/CI-CD_DOCUMENTATION.md @@ -3,7 +3,7 @@ * after merging the PR, the first run of the main workflow will not complete successfully, because it requires specific setup explained in this documentation # -## Set up SonarCloud +## 1. Set up SonarCloud ### SonarCloud is a cloud-based code quality and security service #### Create your SonarCloud project @@ -66,7 +66,7 @@
-## *. Run workflow manually +## 2. Run workflow manually Once you've set up all the steps above correctly, you should be able to successfully complete a manual execution of the main workflow "Notepads CI/CD Pipeline". @@ -84,7 +84,7 @@ NOTE: **screenshots are only exemplary**
-## *. Set up Dependabot +## 3. Set up Dependabot Dependabot is a GitHub native security tool that goes through the dependencies in the project and creates alerts, and PRs with updates when a new and/or non-vulnerable version is found. @@ -130,7 +130,7 @@ NOTE: **screenshots are only exemplary**
-## *. CodeQL +## 4. CodeQL CodeQL is GitHub's own industry-leading semantic code analysis engine. CodeQL requires no setup, because it comes fully pre-configured by us. From 3edfc7fe11362fa42b4c9111a343c426edf35c3f Mon Sep 17 00:00:00 2001 From: szlatkow Date: Tue, 9 Feb 2021 17:16:09 +0200 Subject: [PATCH 094/194] upload artfifacts. --- .github/workflows/ci.yml | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 53921bbd1..f730bdeb4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -29,7 +29,11 @@ jobs: - name: Restore the application id: restore_application - run: msbuild $env:Solution_Path /t:Restore /p:Configuration=$env:Configuration /p:RuntimeIdentifier=$env:RuntimeIdentifier + run: | + msbuild $env:Solution_Path ` + /t:Restore ` + /p:Configuration=$env:Configuration ` + /p:RuntimeIdentifier=$env:RuntimeIdentifier ` env: Configuration: ${{ matrix.configuration }} RuntimeIdentifier: win-${{ matrix.targetplatform }} @@ -38,19 +42,21 @@ jobs: id: build_app run: | msbuild $env:Solution_Path ` - /p:Platform=$env:TargetPlatform ` + /p:Platform=$env:Target_Platform ` /p:Configuration=$env:Configuration ` /p:AppxBundlePlatforms=$env:Appx_Bundle_Platforms ` - /p:UapAppxPackageBuildMode=$env:BuildMode ` - /p:AppxBundle=$env:AppxBundle ` - /p:AppxPackageSigningEnabled=false ` - /p:AppxPackageDir="$GITHUB_WORKSPACE/Artifacts" + /p:UapAppxPackageBuildMode=$env:Uap_Appx_Package_Build_Mode ` + /p:AppxBundle=$env:Appx_Bundle ` + /p:AppxPackageSigningEnabled=$env:Appx_Package_Signing_Enabled ` + /p:AppxPackageDir=$env:Artifacts_Dir env: - AppxBundle: Always - Appx_Bundle_Platforms: ${{ matrix.targetplatform }} - BuildMode: StoreUpload + Target_Platform: ${{ matrix.targetplatform }} Configuration: ${{ matrix.configuration }} - TargetPlatform: ${{ matrix.targetplatform }} + Appx_Bundle_Platforms: ${{ matrix.targetplatform }} + Uap_Appx_Package_Build_Mode: ${{ matrix.buildmode }} + Appx_Bundle: Always + Appx_Package_Signing_Enabled: false + Artifacts_Dir: ${{ github.workspace }}\Artifacts\${{ matrix.targetplatform }}\${{ matrix.buildmode }} - name: Run ls in main folder run: Get-ChildItem -Depth 20 @@ -59,4 +65,4 @@ jobs: uses: actions/upload-artifact@v1 with: name: MSIX Package - path: "$GITHUB_WORKSPACE/Artifacts" \ No newline at end of file + path: Artifacts/ \ No newline at end of file From 9b7a8bb5bfcdc3c64021ef7fadf4ec80d9a88605 Mon Sep 17 00:00:00 2001 From: szlatkow Date: Tue, 9 Feb 2021 17:41:54 +0200 Subject: [PATCH 095/194] integrate the build package step in main.yml --- .github/workflows/ci.yml | 68 -------------------------------------- .github/workflows/main.yml | 42 ++++++++++++++++++----- 2 files changed, 34 insertions(+), 76 deletions(-) delete mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index f730bdeb4..000000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,68 +0,0 @@ -name: Notepads CD Pipeline - -on: [push, pull_request, workflow_dispatch] - -jobs: - build: - strategy: - matrix: - configuration: [Release] - targetplatform: [x86,x64] - env: - Solution_Path: src\Notepads.sln - - runs-on: windows-latest - - steps: - - - uses: actions/checkout@v2 - id: actions_checkout - with: - fetch-depth: 50 - - - name: Install .NET Core - uses: actions/setup-dotnet@v1 - - - name: Setup MSBuild - id: setup_msbuild - uses: microsoft/setup-msbuild@v1 - - - name: Restore the application - id: restore_application - run: | - msbuild $env:Solution_Path ` - /t:Restore ` - /p:Configuration=$env:Configuration ` - /p:RuntimeIdentifier=$env:RuntimeIdentifier ` - env: - Configuration: ${{ matrix.configuration }} - RuntimeIdentifier: win-${{ matrix.targetplatform }} - - - name: Build the Windows Application Packaging Project (wapproj) - id: build_app - run: | - msbuild $env:Solution_Path ` - /p:Platform=$env:Target_Platform ` - /p:Configuration=$env:Configuration ` - /p:AppxBundlePlatforms=$env:Appx_Bundle_Platforms ` - /p:UapAppxPackageBuildMode=$env:Uap_Appx_Package_Build_Mode ` - /p:AppxBundle=$env:Appx_Bundle ` - /p:AppxPackageSigningEnabled=$env:Appx_Package_Signing_Enabled ` - /p:AppxPackageDir=$env:Artifacts_Dir - env: - Target_Platform: ${{ matrix.targetplatform }} - Configuration: ${{ matrix.configuration }} - Appx_Bundle_Platforms: ${{ matrix.targetplatform }} - Uap_Appx_Package_Build_Mode: ${{ matrix.buildmode }} - Appx_Bundle: Always - Appx_Package_Signing_Enabled: false - Artifacts_Dir: ${{ github.workspace }}\Artifacts\${{ matrix.targetplatform }}\${{ matrix.buildmode }} - - - name: Run ls in main folder - run: Get-ChildItem -Depth 20 - - - name: Upload build artifacts - uses: actions/upload-artifact@v1 - with: - name: MSIX Package - path: Artifacts/ \ No newline at end of file diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 5eae27392..fb3a89bda 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,12 +1,13 @@ name: Notepads CI/CD Pipeline -#on: [push, pull_request, workflow_dispatch] +on: [push, pull_request, workflow_dispatch] jobs: build: strategy: matrix: configuration: [Debug, Release] + targetplatform: [x86,x64] env: Solution_Name: src\Notepads.sln Project_Path: src\Notepads\Notepads.csproj @@ -66,25 +67,43 @@ jobs: shell: powershell run: .\.sonar\scanner\dotnet-sonarscanner begin /k:"${{ github.repository_owner }}_${{ github.event.repository.name }}" /o:"${{ steps.lowercase_string_gen.outputs.owner_name }}" /d:sonar.login="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" - # Add MSBuild to the PATH: https://github.com/microsoft/setup-msbuild + - name: Install .NET Core + uses: actions/setup-dotnet@v1 + - name: Setup MSBuild id: setup_msbuild uses: microsoft/setup-msbuild@v1 - name: Restore the application id: restore_application - run: msbuild $env:Solution_Name /t:Restore /p:Configuration=$env:Configuration + run: | + msbuild $env:Solution_Path ` + /t:Restore ` + /p:Configuration=$env:Configuration ` + /p:RuntimeIdentifier=$env:RuntimeIdentifier env: Configuration: ${{ matrix.configuration }} + RuntimeIdentifier: win-${{ matrix.targetplatform }} - - name: Build + - name: Build the Windows Application Packaging Project (wapproj) id: build_app - run: msbuild $env:Project_Path /p:Configuration=$env:Configuration /p:UapAppxPackageBuildMode=$env:Appx_Package_Build_Mode /p:AppxBundle=$env:Appx_Bundle /p:AppxPackageSigningEnabled=false /p:AppxBundlePlatforms="$env:Appx_Bundle_Platforms" + run: | + msbuild $env:Solution_Path ` + /p:Platform=$env:Target_Platform ` + /p:Configuration=$env:Configuration ` + /p:AppxBundlePlatforms=$env:Appx_Bundle_Platforms ` + /p:UapAppxPackageBuildMode=$env:Uap_Appx_Package_Build_Mode ` + /p:AppxBundle=$env:Appx_Bundle ` + /p:AppxPackageSigningEnabled=$env:Appx_Package_Signing_Enabled ` + /p:AppxPackageDir=$env:Artifacts_Dir env: - Appx_Bundle: Always - Appx_Bundle_Platforms: x86|x64 - Appx_Package_Build_Mode: StoreUpload + Target_Platform: ${{ matrix.targetplatform }} Configuration: ${{ matrix.configuration }} + Appx_Bundle_Platforms: ${{ matrix.targetplatform }} + Uap_Appx_Package_Build_Mode: ${{ matrix.buildmode }} + Appx_Bundle: Always + Appx_Package_Signing_Enabled: false + Artifacts_Dir: ${{ github.workspace }}\Artifacts\${{ matrix.targetplatform }}\${{ matrix.buildmode }} - if: github.event_name != 'pull_request' name: Send SonarCloud results @@ -95,4 +114,11 @@ jobs: shell: powershell run: .\.sonar\scanner\dotnet-sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN }}" + - name: Upload build artifacts + continue-on-error: true + uses: actions/upload-artifact@v1 + with: + name: MSIX Package + path: Artifacts/ + # Built with ❤ by [Pipeline Foundation](https://pipeline.foundation) \ No newline at end of file From 5d34ea4ba4be56f5bd2f77907fda4afd16d20f64 Mon Sep 17 00:00:00 2001 From: szlatkow Date: Tue, 9 Feb 2021 17:57:18 +0200 Subject: [PATCH 096/194] Remove RuntimeIdentifier. --- .github/workflows/main.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index fb3a89bda..066c7857f 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -79,11 +79,9 @@ jobs: run: | msbuild $env:Solution_Path ` /t:Restore ` - /p:Configuration=$env:Configuration ` - /p:RuntimeIdentifier=$env:RuntimeIdentifier + /p:Configuration=$env:Configuration env: Configuration: ${{ matrix.configuration }} - RuntimeIdentifier: win-${{ matrix.targetplatform }} - name: Build the Windows Application Packaging Project (wapproj) id: build_app @@ -120,5 +118,5 @@ jobs: with: name: MSIX Package path: Artifacts/ - + # Built with ❤ by [Pipeline Foundation](https://pipeline.foundation) \ No newline at end of file From dafdaa532b0b2ec13bd125fc717f45990e9fc909 Mon Sep 17 00:00:00 2001 From: szlatkow Date: Tue, 9 Feb 2021 18:01:33 +0200 Subject: [PATCH 097/194] Change Solution_Path to Solution_Name. --- .github/workflows/main.yml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 066c7857f..6a6b85292 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -19,7 +19,14 @@ jobs: uses: actions/setup-java@v1 with: java-version: 1.11 - + + - name: Install .NET Core + uses: actions/setup-dotnet@v1 + + - name: Setup MSBuild + id: setup_msbuild + uses: microsoft/setup-msbuild@v1 + - uses: actions/checkout@v2 id: actions_checkout with: @@ -67,17 +74,10 @@ jobs: shell: powershell run: .\.sonar\scanner\dotnet-sonarscanner begin /k:"${{ github.repository_owner }}_${{ github.event.repository.name }}" /o:"${{ steps.lowercase_string_gen.outputs.owner_name }}" /d:sonar.login="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" - - name: Install .NET Core - uses: actions/setup-dotnet@v1 - - - name: Setup MSBuild - id: setup_msbuild - uses: microsoft/setup-msbuild@v1 - - name: Restore the application id: restore_application run: | - msbuild $env:Solution_Path ` + msbuild $env:Solution_Name ` /t:Restore ` /p:Configuration=$env:Configuration env: @@ -86,7 +86,7 @@ jobs: - name: Build the Windows Application Packaging Project (wapproj) id: build_app run: | - msbuild $env:Solution_Path ` + msbuild $env:Solution_Name ` /p:Platform=$env:Target_Platform ` /p:Configuration=$env:Configuration ` /p:AppxBundlePlatforms=$env:Appx_Bundle_Platforms ` From 1cb921f5325705e34b3bf630a13b9f40a8e80945 Mon Sep 17 00:00:00 2001 From: szlatkow Date: Wed, 10 Feb 2021 10:16:25 +0200 Subject: [PATCH 098/194] clear build --- .github/workflows/Build.yml | 2 +- .github/workflows/codeql-analysis.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/Build.yml b/.github/workflows/Build.yml index a559165ab..44df7c1a6 100644 --- a/.github/workflows/Build.yml +++ b/.github/workflows/Build.yml @@ -1,6 +1,6 @@ name: Build -#on: [push, pull_request] +on: [push, pull_request] jobs: diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index d6a753e66..654e339b6 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -1,6 +1,6 @@ name: CodeQL Analysis -#on: +on: push: pull_request: schedule: From 6e59682100f4ebc34214406569028f0f0dcd02be Mon Sep 17 00:00:00 2001 From: szlatkow Date: Wed, 10 Feb 2021 12:01:11 +0200 Subject: [PATCH 099/194] Build msix boundle without signing. --- .github/workflows/main.yml | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 6a6b85292..f476709a4 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -6,8 +6,7 @@ jobs: build: strategy: matrix: - configuration: [Debug, Release] - targetplatform: [x86,x64] + configuration: [Debug, Release] env: Solution_Name: src\Notepads.sln Project_Path: src\Notepads\Notepads.csproj @@ -77,31 +76,31 @@ jobs: - name: Restore the application id: restore_application run: | - msbuild $env:Solution_Name ` + msbuild $env:Solution_Path ` /t:Restore ` - /p:Configuration=$env:Configuration + /p:Configuration=$env:Configuration env: Configuration: ${{ matrix.configuration }} - - name: Build the Windows Application Packaging Project (wapproj) + - name: Build and generate bundles id: build_app run: | - msbuild $env:Solution_Name ` - /p:Platform=$env:Target_Platform ` + msbuild $env:Solution_Path ` + /p:Platform=$env:Platform ` /p:Configuration=$env:Configuration ` - /p:AppxBundlePlatforms=$env:Appx_Bundle_Platforms ` /p:UapAppxPackageBuildMode=$env:Uap_Appx_Package_Build_Mode ` /p:AppxBundle=$env:Appx_Bundle ` /p:AppxPackageSigningEnabled=$env:Appx_Package_Signing_Enabled ` + /p:AppxBundlePlatforms=$env:Appx_Bundle_Platforms ` /p:AppxPackageDir=$env:Artifacts_Dir env: - Target_Platform: ${{ matrix.targetplatform }} + Platform: x64 Configuration: ${{ matrix.configuration }} - Appx_Bundle_Platforms: ${{ matrix.targetplatform }} - Uap_Appx_Package_Build_Mode: ${{ matrix.buildmode }} + Uap_Appx_Package_Build_Mode: StoreUpload Appx_Bundle: Always Appx_Package_Signing_Enabled: false - Artifacts_Dir: ${{ github.workspace }}\Artifacts\${{ matrix.targetplatform }}\${{ matrix.buildmode }} + Appx_Bundle_Platforms: x86|x64 + Artifacts_Dir: ${{ github.workspace }}/Artifacts - if: github.event_name != 'pull_request' name: Send SonarCloud results From 91702798a2c25ec5aa202a17b85a0dc93a3921f6 Mon Sep 17 00:00:00 2001 From: szlatkow Date: Wed, 10 Feb 2021 12:05:34 +0200 Subject: [PATCH 100/194] Change build and restore env:Solution_Name. --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f476709a4..c6b9f4515 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -76,7 +76,7 @@ jobs: - name: Restore the application id: restore_application run: | - msbuild $env:Solution_Path ` + msbuild $env:Solution_Name ` /t:Restore ` /p:Configuration=$env:Configuration env: @@ -85,7 +85,7 @@ jobs: - name: Build and generate bundles id: build_app run: | - msbuild $env:Solution_Path ` + msbuild $env:Solution_Name ` /p:Platform=$env:Platform ` /p:Configuration=$env:Configuration ` /p:UapAppxPackageBuildMode=$env:Uap_Appx_Package_Build_Mode ` From 91f5722ae07c6cff594c55917f9ff46afac0fea5 Mon Sep 17 00:00:00 2001 From: szlatkow Date: Thu, 11 Feb 2021 15:59:15 +0200 Subject: [PATCH 101/194] fix requested changes. --- .github/workflows/main.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c6b9f4515..a9d838b2f 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -6,7 +6,7 @@ jobs: build: strategy: matrix: - configuration: [Debug, Release] + configuration: [Debug, Release] env: Solution_Name: src\Notepads.sln Project_Path: src\Notepads\Notepads.csproj @@ -27,7 +27,7 @@ jobs: uses: microsoft/setup-msbuild@v1 - uses: actions/checkout@v2 - id: actions_checkout + id: checkout_repo with: fetch-depth: 50 @@ -112,10 +112,10 @@ jobs: run: .\.sonar\scanner\dotnet-sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN }}" - name: Upload build artifacts - continue-on-error: true + id: upload_artifacts uses: actions/upload-artifact@v1 with: - name: MSIX Package + name: Notepads Package path: Artifacts/ # Built with ❤ by [Pipeline Foundation](https://pipeline.foundation) \ No newline at end of file From 326611a8ddc6644c6ad148fca34630d1782f0633 Mon Sep 17 00:00:00 2001 From: szlatkow Date: Thu, 11 Feb 2021 16:01:26 +0200 Subject: [PATCH 102/194] fix requested changes. --- .github/workflows/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a9d838b2f..18a4c5ae3 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -20,6 +20,7 @@ jobs: java-version: 1.11 - name: Install .NET Core + id: install_dotnet_dependencies uses: actions/setup-dotnet@v1 - name: Setup MSBuild From effe7395bfd001b387b7a85125692c9c640fdb47 Mon Sep 17 00:00:00 2001 From: szlatkow Date: Fri, 12 Feb 2021 10:12:30 +0200 Subject: [PATCH 103/194] fix requested changes. --- .github/workflows/main.yml | 216 ++++++++++++++++++------------------- 1 file changed, 108 insertions(+), 108 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 18a4c5ae3..d12273ddf 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -9,114 +9,114 @@ jobs: configuration: [Debug, Release] env: Solution_Name: src\Notepads.sln - Project_Path: src\Notepads\Notepads.csproj runs-on: windows-latest steps: - - name: Set up JDK 11 - id: Setup_JDK - uses: actions/setup-java@v1 - with: - java-version: 1.11 - - - name: Install .NET Core - id: install_dotnet_dependencies - uses: actions/setup-dotnet@v1 - - - name: Setup MSBuild - id: setup_msbuild - uses: microsoft/setup-msbuild@v1 - - - uses: actions/checkout@v2 - id: checkout_repo - with: - fetch-depth: 50 - - - if: github.event_name != 'pull_request' - name: Cache SonarCloud packages - id: cache_sonar_packages - uses: actions/cache@v2 - with: - path: ~\sonar\cache - key: ${{ runner.os }}-sonar - restore-keys: ${{ runner.os }}-sonar - - - if: github.event_name != 'pull_request' - name: Cache SonarCloud scanner - id: cache_sonar_scanner - uses: actions/cache@v2 - with: - path: .\.sonar\scanner - key: ${{ runner.os }}-sonar-scanner - restore-keys: ${{ runner.os }}-sonar-scanner - - - if: github.event_name != 'pull_request' && steps.cache_sonar_scanner.outputs.cache-hit != 'true' - name: Install SonarCloud scanner - id: install_sonar_scanner - shell: powershell - run: | - New-Item -Path .\.sonar\scanner -ItemType Directory - dotnet tool update dotnet-sonarscanner --tool-path .\.sonar\scanner - - - if: github.event_name != 'pull_request' - name: Lowercase string generator - id: lowercase_string_gen - shell: powershell - run: | - $LOWERCASE_OWNER = "${{ github.repository_owner }}".ToLower() - echo "::set-output name=owner_name::$LOWERCASE_OWNER" - - - if: github.event_name != 'pull_request' - name: Initialize SonarCloud scanner - id: init_sonar_scanner - env: - SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - shell: powershell - run: .\.sonar\scanner\dotnet-sonarscanner begin /k:"${{ github.repository_owner }}_${{ github.event.repository.name }}" /o:"${{ steps.lowercase_string_gen.outputs.owner_name }}" /d:sonar.login="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" - - - name: Restore the application - id: restore_application - run: | - msbuild $env:Solution_Name ` - /t:Restore ` - /p:Configuration=$env:Configuration - env: - Configuration: ${{ matrix.configuration }} - - - name: Build and generate bundles - id: build_app - run: | - msbuild $env:Solution_Name ` - /p:Platform=$env:Platform ` - /p:Configuration=$env:Configuration ` - /p:UapAppxPackageBuildMode=$env:Uap_Appx_Package_Build_Mode ` - /p:AppxBundle=$env:Appx_Bundle ` - /p:AppxPackageSigningEnabled=$env:Appx_Package_Signing_Enabled ` - /p:AppxBundlePlatforms=$env:Appx_Bundle_Platforms ` - /p:AppxPackageDir=$env:Artifacts_Dir - env: - Platform: x64 - Configuration: ${{ matrix.configuration }} - Uap_Appx_Package_Build_Mode: StoreUpload - Appx_Bundle: Always - Appx_Package_Signing_Enabled: false - Appx_Bundle_Platforms: x86|x64 - Artifacts_Dir: ${{ github.workspace }}/Artifacts - - - if: github.event_name != 'pull_request' - name: Send SonarCloud results - id: send_sonar_results - env: - GITHUB_TOKEN: ${{ secrets.SONAR_GITHUB_TOKEN }} - SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - shell: powershell - run: .\.sonar\scanner\dotnet-sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN }}" - - - name: Upload build artifacts - id: upload_artifacts - uses: actions/upload-artifact@v1 - with: - name: Notepads Package - path: Artifacts/ - -# Built with ❤ by [Pipeline Foundation](https://pipeline.foundation) \ No newline at end of file + - name: Set up JDK 11 + id: Setup_JDK + uses: actions/setup-java@v1 + with: + java-version: 1.11 + + - name: Install .NET Core + id: install_dotnet_dependencies + uses: actions/setup-dotnet@v1 + + - name: Setup MSBuild + id: setup_msbuild + uses: microsoft/setup-msbuild@v1 + + - name: Checkout repository + id: checkout_repo + uses: actions/checkout@v2 + with: + fetch-depth: 50 + + - if: github.event_name != 'pull_request' + name: Cache SonarCloud packages + id: cache_sonar_packages + uses: actions/cache@v2 + with: + path: ~\sonar\cache + key: ${{ runner.os }}-sonar + restore-keys: ${{ runner.os }}-sonar + + - if: github.event_name != 'pull_request' + name: Cache SonarCloud scanner + id: cache_sonar_scanner + uses: actions/cache@v2 + with: + path: .\.sonar\scanner + key: ${{ runner.os }}-sonar-scanner + restore-keys: ${{ runner.os }}-sonar-scanner + + - if: github.event_name != 'pull_request' && steps.cache_sonar_scanner.outputs.cache-hit != 'true' + name: Install SonarCloud scanner + id: install_sonar_scanner + shell: powershell + run: | + New-Item -Path .\.sonar\scanner -ItemType Directory + dotnet tool update dotnet-sonarscanner --tool-path .\.sonar\scanner + + - if: github.event_name != 'pull_request' + name: Lowercase string generator + id: lowercase_string_gen + shell: powershell + run: | + $LOWERCASE_OWNER = "${{ github.repository_owner }}".ToLower() + echo "::set-output name=owner_name::$LOWERCASE_OWNER" + + - if: github.event_name != 'pull_request' + name: Initialize SonarCloud scanner + id: init_sonar_scanner + env: + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + shell: powershell + run: .\.sonar\scanner\dotnet-sonarscanner begin /k:"${{ github.repository_owner }}_${{ github.event.repository.name }}" /o:"${{ steps.lowercase_string_gen.outputs.owner_name }}" /d:sonar.login="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" + + - name: Restore the application + id: restore_application + run: | + msbuild $env:Solution_Name ` + /t:Restore ` + /p:Configuration=$env:Configuration + env: + Configuration: ${{ matrix.configuration }} + + - name: Build and generate bundles + id: build_app + run: | + msbuild $env:Solution_Name ` + /p:Platform=$env:Platform ` + /p:Configuration=$env:Configuration ` + /p:UapAppxPackageBuildMode=$env:Uap_Appx_Package_Build_Mode ` + /p:AppxBundle=$env:Appx_Bundle ` + /p:AppxPackageSigningEnabled=$env:Appx_Package_Signing_Enabled ` + /p:AppxBundlePlatforms=$env:Appx_Bundle_Platforms ` + /p:AppxPackageDir=$env:Artifacts_Dir + env: + Platform: x64 + Configuration: ${{ matrix.configuration }} + Uap_Appx_Package_Build_Mode: StoreUpload + Appx_Bundle: Always + Appx_Package_Signing_Enabled: false + Appx_Bundle_Platforms: x86|x64 + Artifacts_Dir: ${{ github.workspace }}/Artifacts + + - if: github.event_name != 'pull_request' + name: Send SonarCloud results + id: send_sonar_results + env: + GITHUB_TOKEN: ${{ secrets.SONAR_GITHUB_TOKEN }} + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + shell: powershell + run: .\.sonar\scanner\dotnet-sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN }}" + + - name: Upload build artifacts + id: upload_artifacts + uses: actions/upload-artifact@v1 + with: + name: Notepads build artifacts + path: Artifacts/ + + # Built with ❤ by [Pipeline Foundation](https://pipeline.foundation) \ No newline at end of file From 7ff1a0a445b2d21edc80dc135fa52ecfcac1aee4 Mon Sep 17 00:00:00 2001 From: szlatkow Date: Fri, 12 Feb 2021 10:24:14 +0200 Subject: [PATCH 104/194] Fix indenting for Pipeline credits. --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d12273ddf..7257a7be8 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -119,4 +119,4 @@ jobs: name: Notepads build artifacts path: Artifacts/ - # Built with ❤ by [Pipeline Foundation](https://pipeline.foundation) \ No newline at end of file + # Built with ❤ by [Pipeline Foundation](https://pipeline.foundation) \ No newline at end of file From d4e4b9e82489bde043b9b2c5a120be4a7d32346c Mon Sep 17 00:00:00 2001 From: szlatkow Date: Fri, 12 Feb 2021 10:31:38 +0200 Subject: [PATCH 105/194] Fix identation for Pipeline credentials. --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 7257a7be8..9be06856b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -119,4 +119,4 @@ jobs: name: Notepads build artifacts path: Artifacts/ - # Built with ❤ by [Pipeline Foundation](https://pipeline.foundation) \ No newline at end of file +# Built with ❤ by [Pipeline Foundation](https://pipeline.foundation) \ No newline at end of file From b71601753155c193bf8a2d1568d528ed51038cc9 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Fri, 12 Feb 2021 21:28:01 +0200 Subject: [PATCH 106/194] create release, add versioning from Package.appxmanifest, upload msixbundle to release --- .github/workflows/main.yml | 91 +++++++++++++++++++++++++++++++++++--- 1 file changed, 84 insertions(+), 7 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 9be06856b..b7db7cad5 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -3,15 +3,16 @@ name: Notepads CI/CD Pipeline on: [push, pull_request, workflow_dispatch] jobs: - build: + ci: + runs-on: windows-latest strategy: matrix: - configuration: [Debug, Release] + configuration: [ Debug, Release ] + outputs: + new_version: ${{ steps.get_assembly_version.outputs.version_num }} env: Solution_Name: src\Notepads.sln - runs-on: windows-latest steps: - - name: Set up JDK 11 id: Setup_JDK uses: actions/setup-java@v1 @@ -27,10 +28,46 @@ jobs: uses: microsoft/setup-msbuild@v1 - name: Checkout repository - id: checkout_repo + id: checkout_repo uses: actions/checkout@v2 with: fetch-depth: 50 + token: ${{ secrets.GITHUB_TOKEN }} + + - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.configuration == 'Release' + name: Get assembly version from appxmanifest + id: get_assembly_version + shell: bash + run: | + cd src/Notepads/ + VERSION_STR=$(grep -oE ' \Version\=\"([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)\"' Package.appxmanifest) + VERSION=$(echo "$VERSION_STR" | grep -oE "([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)") + echo "::set-output name=version_num::$(echo $VERSION)" + echo "::set-output name=version_tag::$(echo v"$VERSION")" + + - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.configuration == 'Release' + name: Get latest tag + id: get_latest_tag + shell: bash + run: | + LATEST_TAG=$(git -c 'versionsort.suffix=-' ls-remote --exit-code --refs --sort='version:refname' --tags "https://github.com/$GIT_URL.git" '*.*.*' | tail --lines=1 | cut --delimiter='/' --fields=3) + echo "::set-output name=tag::$(echo $LATEST_TAG)" + env: + GIT_URL: ${{ github.repository }} + + - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && steps.get_assembly_version.outputs.version_tag != steps.get_latest_tag.outputs.tag && matrix.configuration == 'Release' + name: Add new tag to repo + id: add_new_tag_to_repo + shell: bash + run: | + git config --global user.name $GIT_USER_NAME + git config --global user.email $GIT_USER_EMAIL + git tag -a -m "Description for this release" $NEW_VERSION_TAG + git push --follow-tags + env: + GIT_USER_NAME: ${{ secrets.GIT_USER_NAME }} + GIT_USER_EMAIL: ${{ secrets.GIT_USER_EMAIL }} + NEW_VERSION_TAG: ${{ steps.get_assembly_version.outputs.version_tag }} - if: github.event_name != 'pull_request' name: Cache SonarCloud packages @@ -116,7 +153,47 @@ jobs: id: upload_artifacts uses: actions/upload-artifact@v1 with: - name: Notepads build artifacts - path: Artifacts/ + name: Build artifacts + path: Artifacts/ + + cd: + # "This job will execute when the workflow is triggered on a 'push event', the target branch is 'master' and the commit is intended to be a release." + if: github.event_name == 'push' && github.ref == 'refs/heads/master' && needs.ci.outputs.new_version != '' + needs: ci + runs-on: windows-latest + env: + NEW_VERSION: ${{ needs.ci.outputs.new_version }} + NEW_TAG: v${{ needs.ci.outputs.new_version }} + steps: + - name: Checkout repository + id: checkout_repo + uses: actions/checkout@v2 + + - name: Download and extract MSIX package + id: dl_package_artifact + uses: actions/download-artifact@v2 + with: + name: Build artifacts + path: Artifacts/ + + - name: Create and publish release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ env.NEW_TAG }} + release_name: Notepads ${{ env.NEW_TAG }} + + - name: Upload msixbundle as release asset + id: upload_notepads_zip + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: Artifacts/Notepads_${{ env.NEW_VERSION }}_Test/Notepads_${{ env.NEW_VERSION }}_x86_x64.msixbundle + asset_name: Notepads_${{ env.NEW_VERSION }}_x86_x64.msixbundle + asset_content_type: application/zip # Built with ❤ by [Pipeline Foundation](https://pipeline.foundation) \ No newline at end of file From f642dcd729faa46832860a50810e639132309b2d Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 15 Feb 2021 13:31:28 +0200 Subject: [PATCH 107/194] test XML parser action --- .github/workflows/main.yml | 352 +++++++++++++++++++------------------ 1 file changed, 182 insertions(+), 170 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b7db7cad5..ebca586e2 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -13,19 +13,19 @@ jobs: env: Solution_Name: src\Notepads.sln steps: - - name: Set up JDK 11 - id: Setup_JDK - uses: actions/setup-java@v1 - with: - java-version: 1.11 + # - name: Set up JDK 11 + # id: Setup_JDK + # uses: actions/setup-java@v1 + # with: + # java-version: 1.11 - - name: Install .NET Core - id: install_dotnet_dependencies - uses: actions/setup-dotnet@v1 + # - name: Install .NET Core + # id: install_dotnet_dependencies + # uses: actions/setup-dotnet@v1 - - name: Setup MSBuild - id: setup_msbuild - uses: microsoft/setup-msbuild@v1 + # - name: Setup MSBuild + # id: setup_msbuild + # uses: microsoft/setup-msbuild@v1 - name: Checkout repository id: checkout_repo @@ -34,166 +34,178 @@ jobs: fetch-depth: 50 token: ${{ secrets.GITHUB_TOKEN }} - - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.configuration == 'Release' - name: Get assembly version from appxmanifest - id: get_assembly_version - shell: bash - run: | - cd src/Notepads/ - VERSION_STR=$(grep -oE ' \Version\=\"([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)\"' Package.appxmanifest) - VERSION=$(echo "$VERSION_STR" | grep -oE "([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)") - echo "::set-output name=version_num::$(echo $VERSION)" - echo "::set-output name=version_tag::$(echo v"$VERSION")" - - - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.configuration == 'Release' - name: Get latest tag - id: get_latest_tag - shell: bash - run: | - LATEST_TAG=$(git -c 'versionsort.suffix=-' ls-remote --exit-code --refs --sort='version:refname' --tags "https://github.com/$GIT_URL.git" '*.*.*' | tail --lines=1 | cut --delimiter='/' --fields=3) - echo "::set-output name=tag::$(echo $LATEST_TAG)" - env: - GIT_URL: ${{ github.repository }} - - - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && steps.get_assembly_version.outputs.version_tag != steps.get_latest_tag.outputs.tag && matrix.configuration == 'Release' - name: Add new tag to repo - id: add_new_tag_to_repo - shell: bash - run: | - git config --global user.name $GIT_USER_NAME - git config --global user.email $GIT_USER_EMAIL - git tag -a -m "Description for this release" $NEW_VERSION_TAG - git push --follow-tags - env: - GIT_USER_NAME: ${{ secrets.GIT_USER_NAME }} - GIT_USER_EMAIL: ${{ secrets.GIT_USER_EMAIL }} - NEW_VERSION_TAG: ${{ steps.get_assembly_version.outputs.version_tag }} - - - if: github.event_name != 'pull_request' - name: Cache SonarCloud packages - id: cache_sonar_packages - uses: actions/cache@v2 + - name: Get XML + id: getxml + uses: mavrosxristoforos/get-xml-info@1.0 with: - path: ~\sonar\cache - key: ${{ runner.os }}-sonar - restore-keys: ${{ runner.os }}-sonar - - - if: github.event_name != 'pull_request' - name: Cache SonarCloud scanner - id: cache_sonar_scanner - uses: actions/cache@v2 - with: - path: .\.sonar\scanner - key: ${{ runner.os }}-sonar-scanner - restore-keys: ${{ runner.os }}-sonar-scanner - - - if: github.event_name != 'pull_request' && steps.cache_sonar_scanner.outputs.cache-hit != 'true' - name: Install SonarCloud scanner - id: install_sonar_scanner - shell: powershell - run: | - New-Item -Path .\.sonar\scanner -ItemType Directory - dotnet tool update dotnet-sonarscanner --tool-path .\.sonar\scanner - - - if: github.event_name != 'pull_request' - name: Lowercase string generator - id: lowercase_string_gen - shell: powershell - run: | - $LOWERCASE_OWNER = "${{ github.repository_owner }}".ToLower() - echo "::set-output name=owner_name::$LOWERCASE_OWNER" - - - if: github.event_name != 'pull_request' - name: Initialize SonarCloud scanner - id: init_sonar_scanner - env: - SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - shell: powershell - run: .\.sonar\scanner\dotnet-sonarscanner begin /k:"${{ github.repository_owner }}_${{ github.event.repository.name }}" /o:"${{ steps.lowercase_string_gen.outputs.owner_name }}" /d:sonar.login="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" - - - name: Restore the application - id: restore_application - run: | - msbuild $env:Solution_Name ` - /t:Restore ` - /p:Configuration=$env:Configuration - env: - Configuration: ${{ matrix.configuration }} - - - name: Build and generate bundles - id: build_app - run: | - msbuild $env:Solution_Name ` - /p:Platform=$env:Platform ` - /p:Configuration=$env:Configuration ` - /p:UapAppxPackageBuildMode=$env:Uap_Appx_Package_Build_Mode ` - /p:AppxBundle=$env:Appx_Bundle ` - /p:AppxPackageSigningEnabled=$env:Appx_Package_Signing_Enabled ` - /p:AppxBundlePlatforms=$env:Appx_Bundle_Platforms ` - /p:AppxPackageDir=$env:Artifacts_Dir - env: - Platform: x64 - Configuration: ${{ matrix.configuration }} - Uap_Appx_Package_Build_Mode: StoreUpload - Appx_Bundle: Always - Appx_Package_Signing_Enabled: false - Appx_Bundle_Platforms: x86|x64 - Artifacts_Dir: ${{ github.workspace }}/Artifacts - - - if: github.event_name != 'pull_request' - name: Send SonarCloud results - id: send_sonar_results - env: - GITHUB_TOKEN: ${{ secrets.SONAR_GITHUB_TOKEN }} - SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - shell: powershell - run: .\.sonar\scanner\dotnet-sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN }}" - - - name: Upload build artifacts - id: upload_artifacts - uses: actions/upload-artifact@v1 - with: - name: Build artifacts - path: Artifacts/ + xml-file: 'src/Notepads/Package.appxmanifest' + xpath: '//Package' - cd: - # "This job will execute when the workflow is triggered on a 'push event', the target branch is 'master' and the commit is intended to be a release." - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && needs.ci.outputs.new_version != '' - needs: ci - runs-on: windows-latest - env: - NEW_VERSION: ${{ needs.ci.outputs.new_version }} - NEW_TAG: v${{ needs.ci.outputs.new_version }} - steps: - - name: Checkout repository - id: checkout_repo - uses: actions/checkout@v2 - - - name: Download and extract MSIX package - id: dl_package_artifact - uses: actions/download-artifact@v2 - with: - name: Build artifacts - path: Artifacts/ - - - name: Create and publish release - id: create_release - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{ env.NEW_TAG }} - release_name: Notepads ${{ env.NEW_TAG }} - - - name: Upload msixbundle as release asset - id: upload_notepads_zip - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: Artifacts/Notepads_${{ env.NEW_VERSION }}_Test/Notepads_${{ env.NEW_VERSION }}_x86_x64.msixbundle - asset_name: Notepads_${{ env.NEW_VERSION }}_x86_x64.msixbundle - asset_content_type: application/zip + - run: echo $STR + shell: bash + env: + STR: ${{ steps.getxml.outputs.info }} + + # - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.configuration == 'Release' + # name: Get assembly version from appxmanifest + # id: get_assembly_version + # shell: bash + # run: | + # cd src/Notepads/ + # VERSION_STR=$(grep -oE ' \Version\=\"([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)\"' Package.appxmanifest) + # VERSION=$(echo "$VERSION_STR" | grep -oE "([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)") + # echo "::set-output name=version_num::$(echo $VERSION)" + # echo "::set-output name=version_tag::$(echo v"$VERSION")" + + # - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.configuration == 'Release' + # name: Get latest tag + # id: get_latest_tag + # shell: bash + # run: | + # LATEST_TAG=$(git -c 'versionsort.suffix=-' ls-remote --exit-code --refs --sort='version:refname' --tags "https://github.com/$GIT_URL.git" '*.*.*' | tail --lines=1 | cut --delimiter='/' --fields=3) + # echo "::set-output name=tag::$(echo $LATEST_TAG)" + # env: + # GIT_URL: ${{ github.repository }} + + # - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && steps.get_assembly_version.outputs.version_tag != steps.get_latest_tag.outputs.tag && matrix.configuration == 'Release' + # name: Add new tag to repo + # id: add_new_tag_to_repo + # shell: bash + # run: | + # git config --global user.name $GIT_USER_NAME + # git config --global user.email $GIT_USER_EMAIL + # git tag -a -m "Description for this release" $NEW_VERSION_TAG + # git push --follow-tags + # env: + # GIT_USER_NAME: ${{ secrets.GIT_USER_NAME }} + # GIT_USER_EMAIL: ${{ secrets.GIT_USER_EMAIL }} + # NEW_VERSION_TAG: ${{ steps.get_assembly_version.outputs.version_tag }} + + # - if: github.event_name != 'pull_request' + # name: Cache SonarCloud packages + # id: cache_sonar_packages + # uses: actions/cache@v2 + # with: + # path: ~\sonar\cache + # key: ${{ runner.os }}-sonar + # restore-keys: ${{ runner.os }}-sonar + + # - if: github.event_name != 'pull_request' + # name: Cache SonarCloud scanner + # id: cache_sonar_scanner + # uses: actions/cache@v2 + # with: + # path: .\.sonar\scanner + # key: ${{ runner.os }}-sonar-scanner + # restore-keys: ${{ runner.os }}-sonar-scanner + + # - if: github.event_name != 'pull_request' && steps.cache_sonar_scanner.outputs.cache-hit != 'true' + # name: Install SonarCloud scanner + # id: install_sonar_scanner + # shell: powershell + # run: | + # New-Item -Path .\.sonar\scanner -ItemType Directory + # dotnet tool update dotnet-sonarscanner --tool-path .\.sonar\scanner + + # - if: github.event_name != 'pull_request' + # name: Lowercase string generator + # id: lowercase_string_gen + # shell: powershell + # run: | + # $LOWERCASE_OWNER = "${{ github.repository_owner }}".ToLower() + # echo "::set-output name=owner_name::$LOWERCASE_OWNER" + + # - if: github.event_name != 'pull_request' + # name: Initialize SonarCloud scanner + # id: init_sonar_scanner + # env: + # SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + # shell: powershell + # run: .\.sonar\scanner\dotnet-sonarscanner begin /k:"${{ github.repository_owner }}_${{ github.event.repository.name }}" /o:"${{ steps.lowercase_string_gen.outputs.owner_name }}" /d:sonar.login="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" + + # - name: Restore the application + # id: restore_application + # run: | + # msbuild $env:Solution_Name ` + # /t:Restore ` + # /p:Configuration=$env:Configuration + # env: + # Configuration: ${{ matrix.configuration }} + + # - name: Build and generate bundles + # id: build_app + # run: | + # msbuild $env:Solution_Name ` + # /p:Platform=$env:Platform ` + # /p:Configuration=$env:Configuration ` + # /p:UapAppxPackageBuildMode=$env:Uap_Appx_Package_Build_Mode ` + # /p:AppxBundle=$env:Appx_Bundle ` + # /p:AppxPackageSigningEnabled=$env:Appx_Package_Signing_Enabled ` + # /p:AppxBundlePlatforms=$env:Appx_Bundle_Platforms ` + # /p:AppxPackageDir=$env:Artifacts_Dir + # env: + # Platform: x64 + # Configuration: ${{ matrix.configuration }} + # Uap_Appx_Package_Build_Mode: StoreUpload + # Appx_Bundle: Always + # Appx_Package_Signing_Enabled: false + # Appx_Bundle_Platforms: x86|x64 + # Artifacts_Dir: ${{ github.workspace }}/Artifacts + + # - if: github.event_name != 'pull_request' + # name: Send SonarCloud results + # id: send_sonar_results + # env: + # GITHUB_TOKEN: ${{ secrets.SONAR_GITHUB_TOKEN }} + # SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + # shell: powershell + # run: .\.sonar\scanner\dotnet-sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN }}" + + # - name: Upload build artifacts + # id: upload_artifacts + # uses: actions/upload-artifact@v1 + # with: + # name: Build artifacts + # path: Artifacts/ + + # cd: + # # "This job will execute when the workflow is triggered on a 'push event', the target branch is 'master' and the commit is intended to be a release." + # if: github.event_name == 'push' && github.ref == 'refs/heads/master' && needs.ci.outputs.new_version != '' + # needs: ci + # runs-on: windows-latest + # env: + # NEW_VERSION: ${{ needs.ci.outputs.new_version }} + # NEW_TAG: v${{ needs.ci.outputs.new_version }} + # steps: + # - name: Checkout repository + # id: checkout_repo + # uses: actions/checkout@v2 + + # - name: Download and extract MSIX package + # id: dl_package_artifact + # uses: actions/download-artifact@v2 + # with: + # name: Build artifacts + # path: Artifacts/ + + # - name: Create and publish release + # id: create_release + # uses: actions/create-release@v1 + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # with: + # tag_name: ${{ env.NEW_TAG }} + # release_name: Notepads ${{ env.NEW_TAG }} + + # - name: Upload msixbundle as release asset + # id: upload_notepads_zip + # uses: actions/upload-release-asset@v1 + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # with: + # upload_url: ${{ steps.create_release.outputs.upload_url }} + # asset_path: Artifacts/Notepads_${{ env.NEW_VERSION }}_Test/Notepads_${{ env.NEW_VERSION }}_x86_x64.msixbundle + # asset_name: Notepads_${{ env.NEW_VERSION }}_x86_x64.msixbundle + # asset_content_type: application/zip # Built with ❤ by [Pipeline Foundation](https://pipeline.foundation) \ No newline at end of file From 840a8b582abdf540e723e36675bf3fb1639bbbbc Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 15 Feb 2021 13:33:12 +0200 Subject: [PATCH 108/194] test XML parser action --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ebca586e2..7ee9f1195 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -39,7 +39,7 @@ jobs: uses: mavrosxristoforos/get-xml-info@1.0 with: xml-file: 'src/Notepads/Package.appxmanifest' - xpath: '//Package' + xpath: '//object' - run: echo $STR shell: bash From abcf5f8ef8ab3bc6c195bb0dec003932cbb96cb7 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 15 Feb 2021 13:34:22 +0200 Subject: [PATCH 109/194] test XML parser action --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 7ee9f1195..c3918e9c3 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -38,8 +38,8 @@ jobs: id: getxml uses: mavrosxristoforos/get-xml-info@1.0 with: - xml-file: 'src/Notepads/Package.appxmanifest' - xpath: '//object' + xml-file: 'src\Notepads\Package.appxmanifest' + xpath: '//object//Package//Identity' - run: echo $STR shell: bash From 5db20c442227514a9f19c0c66f917dd51e20653f Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 15 Feb 2021 13:37:59 +0200 Subject: [PATCH 110/194] test XML parser action --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c3918e9c3..e5c24d1bc 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -39,7 +39,7 @@ jobs: uses: mavrosxristoforos/get-xml-info@1.0 with: xml-file: 'src\Notepads\Package.appxmanifest' - xpath: '//object//Package//Identity' + xpath: '/*' - run: echo $STR shell: bash From c7226da6d6204a4c8ba72308c5cbf24e9aece74c Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 15 Feb 2021 13:39:41 +0200 Subject: [PATCH 111/194] test XML parser action --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e5c24d1bc..fdca7f482 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -39,9 +39,9 @@ jobs: uses: mavrosxristoforos/get-xml-info@1.0 with: xml-file: 'src\Notepads\Package.appxmanifest' - xpath: '/*' + xpath: '/*/Identity/@Version' - - run: echo $STR + - run: echo "$STR" shell: bash env: STR: ${{ steps.getxml.outputs.info }} From 03c2be810133c8b9869ee181927b4765212fdd31 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 15 Feb 2021 13:40:52 +0200 Subject: [PATCH 112/194] test XML parser action --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index fdca7f482..5e97423ce 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -39,7 +39,7 @@ jobs: uses: mavrosxristoforos/get-xml-info@1.0 with: xml-file: 'src\Notepads\Package.appxmanifest' - xpath: '/*/Identity/@Version' + xpath: '/Package/Identity/@Version' - run: echo "$STR" shell: bash From 96e88169311791a2a1a65f8d88538b209936c8d1 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 15 Feb 2021 13:41:58 +0200 Subject: [PATCH 113/194] test XML parser action --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 5e97423ce..2d4abb45d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -39,7 +39,7 @@ jobs: uses: mavrosxristoforos/get-xml-info@1.0 with: xml-file: 'src\Notepads\Package.appxmanifest' - xpath: '/Package/Identity/@Version' + xpath: '//*/Identity' - run: echo "$STR" shell: bash From 3b02dee6f6e2db7639fbc7172b6a0827e7ebff9e Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 15 Feb 2021 13:42:48 +0200 Subject: [PATCH 114/194] test XML parser action --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 2d4abb45d..4c246e178 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -39,7 +39,7 @@ jobs: uses: mavrosxristoforos/get-xml-info@1.0 with: xml-file: 'src\Notepads\Package.appxmanifest' - xpath: '//*/Identity' + xpath: '//*/Package' - run: echo "$STR" shell: bash From 2e80bcd2de507acb2b3767972e57e086d420f315 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 15 Feb 2021 13:46:45 +0200 Subject: [PATCH 115/194] test XML parser action --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 4c246e178..afae08182 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -39,7 +39,7 @@ jobs: uses: mavrosxristoforos/get-xml-info@1.0 with: xml-file: 'src\Notepads\Package.appxmanifest' - xpath: '//*/Package' + xpath: '//Package/Identity/@Version' - run: echo "$STR" shell: bash From 74e07afa8c1bbfe29df226b9d13ad210cf91a7ce Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 15 Feb 2021 13:48:44 +0200 Subject: [PATCH 116/194] test XML parser action --- .github/workflows/main.yml | 2 +- src/Notepads/xml.xml | 1180 ++++++++++++++++++++++++++++++++++++ 2 files changed, 1181 insertions(+), 1 deletion(-) create mode 100644 src/Notepads/xml.xml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index afae08182..ea5d56d19 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -38,7 +38,7 @@ jobs: id: getxml uses: mavrosxristoforos/get-xml-info@1.0 with: - xml-file: 'src\Notepads\Package.appxmanifest' + xml-file: 'src\Notepads\xml.xml' xpath: '//Package/Identity/@Version' - run: echo "$STR" diff --git a/src/Notepads/xml.xml b/src/Notepads/xml.xml new file mode 100644 index 000000000..f6f29b0ce --- /dev/null +++ b/src/Notepads/xml.xml @@ -0,0 +1,1180 @@ + + + + + + + + + Notepads App + Jackie Liu + Assets\StoreLogo.png + + + + + + + + + + + + + + + + + + + + + + + + + + + Assets\appicon_w.png + Notepads URI Scheme + + + + + + + + + + + .txt + + ms-resource:Manifest/TextFileDisplayName + + Assets\FileIcons\txt.png + + + + + + .cfg + .config + .cnf + .conf + .properties + .directory + + ms-resource:Manifest/ConfigFileDisplayName + Assets\FileIcons\cfg.png + + + + + + + .ini + + ms-resource:Manifest/InitializationFileDisplayName + Assets\FileIcons\ini.png + + + + + + + .md + .markdown + .mkd + .mdwn + .mdown + .markdn + .mdtxt + .workbook + + ms-resource:Manifest/MarkdownFileDisplayName + Assets\FileIcons\md.png + + + + + + + .log + + ms-resource:Manifest/LogFileDisplayName + Assets\FileIcons\log.png + + + + + + + .bib + + ms-resource:Manifest/BibTeXFileDisplayName + Assets\FileIcons\bib.png + + + + + + + .json + .jsonc + .jsonld + .hintrc + .babelrc + .eslintrc + .jslintrc + .bowerrc + .jscsrc + .webmanifest + .har + + ms-resource:Manifest/JsonFileDisplayName + Assets\FileIcons\json.png + + + + + + + .yml + .yaml + + ms-resource:Manifest/YamlFileDisplayName + Assets\FileIcons\yml.png + + + + + + + .xml + .xsd + .ascx + .atom + .axml + .bpmn + .cpt + .csl + + ms-resource:Manifest/XmlFileDisplayName + Assets\FileIcons\xml.png + + + + + + + .html + .htm + .shtml + .xhtml + .mdoc + .jshtm + .volt + + ms-resource:Manifest/HtmlFileDisplayName + Assets\FileIcons\html.png + + + + + + + .asp + .aspx + + ms-resource:Manifest/AspFileDisplayName + Assets\FileIcons\asp.png + + + + + + + .jsp + .jspx + + ms-resource:Manifest/JspFileDisplayName + Assets\FileIcons\jsp.png + + + + + + + .css + .scss + + ms-resource:Manifest/CssFileDisplayName + Assets\FileIcons\css.png + + + + + + + .sh + + ms-resource:Manifest/ShellScriptFileDisplayName + Assets\FileIcons\sh.png + + + + + + + .bashrc + .vimrc + .rc + + ms-resource:Manifest/RunCommandsFileDisplayName + Assets\FileIcons\rc.png + + + + + + + .bash + + ms-resource:Manifest/BashScriptFileDisplayName + Assets\FileIcons\bash.png + + + + + + + .js + .jsx + .es6 + .mjs + .cjs + .pac + + ms-resource:Manifest/JavascriptFileDisplayName + Assets\FileIcons\js.png + + + + + + + .ts + .tsx + + ms-resource:Manifest/TypeScriptFileDisplayName + Assets\FileIcons\file.png + + + + + + + .lua + + ms-resource:Manifest/LuaFileDisplayName + Assets\FileIcons\file.png + + + + + + + .c + .m + .i + + ms-resource:Manifest/CFileDisplayName + Assets\FileIcons\c.png + + + + + + + .cc + .mm + .cpp + .cxx + .ii + .ino + + ms-resource:Manifest/CppFileDisplayName + Assets\FileIcons\cpp.png + + + + + + + .h + .hh + .hpp + .hxx + + ms-resource:Manifest/HeaderFileDisplayName + Assets\FileIcons\h.png + + + + + + + .cmake + + ms-resource:Manifest/CmakeFileDisplayName + Assets\FileIcons\file.png + + + + + + + .cs + .csx + .cake + + ms-resource:Manifest/CSharpFileDisplayName + Assets\FileIcons\cs.png + + + + + + + .php + .php4 + .php5 + .phtml + .ctp + + ms-resource:Manifest/PhpFileDisplayName + Assets\FileIcons\php.png + + + + + + + .py + + ms-resource:Manifest/PythonFileDisplayName + Assets\FileIcons\py.png + + + + + + + .rb + .rbx + .rjs + .gemspec + .rake + .ru + .erb + .rbi + .arb + + ms-resource:Manifest/RubyFileDisplayName + + Assets\FileIcons\rb.png + + + + + + .java + .jav + + ms-resource:Manifest/JavaFileDisplayName + Assets\FileIcons\java.png + + + + + + + .vb + .vbs + .brs + .bas + + ms-resource:Manifest/VisualBasicFileDisplayName + Assets\FileIcons\vb.png + + + + + + + .go + + ms-resource:Manifest/GoFileDisplayName + Assets\FileIcons\file.png + + + + + + + .srt + + ms-resource:Manifest/SubtitleFileDisplayName + Assets\FileIcons\srt.png + + + + + + + .ass + + ms-resource:Manifest/AegisubAdvancedSubtitleFileDisplayName + Assets\FileIcons\ass.png + + + + + + + .ssa + + ms-resource:Manifest/SubStationAlphaSubtitleFileDisplayName + Assets\FileIcons\ssa.png + + + + + + + .vue + + ms-resource:Manifest/VueFileDisplayName + Assets\FileIcons\vue.png + + + + + + + .vuerc + + ms-resource:Manifest/VueConfigFileDisplayName + Assets\FileIcons\vue.png + + + + + + + .gitconfig + + ms-resource:Manifest/GitConfigFileDisplayName + Assets\FileIcons\file.png + + + + + + + .gitignore + + ms-resource:Manifest/GitIgnoreFileDisplayName + Assets\FileIcons\file.png + + + + + + + .gitattributes + + ms-resource:Manifest/GitAttributesFileDisplayName + Assets\FileIcons\file.png + + + + + + + .project + .prj + + ms-resource:Manifest/ProjectFileDisplayName + Assets\FileIcons\file.png + + + + + + + .npmrc + + ms-resource:Manifest/NpmConfigFileDisplayName + Assets\FileIcons\file.png + + + + + + + .bash_history + + ms-resource:Manifest/BashHistoryFileDisplayName + Assets\FileIcons\file.png + + + + + + + .bash_aliases + + ms-resource:Manifest/BashAliasesFileDisplayName + Assets\FileIcons\file.png + + + + + + + .bash_profile + + ms-resource:Manifest/BashProfileFileDisplayName + Assets\FileIcons\file.png + + + + + + + .bash_login + + ms-resource:Manifest/BashLoginFileDisplayName + Assets\FileIcons\file.png + + + + + + + .bash_logout + + ms-resource:Manifest/BashLogoutFileDisplayName + Assets\FileIcons\file.png + + + + + + + .cgi + + ms-resource:Manifest/CgiFileDisplayName + Assets\FileIcons\file.png + + + + + + + .pl + .pm + .psgi + + ms-resource:Manifest/PerlFileDisplayName + Assets\FileIcons\perl.png + + + + + + + .buildpath + + ms-resource:Manifest/BuildPathFileDisplayName + Assets\FileIcons\file.png + + + + + + + .sql + .dsql + + ms-resource:Manifest/SqlFileDisplayName + Assets\FileIcons\sql.png + + + + + + + .nfo + + ms-resource:Manifest/NfoFileDisplayName + Assets\FileIcons\file.png + + + + + + + .ahk + + ms-resource:Manifest/AutoHotkeyScriptFileDisplayName + Assets\FileIcons\file.png + + + + + + + .zshrc + + ms-resource:Manifest/ZshellConfigFileDisplayName + Assets\FileIcons\file.png + + + + + + + .zsh_history + + ms-resource:Manifest/ZshellHistoryFileDisplayName + Assets\FileIcons\file.png + + + + + + + .lrc + + ms-resource:Manifest/LrcFileDisplayName + Assets\FileIcons\file.png + + + + + + + .v + + ms-resource:Manifest/VerilogFileDisplayName + Assets\FileIcons\file.png + + + + + + + .dat + + ms-resource:Manifest/DatFileDisplayName + Assets\FileIcons\file.png + + + + + + + .glsp + + ms-resource:Manifest/GlspFileDisplayName + Assets\FileIcons\file.png + + + + + + + .asm + + ms-resource:Manifest/AsmFileDisplayName + Assets\FileIcons\file.png + + + + + + + .clj + .cljs + .cljc + .cljx + .clojure + .edn + + ms-resource:Manifest/ClojureFileDisplayName + Assets\FileIcons\file.png + + + + + + + .coffee + .cson + .iced + + ms-resource:Manifest/CoffeeScriptFileDisplayName + Assets\FileIcons\file.png + + + + + + + .dockerfile + + ms-resource:Manifest/DockerFileDisplayName + Assets\FileIcons\file.png + + + + + + + .fs + .fsi + .fsx + .fsscript + + ms-resource:Manifest/FSharpFileDisplayName + Assets\FileIcons\file.png + + + + + + + .patch + .diff + .rej + + ms-resource:Manifest/DiffFileDisplayName + Assets\FileIcons\file.png + + + + + + + .groovy + .gvy + .gradle + + ms-resource:Manifest/GroovyFileDisplayName + Assets\FileIcons\file.png + + + + + + + .handlebars + .hbs + .hjs + + ms-resource:Manifest/HandlebarsFileDisplayName + Assets\FileIcons\file.png + + + + + + + .hlsl + .hlsli + .fx + .fxh + .vsh + .psh + .cginc + .compute + + ms-resource:Manifest/HlslFileDisplayName + Assets\FileIcons\file.png + + + + + + + .map + + ms-resource:Manifest/MapFileDisplayName + Assets\FileIcons\file.png + + + + + + + .less + + ms-resource:Manifest/LessFileDisplayName + Assets\FileIcons\file.png + + + + + + + .t + + ms-resource:Manifest/TFileDisplayName + Assets\FileIcons\file.png + + + + + + + .pod + .podspec + + ms-resource:Manifest/PodFileDisplayName + Assets\FileIcons\file.png + + + + + + + .p6 + .pl6 + .pm6 + .nqp + + ms-resource:Manifest/Perl6FileDisplayName + Assets\FileIcons\perl.png + + + + + + + .cshtml + + ms-resource:Manifest/RazorFileDisplayName + Assets\FileIcons\file.png + + + + + + + .rs + + ms-resource:Manifest/RustFileDisplayName + Assets\FileIcons\file.png + + + + + + + .shader + + ms-resource:Manifest/ShaderFileDisplayName + Assets\FileIcons\file.png + + + + + + + .jade + .pug + + ms-resource:Manifest/PugFileDisplayName + Assets\FileIcons\file.png + + + + + + + .r + .rhistory + .rprofile + .rt + + ms-resource:Manifest/RFileDisplayName + Assets\FileIcons\file.png + + + + + + + .install + + ms-resource:Manifest/InstallFileDisplayName + Assets\FileIcons\file.png + + + + + + + .profile + + ms-resource:Manifest/ProfileFileDisplayName + Assets\FileIcons\file.png + + + + + + + .ebuild + + ms-resource:Manifest/EBuildFileDisplayName + Assets\FileIcons\file.png + + + + + + + .swift + + ms-resource:Manifest/SwiftFileDisplayName + Assets\FileIcons\file.png + + + + + + + .ps1 + .psm1 + .psd1 + .pssc + .psrc + + ms-resource:Manifest/PowerShellFileDisplayName + Assets\FileIcons\file.png + + + + + + + .xaml + + ms-resource:Manifest/XamlFileDisplayName + Assets\FileIcons\file.png + + + + + + + .user + + ms-resource:Manifest/UserFileDisplayName + Assets\FileIcons\file.png + + + + + + + .bond + + ms-resource:Manifest/BondFileDisplayName + Assets\FileIcons\file.png + + + + + + + .htaccess + + ms-resource:Manifest/HypertextAccessFileDisplayName + Assets\FileIcons\file.png + + + + + + + .csv + + ms-resource:Manifest/CommaSeparatedValuesFileDisplayName + Assets\FileIcons\file.png + + + + + + + .m3u + .m3u8 + + ms-resource:Manifest/M3uFileDisplayName + Assets\FileIcons\file.png + + + + + + + .glslp + + ms-resource:Manifest/GlslFileDisplayName + Assets\FileIcons\file.png + + + + + + + .cht + + ms-resource:Manifest/CheatFileDisplayName + Assets\FileIcons\file.png + + + + + + + .opt + + ms-resource:Manifest/OptFileDisplayName + Assets\FileIcons\file.png + + + + + + + .env + + ms-resource:Manifest/EnvironmentFileDisplayName + Assets\FileIcons\file.png + + + + + + + .toml + + ms-resource:Manifest/TomlFileDisplayName + Assets\FileIcons\file.png + + + + + + + .pvd + + ms-resource:Manifest/PvdFileDisplayName + Assets\FileIcons\file.png + + + + + + + .xsl + + ms-resource:Manifest/XslFileDisplayName + Assets\FileIcons\file.png + + + + + + + .lic + + ms-resource:Manifest/LicenseFileDisplayName + Assets\FileIcons\file.png + + + + + + + .csproj + + ms-resource:Manifest/CSharpeProjectFileDisplayName + Assets\FileIcons\file.png + + + + + + + .resx + + ms-resource:Manifest/ResourceFileDisplayName + Assets\FileIcons\file.png + + + + + + + .plist + + ms-resource:Manifest/PropertyListFileDisplayName + Assets\FileIcons\file.png + + + + + + + + .randomextension + * + + Assets\FileIcons\file.png + + + + + + + + + + + + \ No newline at end of file From a286562145c7f9377dae47631ca8842d56a04293 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 15 Feb 2021 13:52:27 +0200 Subject: [PATCH 117/194] test XML parser action --- .github/workflows/main.yml | 4 +- src/Notepads/xml.xml | 1180 ------------------------------------ 2 files changed, 2 insertions(+), 1182 deletions(-) delete mode 100644 src/Notepads/xml.xml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ea5d56d19..468c21d4d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -38,8 +38,8 @@ jobs: id: getxml uses: mavrosxristoforos/get-xml-info@1.0 with: - xml-file: 'src\Notepads\xml.xml' - xpath: '//Package/Identity/@Version' + xml-file: 'src\Notepads\Package.appxmanifest' + xpath: '//Package/Identity[@Version]' - run: echo "$STR" shell: bash diff --git a/src/Notepads/xml.xml b/src/Notepads/xml.xml deleted file mode 100644 index f6f29b0ce..000000000 --- a/src/Notepads/xml.xml +++ /dev/null @@ -1,1180 +0,0 @@ - - - - - - - - - Notepads App - Jackie Liu - Assets\StoreLogo.png - - - - - - - - - - - - - - - - - - - - - - - - - - - Assets\appicon_w.png - Notepads URI Scheme - - - - - - - - - - - .txt - - ms-resource:Manifest/TextFileDisplayName - - Assets\FileIcons\txt.png - - - - - - .cfg - .config - .cnf - .conf - .properties - .directory - - ms-resource:Manifest/ConfigFileDisplayName - Assets\FileIcons\cfg.png - - - - - - - .ini - - ms-resource:Manifest/InitializationFileDisplayName - Assets\FileIcons\ini.png - - - - - - - .md - .markdown - .mkd - .mdwn - .mdown - .markdn - .mdtxt - .workbook - - ms-resource:Manifest/MarkdownFileDisplayName - Assets\FileIcons\md.png - - - - - - - .log - - ms-resource:Manifest/LogFileDisplayName - Assets\FileIcons\log.png - - - - - - - .bib - - ms-resource:Manifest/BibTeXFileDisplayName - Assets\FileIcons\bib.png - - - - - - - .json - .jsonc - .jsonld - .hintrc - .babelrc - .eslintrc - .jslintrc - .bowerrc - .jscsrc - .webmanifest - .har - - ms-resource:Manifest/JsonFileDisplayName - Assets\FileIcons\json.png - - - - - - - .yml - .yaml - - ms-resource:Manifest/YamlFileDisplayName - Assets\FileIcons\yml.png - - - - - - - .xml - .xsd - .ascx - .atom - .axml - .bpmn - .cpt - .csl - - ms-resource:Manifest/XmlFileDisplayName - Assets\FileIcons\xml.png - - - - - - - .html - .htm - .shtml - .xhtml - .mdoc - .jshtm - .volt - - ms-resource:Manifest/HtmlFileDisplayName - Assets\FileIcons\html.png - - - - - - - .asp - .aspx - - ms-resource:Manifest/AspFileDisplayName - Assets\FileIcons\asp.png - - - - - - - .jsp - .jspx - - ms-resource:Manifest/JspFileDisplayName - Assets\FileIcons\jsp.png - - - - - - - .css - .scss - - ms-resource:Manifest/CssFileDisplayName - Assets\FileIcons\css.png - - - - - - - .sh - - ms-resource:Manifest/ShellScriptFileDisplayName - Assets\FileIcons\sh.png - - - - - - - .bashrc - .vimrc - .rc - - ms-resource:Manifest/RunCommandsFileDisplayName - Assets\FileIcons\rc.png - - - - - - - .bash - - ms-resource:Manifest/BashScriptFileDisplayName - Assets\FileIcons\bash.png - - - - - - - .js - .jsx - .es6 - .mjs - .cjs - .pac - - ms-resource:Manifest/JavascriptFileDisplayName - Assets\FileIcons\js.png - - - - - - - .ts - .tsx - - ms-resource:Manifest/TypeScriptFileDisplayName - Assets\FileIcons\file.png - - - - - - - .lua - - ms-resource:Manifest/LuaFileDisplayName - Assets\FileIcons\file.png - - - - - - - .c - .m - .i - - ms-resource:Manifest/CFileDisplayName - Assets\FileIcons\c.png - - - - - - - .cc - .mm - .cpp - .cxx - .ii - .ino - - ms-resource:Manifest/CppFileDisplayName - Assets\FileIcons\cpp.png - - - - - - - .h - .hh - .hpp - .hxx - - ms-resource:Manifest/HeaderFileDisplayName - Assets\FileIcons\h.png - - - - - - - .cmake - - ms-resource:Manifest/CmakeFileDisplayName - Assets\FileIcons\file.png - - - - - - - .cs - .csx - .cake - - ms-resource:Manifest/CSharpFileDisplayName - Assets\FileIcons\cs.png - - - - - - - .php - .php4 - .php5 - .phtml - .ctp - - ms-resource:Manifest/PhpFileDisplayName - Assets\FileIcons\php.png - - - - - - - .py - - ms-resource:Manifest/PythonFileDisplayName - Assets\FileIcons\py.png - - - - - - - .rb - .rbx - .rjs - .gemspec - .rake - .ru - .erb - .rbi - .arb - - ms-resource:Manifest/RubyFileDisplayName - - Assets\FileIcons\rb.png - - - - - - .java - .jav - - ms-resource:Manifest/JavaFileDisplayName - Assets\FileIcons\java.png - - - - - - - .vb - .vbs - .brs - .bas - - ms-resource:Manifest/VisualBasicFileDisplayName - Assets\FileIcons\vb.png - - - - - - - .go - - ms-resource:Manifest/GoFileDisplayName - Assets\FileIcons\file.png - - - - - - - .srt - - ms-resource:Manifest/SubtitleFileDisplayName - Assets\FileIcons\srt.png - - - - - - - .ass - - ms-resource:Manifest/AegisubAdvancedSubtitleFileDisplayName - Assets\FileIcons\ass.png - - - - - - - .ssa - - ms-resource:Manifest/SubStationAlphaSubtitleFileDisplayName - Assets\FileIcons\ssa.png - - - - - - - .vue - - ms-resource:Manifest/VueFileDisplayName - Assets\FileIcons\vue.png - - - - - - - .vuerc - - ms-resource:Manifest/VueConfigFileDisplayName - Assets\FileIcons\vue.png - - - - - - - .gitconfig - - ms-resource:Manifest/GitConfigFileDisplayName - Assets\FileIcons\file.png - - - - - - - .gitignore - - ms-resource:Manifest/GitIgnoreFileDisplayName - Assets\FileIcons\file.png - - - - - - - .gitattributes - - ms-resource:Manifest/GitAttributesFileDisplayName - Assets\FileIcons\file.png - - - - - - - .project - .prj - - ms-resource:Manifest/ProjectFileDisplayName - Assets\FileIcons\file.png - - - - - - - .npmrc - - ms-resource:Manifest/NpmConfigFileDisplayName - Assets\FileIcons\file.png - - - - - - - .bash_history - - ms-resource:Manifest/BashHistoryFileDisplayName - Assets\FileIcons\file.png - - - - - - - .bash_aliases - - ms-resource:Manifest/BashAliasesFileDisplayName - Assets\FileIcons\file.png - - - - - - - .bash_profile - - ms-resource:Manifest/BashProfileFileDisplayName - Assets\FileIcons\file.png - - - - - - - .bash_login - - ms-resource:Manifest/BashLoginFileDisplayName - Assets\FileIcons\file.png - - - - - - - .bash_logout - - ms-resource:Manifest/BashLogoutFileDisplayName - Assets\FileIcons\file.png - - - - - - - .cgi - - ms-resource:Manifest/CgiFileDisplayName - Assets\FileIcons\file.png - - - - - - - .pl - .pm - .psgi - - ms-resource:Manifest/PerlFileDisplayName - Assets\FileIcons\perl.png - - - - - - - .buildpath - - ms-resource:Manifest/BuildPathFileDisplayName - Assets\FileIcons\file.png - - - - - - - .sql - .dsql - - ms-resource:Manifest/SqlFileDisplayName - Assets\FileIcons\sql.png - - - - - - - .nfo - - ms-resource:Manifest/NfoFileDisplayName - Assets\FileIcons\file.png - - - - - - - .ahk - - ms-resource:Manifest/AutoHotkeyScriptFileDisplayName - Assets\FileIcons\file.png - - - - - - - .zshrc - - ms-resource:Manifest/ZshellConfigFileDisplayName - Assets\FileIcons\file.png - - - - - - - .zsh_history - - ms-resource:Manifest/ZshellHistoryFileDisplayName - Assets\FileIcons\file.png - - - - - - - .lrc - - ms-resource:Manifest/LrcFileDisplayName - Assets\FileIcons\file.png - - - - - - - .v - - ms-resource:Manifest/VerilogFileDisplayName - Assets\FileIcons\file.png - - - - - - - .dat - - ms-resource:Manifest/DatFileDisplayName - Assets\FileIcons\file.png - - - - - - - .glsp - - ms-resource:Manifest/GlspFileDisplayName - Assets\FileIcons\file.png - - - - - - - .asm - - ms-resource:Manifest/AsmFileDisplayName - Assets\FileIcons\file.png - - - - - - - .clj - .cljs - .cljc - .cljx - .clojure - .edn - - ms-resource:Manifest/ClojureFileDisplayName - Assets\FileIcons\file.png - - - - - - - .coffee - .cson - .iced - - ms-resource:Manifest/CoffeeScriptFileDisplayName - Assets\FileIcons\file.png - - - - - - - .dockerfile - - ms-resource:Manifest/DockerFileDisplayName - Assets\FileIcons\file.png - - - - - - - .fs - .fsi - .fsx - .fsscript - - ms-resource:Manifest/FSharpFileDisplayName - Assets\FileIcons\file.png - - - - - - - .patch - .diff - .rej - - ms-resource:Manifest/DiffFileDisplayName - Assets\FileIcons\file.png - - - - - - - .groovy - .gvy - .gradle - - ms-resource:Manifest/GroovyFileDisplayName - Assets\FileIcons\file.png - - - - - - - .handlebars - .hbs - .hjs - - ms-resource:Manifest/HandlebarsFileDisplayName - Assets\FileIcons\file.png - - - - - - - .hlsl - .hlsli - .fx - .fxh - .vsh - .psh - .cginc - .compute - - ms-resource:Manifest/HlslFileDisplayName - Assets\FileIcons\file.png - - - - - - - .map - - ms-resource:Manifest/MapFileDisplayName - Assets\FileIcons\file.png - - - - - - - .less - - ms-resource:Manifest/LessFileDisplayName - Assets\FileIcons\file.png - - - - - - - .t - - ms-resource:Manifest/TFileDisplayName - Assets\FileIcons\file.png - - - - - - - .pod - .podspec - - ms-resource:Manifest/PodFileDisplayName - Assets\FileIcons\file.png - - - - - - - .p6 - .pl6 - .pm6 - .nqp - - ms-resource:Manifest/Perl6FileDisplayName - Assets\FileIcons\perl.png - - - - - - - .cshtml - - ms-resource:Manifest/RazorFileDisplayName - Assets\FileIcons\file.png - - - - - - - .rs - - ms-resource:Manifest/RustFileDisplayName - Assets\FileIcons\file.png - - - - - - - .shader - - ms-resource:Manifest/ShaderFileDisplayName - Assets\FileIcons\file.png - - - - - - - .jade - .pug - - ms-resource:Manifest/PugFileDisplayName - Assets\FileIcons\file.png - - - - - - - .r - .rhistory - .rprofile - .rt - - ms-resource:Manifest/RFileDisplayName - Assets\FileIcons\file.png - - - - - - - .install - - ms-resource:Manifest/InstallFileDisplayName - Assets\FileIcons\file.png - - - - - - - .profile - - ms-resource:Manifest/ProfileFileDisplayName - Assets\FileIcons\file.png - - - - - - - .ebuild - - ms-resource:Manifest/EBuildFileDisplayName - Assets\FileIcons\file.png - - - - - - - .swift - - ms-resource:Manifest/SwiftFileDisplayName - Assets\FileIcons\file.png - - - - - - - .ps1 - .psm1 - .psd1 - .pssc - .psrc - - ms-resource:Manifest/PowerShellFileDisplayName - Assets\FileIcons\file.png - - - - - - - .xaml - - ms-resource:Manifest/XamlFileDisplayName - Assets\FileIcons\file.png - - - - - - - .user - - ms-resource:Manifest/UserFileDisplayName - Assets\FileIcons\file.png - - - - - - - .bond - - ms-resource:Manifest/BondFileDisplayName - Assets\FileIcons\file.png - - - - - - - .htaccess - - ms-resource:Manifest/HypertextAccessFileDisplayName - Assets\FileIcons\file.png - - - - - - - .csv - - ms-resource:Manifest/CommaSeparatedValuesFileDisplayName - Assets\FileIcons\file.png - - - - - - - .m3u - .m3u8 - - ms-resource:Manifest/M3uFileDisplayName - Assets\FileIcons\file.png - - - - - - - .glslp - - ms-resource:Manifest/GlslFileDisplayName - Assets\FileIcons\file.png - - - - - - - .cht - - ms-resource:Manifest/CheatFileDisplayName - Assets\FileIcons\file.png - - - - - - - .opt - - ms-resource:Manifest/OptFileDisplayName - Assets\FileIcons\file.png - - - - - - - .env - - ms-resource:Manifest/EnvironmentFileDisplayName - Assets\FileIcons\file.png - - - - - - - .toml - - ms-resource:Manifest/TomlFileDisplayName - Assets\FileIcons\file.png - - - - - - - .pvd - - ms-resource:Manifest/PvdFileDisplayName - Assets\FileIcons\file.png - - - - - - - .xsl - - ms-resource:Manifest/XslFileDisplayName - Assets\FileIcons\file.png - - - - - - - .lic - - ms-resource:Manifest/LicenseFileDisplayName - Assets\FileIcons\file.png - - - - - - - .csproj - - ms-resource:Manifest/CSharpeProjectFileDisplayName - Assets\FileIcons\file.png - - - - - - - .resx - - ms-resource:Manifest/ResourceFileDisplayName - Assets\FileIcons\file.png - - - - - - - .plist - - ms-resource:Manifest/PropertyListFileDisplayName - Assets\FileIcons\file.png - - - - - - - - .randomextension - * - - Assets\FileIcons\file.png - - - - - - - - - - - - \ No newline at end of file From 129b2c5e1c91f1bbb58a0367ac10d0d7ffc0eab8 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 15 Feb 2021 13:54:11 +0200 Subject: [PATCH 118/194] test XML parser action --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 468c21d4d..68d14c5e7 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -38,7 +38,7 @@ jobs: id: getxml uses: mavrosxristoforos/get-xml-info@1.0 with: - xml-file: 'src\Notepads\Package.appxmanifest' + xml-file: 'src/Notepads/Package.appxmanifest' xpath: '//Package/Identity[@Version]' - run: echo "$STR" From c5a5db759dd33c5126ffead3abcafb311ecdcc88 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 15 Feb 2021 13:55:28 +0200 Subject: [PATCH 119/194] test XML parser action --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 68d14c5e7..aa5d9ed59 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -38,7 +38,7 @@ jobs: id: getxml uses: mavrosxristoforos/get-xml-info@1.0 with: - xml-file: 'src/Notepads/Package.appxmanifest' + xml-file: '\src\Notepads\Package.appxmanifest' xpath: '//Package/Identity[@Version]' - run: echo "$STR" From 86a572945b87333ee6057b117f946d1507649f22 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 15 Feb 2021 13:56:14 +0200 Subject: [PATCH 120/194] test XML parser action --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index aa5d9ed59..28d53394c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -38,7 +38,7 @@ jobs: id: getxml uses: mavrosxristoforos/get-xml-info@1.0 with: - xml-file: '\src\Notepads\Package.appxmanifest' + xml-file: '.\src\Notepads\Package.appxmanifest' xpath: '//Package/Identity[@Version]' - run: echo "$STR" From adcca3563a32fd285575583c8f9922dfeb394c86 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 15 Feb 2021 13:57:22 +0200 Subject: [PATCH 121/194] test XML parser action --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 28d53394c..3e809d60c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -4,7 +4,7 @@ on: [push, pull_request, workflow_dispatch] jobs: ci: - runs-on: windows-latest + runs-on: ubuntu-latest strategy: matrix: configuration: [ Debug, Release ] @@ -38,7 +38,7 @@ jobs: id: getxml uses: mavrosxristoforos/get-xml-info@1.0 with: - xml-file: '.\src\Notepads\Package.appxmanifest' + xml-file: 'src/Notepads/Package.appxmanifest' xpath: '//Package/Identity[@Version]' - run: echo "$STR" From 114df6eb4b7ed328917951df52fd9e5d2f34bf3e Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 15 Feb 2021 13:58:18 +0200 Subject: [PATCH 122/194] test XML parser action --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 3e809d60c..f8ffd5796 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -39,7 +39,7 @@ jobs: uses: mavrosxristoforos/get-xml-info@1.0 with: xml-file: 'src/Notepads/Package.appxmanifest' - xpath: '//Package/Identity[@Version]' + xpath: '//Package' - run: echo "$STR" shell: bash From 7193ee40bb2b7c9191adba88f28b2b98030f7316 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 15 Feb 2021 13:59:48 +0200 Subject: [PATCH 123/194] test XML parser action --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f8ffd5796..f08c104d5 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -39,7 +39,7 @@ jobs: uses: mavrosxristoforos/get-xml-info@1.0 with: xml-file: 'src/Notepads/Package.appxmanifest' - xpath: '//Package' + xpath: '//*' - run: echo "$STR" shell: bash From b9275823a09d9e97937844d6e23a3cc5ed20f41a Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 15 Feb 2021 14:01:05 +0200 Subject: [PATCH 124/194] test XML parser action --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f08c104d5..b5c2b740e 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -39,7 +39,7 @@ jobs: uses: mavrosxristoforos/get-xml-info@1.0 with: xml-file: 'src/Notepads/Package.appxmanifest' - xpath: '//*' + xpath: '//Package/Identity/@Version' - run: echo "$STR" shell: bash From 3241741c8c8b5bc876873087c9c8f85abb80e2ef Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 15 Feb 2021 14:02:47 +0200 Subject: [PATCH 125/194] test XML parser action --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b5c2b740e..d2d381048 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -39,7 +39,7 @@ jobs: uses: mavrosxristoforos/get-xml-info@1.0 with: xml-file: 'src/Notepads/Package.appxmanifest' - xpath: '//Package/Identity/@Version' + xpath: '//package/identity/@version' - run: echo "$STR" shell: bash From 90a4c4c012d1d03309ef613dfc3cc8d68611c387 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 15 Feb 2021 14:03:57 +0200 Subject: [PATCH 126/194] test XML parser action --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d2d381048..c8b58e594 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -39,7 +39,7 @@ jobs: uses: mavrosxristoforos/get-xml-info@1.0 with: xml-file: 'src/Notepads/Package.appxmanifest' - xpath: '//package/identity/@version' + xpath: '/Identity/@Version' - run: echo "$STR" shell: bash From 21da8eb132b8ef21185a05d0cefb9d5c9ac69e2a Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 15 Feb 2021 14:04:49 +0200 Subject: [PATCH 127/194] test XML parser action --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c8b58e594..1eb0cc0a4 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -39,7 +39,7 @@ jobs: uses: mavrosxristoforos/get-xml-info@1.0 with: xml-file: 'src/Notepads/Package.appxmanifest' - xpath: '/Identity/@Version' + xpath: '//Identity/@Version' - run: echo "$STR" shell: bash From 8236893c90d2e5d6b86fa6d788ef3e90606efcce Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 15 Feb 2021 14:06:41 +0200 Subject: [PATCH 128/194] test XML parser action --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 1eb0cc0a4..077d776ab 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -39,7 +39,7 @@ jobs: uses: mavrosxristoforos/get-xml-info@1.0 with: xml-file: 'src/Notepads/Package.appxmanifest' - xpath: '//Identity/@Version' + xpath: '//Identity' - run: echo "$STR" shell: bash From 00ea017ff017df6efb7aeae2bd1aacd46d7de03c Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 15 Feb 2021 14:13:31 +0200 Subject: [PATCH 129/194] remove XML parser action --- .github/workflows/main.yml | 354 ++++++++++++++++++------------------- 1 file changed, 171 insertions(+), 183 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 077d776ab..b7db7cad5 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -4,7 +4,7 @@ on: [push, pull_request, workflow_dispatch] jobs: ci: - runs-on: ubuntu-latest + runs-on: windows-latest strategy: matrix: configuration: [ Debug, Release ] @@ -13,19 +13,19 @@ jobs: env: Solution_Name: src\Notepads.sln steps: - # - name: Set up JDK 11 - # id: Setup_JDK - # uses: actions/setup-java@v1 - # with: - # java-version: 1.11 + - name: Set up JDK 11 + id: Setup_JDK + uses: actions/setup-java@v1 + with: + java-version: 1.11 - # - name: Install .NET Core - # id: install_dotnet_dependencies - # uses: actions/setup-dotnet@v1 + - name: Install .NET Core + id: install_dotnet_dependencies + uses: actions/setup-dotnet@v1 - # - name: Setup MSBuild - # id: setup_msbuild - # uses: microsoft/setup-msbuild@v1 + - name: Setup MSBuild + id: setup_msbuild + uses: microsoft/setup-msbuild@v1 - name: Checkout repository id: checkout_repo @@ -34,178 +34,166 @@ jobs: fetch-depth: 50 token: ${{ secrets.GITHUB_TOKEN }} - - name: Get XML - id: getxml - uses: mavrosxristoforos/get-xml-info@1.0 - with: - xml-file: 'src/Notepads/Package.appxmanifest' - xpath: '//Identity' - - - run: echo "$STR" + - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.configuration == 'Release' + name: Get assembly version from appxmanifest + id: get_assembly_version shell: bash - env: - STR: ${{ steps.getxml.outputs.info }} - - # - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.configuration == 'Release' - # name: Get assembly version from appxmanifest - # id: get_assembly_version - # shell: bash - # run: | - # cd src/Notepads/ - # VERSION_STR=$(grep -oE ' \Version\=\"([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)\"' Package.appxmanifest) - # VERSION=$(echo "$VERSION_STR" | grep -oE "([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)") - # echo "::set-output name=version_num::$(echo $VERSION)" - # echo "::set-output name=version_tag::$(echo v"$VERSION")" - - # - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.configuration == 'Release' - # name: Get latest tag - # id: get_latest_tag - # shell: bash - # run: | - # LATEST_TAG=$(git -c 'versionsort.suffix=-' ls-remote --exit-code --refs --sort='version:refname' --tags "https://github.com/$GIT_URL.git" '*.*.*' | tail --lines=1 | cut --delimiter='/' --fields=3) - # echo "::set-output name=tag::$(echo $LATEST_TAG)" - # env: - # GIT_URL: ${{ github.repository }} + run: | + cd src/Notepads/ + VERSION_STR=$(grep -oE ' \Version\=\"([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)\"' Package.appxmanifest) + VERSION=$(echo "$VERSION_STR" | grep -oE "([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)") + echo "::set-output name=version_num::$(echo $VERSION)" + echo "::set-output name=version_tag::$(echo v"$VERSION")" + + - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.configuration == 'Release' + name: Get latest tag + id: get_latest_tag + shell: bash + run: | + LATEST_TAG=$(git -c 'versionsort.suffix=-' ls-remote --exit-code --refs --sort='version:refname' --tags "https://github.com/$GIT_URL.git" '*.*.*' | tail --lines=1 | cut --delimiter='/' --fields=3) + echo "::set-output name=tag::$(echo $LATEST_TAG)" + env: + GIT_URL: ${{ github.repository }} - # - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && steps.get_assembly_version.outputs.version_tag != steps.get_latest_tag.outputs.tag && matrix.configuration == 'Release' - # name: Add new tag to repo - # id: add_new_tag_to_repo - # shell: bash - # run: | - # git config --global user.name $GIT_USER_NAME - # git config --global user.email $GIT_USER_EMAIL - # git tag -a -m "Description for this release" $NEW_VERSION_TAG - # git push --follow-tags - # env: - # GIT_USER_NAME: ${{ secrets.GIT_USER_NAME }} - # GIT_USER_EMAIL: ${{ secrets.GIT_USER_EMAIL }} - # NEW_VERSION_TAG: ${{ steps.get_assembly_version.outputs.version_tag }} - - # - if: github.event_name != 'pull_request' - # name: Cache SonarCloud packages - # id: cache_sonar_packages - # uses: actions/cache@v2 - # with: - # path: ~\sonar\cache - # key: ${{ runner.os }}-sonar - # restore-keys: ${{ runner.os }}-sonar - - # - if: github.event_name != 'pull_request' - # name: Cache SonarCloud scanner - # id: cache_sonar_scanner - # uses: actions/cache@v2 - # with: - # path: .\.sonar\scanner - # key: ${{ runner.os }}-sonar-scanner - # restore-keys: ${{ runner.os }}-sonar-scanner - - # - if: github.event_name != 'pull_request' && steps.cache_sonar_scanner.outputs.cache-hit != 'true' - # name: Install SonarCloud scanner - # id: install_sonar_scanner - # shell: powershell - # run: | - # New-Item -Path .\.sonar\scanner -ItemType Directory - # dotnet tool update dotnet-sonarscanner --tool-path .\.sonar\scanner - - # - if: github.event_name != 'pull_request' - # name: Lowercase string generator - # id: lowercase_string_gen - # shell: powershell - # run: | - # $LOWERCASE_OWNER = "${{ github.repository_owner }}".ToLower() - # echo "::set-output name=owner_name::$LOWERCASE_OWNER" - - # - if: github.event_name != 'pull_request' - # name: Initialize SonarCloud scanner - # id: init_sonar_scanner - # env: - # SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - # shell: powershell - # run: .\.sonar\scanner\dotnet-sonarscanner begin /k:"${{ github.repository_owner }}_${{ github.event.repository.name }}" /o:"${{ steps.lowercase_string_gen.outputs.owner_name }}" /d:sonar.login="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" - - # - name: Restore the application - # id: restore_application - # run: | - # msbuild $env:Solution_Name ` - # /t:Restore ` - # /p:Configuration=$env:Configuration - # env: - # Configuration: ${{ matrix.configuration }} - - # - name: Build and generate bundles - # id: build_app - # run: | - # msbuild $env:Solution_Name ` - # /p:Platform=$env:Platform ` - # /p:Configuration=$env:Configuration ` - # /p:UapAppxPackageBuildMode=$env:Uap_Appx_Package_Build_Mode ` - # /p:AppxBundle=$env:Appx_Bundle ` - # /p:AppxPackageSigningEnabled=$env:Appx_Package_Signing_Enabled ` - # /p:AppxBundlePlatforms=$env:Appx_Bundle_Platforms ` - # /p:AppxPackageDir=$env:Artifacts_Dir - # env: - # Platform: x64 - # Configuration: ${{ matrix.configuration }} - # Uap_Appx_Package_Build_Mode: StoreUpload - # Appx_Bundle: Always - # Appx_Package_Signing_Enabled: false - # Appx_Bundle_Platforms: x86|x64 - # Artifacts_Dir: ${{ github.workspace }}/Artifacts - - # - if: github.event_name != 'pull_request' - # name: Send SonarCloud results - # id: send_sonar_results - # env: - # GITHUB_TOKEN: ${{ secrets.SONAR_GITHUB_TOKEN }} - # SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - # shell: powershell - # run: .\.sonar\scanner\dotnet-sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN }}" - - # - name: Upload build artifacts - # id: upload_artifacts - # uses: actions/upload-artifact@v1 - # with: - # name: Build artifacts - # path: Artifacts/ - - # cd: - # # "This job will execute when the workflow is triggered on a 'push event', the target branch is 'master' and the commit is intended to be a release." - # if: github.event_name == 'push' && github.ref == 'refs/heads/master' && needs.ci.outputs.new_version != '' - # needs: ci - # runs-on: windows-latest - # env: - # NEW_VERSION: ${{ needs.ci.outputs.new_version }} - # NEW_TAG: v${{ needs.ci.outputs.new_version }} - # steps: - # - name: Checkout repository - # id: checkout_repo - # uses: actions/checkout@v2 - - # - name: Download and extract MSIX package - # id: dl_package_artifact - # uses: actions/download-artifact@v2 - # with: - # name: Build artifacts - # path: Artifacts/ - - # - name: Create and publish release - # id: create_release - # uses: actions/create-release@v1 - # env: - # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - # with: - # tag_name: ${{ env.NEW_TAG }} - # release_name: Notepads ${{ env.NEW_TAG }} - - # - name: Upload msixbundle as release asset - # id: upload_notepads_zip - # uses: actions/upload-release-asset@v1 - # env: - # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - # with: - # upload_url: ${{ steps.create_release.outputs.upload_url }} - # asset_path: Artifacts/Notepads_${{ env.NEW_VERSION }}_Test/Notepads_${{ env.NEW_VERSION }}_x86_x64.msixbundle - # asset_name: Notepads_${{ env.NEW_VERSION }}_x86_x64.msixbundle - # asset_content_type: application/zip + - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && steps.get_assembly_version.outputs.version_tag != steps.get_latest_tag.outputs.tag && matrix.configuration == 'Release' + name: Add new tag to repo + id: add_new_tag_to_repo + shell: bash + run: | + git config --global user.name $GIT_USER_NAME + git config --global user.email $GIT_USER_EMAIL + git tag -a -m "Description for this release" $NEW_VERSION_TAG + git push --follow-tags + env: + GIT_USER_NAME: ${{ secrets.GIT_USER_NAME }} + GIT_USER_EMAIL: ${{ secrets.GIT_USER_EMAIL }} + NEW_VERSION_TAG: ${{ steps.get_assembly_version.outputs.version_tag }} + + - if: github.event_name != 'pull_request' + name: Cache SonarCloud packages + id: cache_sonar_packages + uses: actions/cache@v2 + with: + path: ~\sonar\cache + key: ${{ runner.os }}-sonar + restore-keys: ${{ runner.os }}-sonar + + - if: github.event_name != 'pull_request' + name: Cache SonarCloud scanner + id: cache_sonar_scanner + uses: actions/cache@v2 + with: + path: .\.sonar\scanner + key: ${{ runner.os }}-sonar-scanner + restore-keys: ${{ runner.os }}-sonar-scanner + + - if: github.event_name != 'pull_request' && steps.cache_sonar_scanner.outputs.cache-hit != 'true' + name: Install SonarCloud scanner + id: install_sonar_scanner + shell: powershell + run: | + New-Item -Path .\.sonar\scanner -ItemType Directory + dotnet tool update dotnet-sonarscanner --tool-path .\.sonar\scanner + + - if: github.event_name != 'pull_request' + name: Lowercase string generator + id: lowercase_string_gen + shell: powershell + run: | + $LOWERCASE_OWNER = "${{ github.repository_owner }}".ToLower() + echo "::set-output name=owner_name::$LOWERCASE_OWNER" + + - if: github.event_name != 'pull_request' + name: Initialize SonarCloud scanner + id: init_sonar_scanner + env: + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + shell: powershell + run: .\.sonar\scanner\dotnet-sonarscanner begin /k:"${{ github.repository_owner }}_${{ github.event.repository.name }}" /o:"${{ steps.lowercase_string_gen.outputs.owner_name }}" /d:sonar.login="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" + + - name: Restore the application + id: restore_application + run: | + msbuild $env:Solution_Name ` + /t:Restore ` + /p:Configuration=$env:Configuration + env: + Configuration: ${{ matrix.configuration }} + + - name: Build and generate bundles + id: build_app + run: | + msbuild $env:Solution_Name ` + /p:Platform=$env:Platform ` + /p:Configuration=$env:Configuration ` + /p:UapAppxPackageBuildMode=$env:Uap_Appx_Package_Build_Mode ` + /p:AppxBundle=$env:Appx_Bundle ` + /p:AppxPackageSigningEnabled=$env:Appx_Package_Signing_Enabled ` + /p:AppxBundlePlatforms=$env:Appx_Bundle_Platforms ` + /p:AppxPackageDir=$env:Artifacts_Dir + env: + Platform: x64 + Configuration: ${{ matrix.configuration }} + Uap_Appx_Package_Build_Mode: StoreUpload + Appx_Bundle: Always + Appx_Package_Signing_Enabled: false + Appx_Bundle_Platforms: x86|x64 + Artifacts_Dir: ${{ github.workspace }}/Artifacts + + - if: github.event_name != 'pull_request' + name: Send SonarCloud results + id: send_sonar_results + env: + GITHUB_TOKEN: ${{ secrets.SONAR_GITHUB_TOKEN }} + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + shell: powershell + run: .\.sonar\scanner\dotnet-sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN }}" + + - name: Upload build artifacts + id: upload_artifacts + uses: actions/upload-artifact@v1 + with: + name: Build artifacts + path: Artifacts/ + + cd: + # "This job will execute when the workflow is triggered on a 'push event', the target branch is 'master' and the commit is intended to be a release." + if: github.event_name == 'push' && github.ref == 'refs/heads/master' && needs.ci.outputs.new_version != '' + needs: ci + runs-on: windows-latest + env: + NEW_VERSION: ${{ needs.ci.outputs.new_version }} + NEW_TAG: v${{ needs.ci.outputs.new_version }} + steps: + - name: Checkout repository + id: checkout_repo + uses: actions/checkout@v2 + + - name: Download and extract MSIX package + id: dl_package_artifact + uses: actions/download-artifact@v2 + with: + name: Build artifacts + path: Artifacts/ + + - name: Create and publish release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ env.NEW_TAG }} + release_name: Notepads ${{ env.NEW_TAG }} + + - name: Upload msixbundle as release asset + id: upload_notepads_zip + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: Artifacts/Notepads_${{ env.NEW_VERSION }}_Test/Notepads_${{ env.NEW_VERSION }}_x86_x64.msixbundle + asset_name: Notepads_${{ env.NEW_VERSION }}_x86_x64.msixbundle + asset_content_type: application/zip # Built with ❤ by [Pipeline Foundation](https://pipeline.foundation) \ No newline at end of file From 8a72f2c3f0434ef98c9528cfdaee65b6fe35de8f Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 15 Feb 2021 14:22:50 +0200 Subject: [PATCH 130/194] test xPath --- .github/workflows/main.yml | 344 +++++++++++++++++++------------------ 1 file changed, 173 insertions(+), 171 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b7db7cad5..ec59c5625 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -13,19 +13,19 @@ jobs: env: Solution_Name: src\Notepads.sln steps: - - name: Set up JDK 11 - id: Setup_JDK - uses: actions/setup-java@v1 - with: - java-version: 1.11 + # - name: Set up JDK 11 + # id: Setup_JDK + # uses: actions/setup-java@v1 + # with: + # java-version: 1.11 - - name: Install .NET Core - id: install_dotnet_dependencies - uses: actions/setup-dotnet@v1 + # - name: Install .NET Core + # id: install_dotnet_dependencies + # uses: actions/setup-dotnet@v1 - - name: Setup MSBuild - id: setup_msbuild - uses: microsoft/setup-msbuild@v1 + # - name: Setup MSBuild + # id: setup_msbuild + # uses: microsoft/setup-msbuild@v1 - name: Checkout repository id: checkout_repo @@ -34,166 +34,168 @@ jobs: fetch-depth: 50 token: ${{ secrets.GITHUB_TOKEN }} - - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.configuration == 'Release' - name: Get assembly version from appxmanifest - id: get_assembly_version - shell: bash - run: | - cd src/Notepads/ - VERSION_STR=$(grep -oE ' \Version\=\"([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)\"' Package.appxmanifest) - VERSION=$(echo "$VERSION_STR" | grep -oE "([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)") - echo "::set-output name=version_num::$(echo $VERSION)" - echo "::set-output name=version_tag::$(echo v"$VERSION")" - - - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.configuration == 'Release' - name: Get latest tag - id: get_latest_tag - shell: bash - run: | - LATEST_TAG=$(git -c 'versionsort.suffix=-' ls-remote --exit-code --refs --sort='version:refname' --tags "https://github.com/$GIT_URL.git" '*.*.*' | tail --lines=1 | cut --delimiter='/' --fields=3) - echo "::set-output name=tag::$(echo $LATEST_TAG)" - env: - GIT_URL: ${{ github.repository }} + - run: xpath + + # - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.configuration == 'Release' + # name: Get assembly version from appxmanifest + # id: get_assembly_version + # shell: bash + # run: | + # cd src/Notepads/ + # VERSION_STR=$(grep -oE ' \Version\=\"([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)\"' Package.appxmanifest) + # VERSION=$(echo "$VERSION_STR" | grep -oE "([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)") + # echo "::set-output name=version_num::$(echo $VERSION)" + # echo "::set-output name=version_tag::$(echo v"$VERSION")" + + # - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.configuration == 'Release' + # name: Get latest tag + # id: get_latest_tag + # shell: bash + # run: | + # LATEST_TAG=$(git -c 'versionsort.suffix=-' ls-remote --exit-code --refs --sort='version:refname' --tags "https://github.com/$GIT_URL.git" '*.*.*' | tail --lines=1 | cut --delimiter='/' --fields=3) + # echo "::set-output name=tag::$(echo $LATEST_TAG)" + # env: + # GIT_URL: ${{ github.repository }} - - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && steps.get_assembly_version.outputs.version_tag != steps.get_latest_tag.outputs.tag && matrix.configuration == 'Release' - name: Add new tag to repo - id: add_new_tag_to_repo - shell: bash - run: | - git config --global user.name $GIT_USER_NAME - git config --global user.email $GIT_USER_EMAIL - git tag -a -m "Description for this release" $NEW_VERSION_TAG - git push --follow-tags - env: - GIT_USER_NAME: ${{ secrets.GIT_USER_NAME }} - GIT_USER_EMAIL: ${{ secrets.GIT_USER_EMAIL }} - NEW_VERSION_TAG: ${{ steps.get_assembly_version.outputs.version_tag }} - - - if: github.event_name != 'pull_request' - name: Cache SonarCloud packages - id: cache_sonar_packages - uses: actions/cache@v2 - with: - path: ~\sonar\cache - key: ${{ runner.os }}-sonar - restore-keys: ${{ runner.os }}-sonar - - - if: github.event_name != 'pull_request' - name: Cache SonarCloud scanner - id: cache_sonar_scanner - uses: actions/cache@v2 - with: - path: .\.sonar\scanner - key: ${{ runner.os }}-sonar-scanner - restore-keys: ${{ runner.os }}-sonar-scanner - - - if: github.event_name != 'pull_request' && steps.cache_sonar_scanner.outputs.cache-hit != 'true' - name: Install SonarCloud scanner - id: install_sonar_scanner - shell: powershell - run: | - New-Item -Path .\.sonar\scanner -ItemType Directory - dotnet tool update dotnet-sonarscanner --tool-path .\.sonar\scanner - - - if: github.event_name != 'pull_request' - name: Lowercase string generator - id: lowercase_string_gen - shell: powershell - run: | - $LOWERCASE_OWNER = "${{ github.repository_owner }}".ToLower() - echo "::set-output name=owner_name::$LOWERCASE_OWNER" - - - if: github.event_name != 'pull_request' - name: Initialize SonarCloud scanner - id: init_sonar_scanner - env: - SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - shell: powershell - run: .\.sonar\scanner\dotnet-sonarscanner begin /k:"${{ github.repository_owner }}_${{ github.event.repository.name }}" /o:"${{ steps.lowercase_string_gen.outputs.owner_name }}" /d:sonar.login="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" - - - name: Restore the application - id: restore_application - run: | - msbuild $env:Solution_Name ` - /t:Restore ` - /p:Configuration=$env:Configuration - env: - Configuration: ${{ matrix.configuration }} - - - name: Build and generate bundles - id: build_app - run: | - msbuild $env:Solution_Name ` - /p:Platform=$env:Platform ` - /p:Configuration=$env:Configuration ` - /p:UapAppxPackageBuildMode=$env:Uap_Appx_Package_Build_Mode ` - /p:AppxBundle=$env:Appx_Bundle ` - /p:AppxPackageSigningEnabled=$env:Appx_Package_Signing_Enabled ` - /p:AppxBundlePlatforms=$env:Appx_Bundle_Platforms ` - /p:AppxPackageDir=$env:Artifacts_Dir - env: - Platform: x64 - Configuration: ${{ matrix.configuration }} - Uap_Appx_Package_Build_Mode: StoreUpload - Appx_Bundle: Always - Appx_Package_Signing_Enabled: false - Appx_Bundle_Platforms: x86|x64 - Artifacts_Dir: ${{ github.workspace }}/Artifacts - - - if: github.event_name != 'pull_request' - name: Send SonarCloud results - id: send_sonar_results - env: - GITHUB_TOKEN: ${{ secrets.SONAR_GITHUB_TOKEN }} - SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - shell: powershell - run: .\.sonar\scanner\dotnet-sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN }}" - - - name: Upload build artifacts - id: upload_artifacts - uses: actions/upload-artifact@v1 - with: - name: Build artifacts - path: Artifacts/ - - cd: - # "This job will execute when the workflow is triggered on a 'push event', the target branch is 'master' and the commit is intended to be a release." - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && needs.ci.outputs.new_version != '' - needs: ci - runs-on: windows-latest - env: - NEW_VERSION: ${{ needs.ci.outputs.new_version }} - NEW_TAG: v${{ needs.ci.outputs.new_version }} - steps: - - name: Checkout repository - id: checkout_repo - uses: actions/checkout@v2 - - - name: Download and extract MSIX package - id: dl_package_artifact - uses: actions/download-artifact@v2 - with: - name: Build artifacts - path: Artifacts/ - - - name: Create and publish release - id: create_release - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{ env.NEW_TAG }} - release_name: Notepads ${{ env.NEW_TAG }} - - - name: Upload msixbundle as release asset - id: upload_notepads_zip - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: Artifacts/Notepads_${{ env.NEW_VERSION }}_Test/Notepads_${{ env.NEW_VERSION }}_x86_x64.msixbundle - asset_name: Notepads_${{ env.NEW_VERSION }}_x86_x64.msixbundle - asset_content_type: application/zip + # - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && steps.get_assembly_version.outputs.version_tag != steps.get_latest_tag.outputs.tag && matrix.configuration == 'Release' + # name: Add new tag to repo + # id: add_new_tag_to_repo + # shell: bash + # run: | + # git config --global user.name $GIT_USER_NAME + # git config --global user.email $GIT_USER_EMAIL + # git tag -a -m "Description for this release" $NEW_VERSION_TAG + # git push --follow-tags + # env: + # GIT_USER_NAME: ${{ secrets.GIT_USER_NAME }} + # GIT_USER_EMAIL: ${{ secrets.GIT_USER_EMAIL }} + # NEW_VERSION_TAG: ${{ steps.get_assembly_version.outputs.version_tag }} + + # - if: github.event_name != 'pull_request' + # name: Cache SonarCloud packages + # id: cache_sonar_packages + # uses: actions/cache@v2 + # with: + # path: ~\sonar\cache + # key: ${{ runner.os }}-sonar + # restore-keys: ${{ runner.os }}-sonar + + # - if: github.event_name != 'pull_request' + # name: Cache SonarCloud scanner + # id: cache_sonar_scanner + # uses: actions/cache@v2 + # with: + # path: .\.sonar\scanner + # key: ${{ runner.os }}-sonar-scanner + # restore-keys: ${{ runner.os }}-sonar-scanner + + # - if: github.event_name != 'pull_request' && steps.cache_sonar_scanner.outputs.cache-hit != 'true' + # name: Install SonarCloud scanner + # id: install_sonar_scanner + # shell: powershell + # run: | + # New-Item -Path .\.sonar\scanner -ItemType Directory + # dotnet tool update dotnet-sonarscanner --tool-path .\.sonar\scanner + + # - if: github.event_name != 'pull_request' + # name: Lowercase string generator + # id: lowercase_string_gen + # shell: powershell + # run: | + # $LOWERCASE_OWNER = "${{ github.repository_owner }}".ToLower() + # echo "::set-output name=owner_name::$LOWERCASE_OWNER" + + # - if: github.event_name != 'pull_request' + # name: Initialize SonarCloud scanner + # id: init_sonar_scanner + # env: + # SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + # shell: powershell + # run: .\.sonar\scanner\dotnet-sonarscanner begin /k:"${{ github.repository_owner }}_${{ github.event.repository.name }}" /o:"${{ steps.lowercase_string_gen.outputs.owner_name }}" /d:sonar.login="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" + + # - name: Restore the application + # id: restore_application + # run: | + # msbuild $env:Solution_Name ` + # /t:Restore ` + # /p:Configuration=$env:Configuration + # env: + # Configuration: ${{ matrix.configuration }} + + # - name: Build and generate bundles + # id: build_app + # run: | + # msbuild $env:Solution_Name ` + # /p:Platform=$env:Platform ` + # /p:Configuration=$env:Configuration ` + # /p:UapAppxPackageBuildMode=$env:Uap_Appx_Package_Build_Mode ` + # /p:AppxBundle=$env:Appx_Bundle ` + # /p:AppxPackageSigningEnabled=$env:Appx_Package_Signing_Enabled ` + # /p:AppxBundlePlatforms=$env:Appx_Bundle_Platforms ` + # /p:AppxPackageDir=$env:Artifacts_Dir + # env: + # Platform: x64 + # Configuration: ${{ matrix.configuration }} + # Uap_Appx_Package_Build_Mode: StoreUpload + # Appx_Bundle: Always + # Appx_Package_Signing_Enabled: false + # Appx_Bundle_Platforms: x86|x64 + # Artifacts_Dir: ${{ github.workspace }}/Artifacts + + # - if: github.event_name != 'pull_request' + # name: Send SonarCloud results + # id: send_sonar_results + # env: + # GITHUB_TOKEN: ${{ secrets.SONAR_GITHUB_TOKEN }} + # SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + # shell: powershell + # run: .\.sonar\scanner\dotnet-sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN }}" + + # - name: Upload build artifacts + # id: upload_artifacts + # uses: actions/upload-artifact@v1 + # with: + # name: Build artifacts + # path: Artifacts/ + + # cd: + # # "This job will execute when the workflow is triggered on a 'push event', the target branch is 'master' and the commit is intended to be a release." + # if: github.event_name == 'push' && github.ref == 'refs/heads/master' && needs.ci.outputs.new_version != '' + # needs: ci + # runs-on: windows-latest + # env: + # NEW_VERSION: ${{ needs.ci.outputs.new_version }} + # NEW_TAG: v${{ needs.ci.outputs.new_version }} + # steps: + # - name: Checkout repository + # id: checkout_repo + # uses: actions/checkout@v2 + + # - name: Download and extract MSIX package + # id: dl_package_artifact + # uses: actions/download-artifact@v2 + # with: + # name: Build artifacts + # path: Artifacts/ + + # - name: Create and publish release + # id: create_release + # uses: actions/create-release@v1 + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # with: + # tag_name: ${{ env.NEW_TAG }} + # release_name: Notepads ${{ env.NEW_TAG }} + + # - name: Upload msixbundle as release asset + # id: upload_notepads_zip + # uses: actions/upload-release-asset@v1 + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # with: + # upload_url: ${{ steps.create_release.outputs.upload_url }} + # asset_path: Artifacts/Notepads_${{ env.NEW_VERSION }}_Test/Notepads_${{ env.NEW_VERSION }}_x86_x64.msixbundle + # asset_name: Notepads_${{ env.NEW_VERSION }}_x86_x64.msixbundle + # asset_content_type: application/zip # Built with ❤ by [Pipeline Foundation](https://pipeline.foundation) \ No newline at end of file From 7047afbdbc61cccdde89286dcb2f1bea1b116370 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 15 Feb 2021 14:23:57 +0200 Subject: [PATCH 131/194] test xPath --- .github/workflows/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ec59c5625..a5f5b515f 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -35,6 +35,7 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} - run: xpath + shell: bash # - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.configuration == 'Release' # name: Get assembly version from appxmanifest From 4fa5b851c9fdb12e30f922f9f75f00e05eb6f586 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 15 Feb 2021 14:26:50 +0200 Subject: [PATCH 132/194] test xPath --- .github/workflows/main.yml | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a5f5b515f..b0bf1b51c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -34,19 +34,22 @@ jobs: fetch-depth: 50 token: ${{ secrets.GITHUB_TOKEN }} - - run: xpath + - name: Install xPath shell: bash + run: sudo apt install libxml-xpath-perl - # - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.configuration == 'Release' - # name: Get assembly version from appxmanifest - # id: get_assembly_version - # shell: bash - # run: | - # cd src/Notepads/ - # VERSION_STR=$(grep -oE ' \Version\=\"([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)\"' Package.appxmanifest) - # VERSION=$(echo "$VERSION_STR" | grep -oE "([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)") - # echo "::set-output name=version_num::$(echo $VERSION)" - # echo "::set-output name=version_tag::$(echo v"$VERSION")" + # - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.configuration == 'Release' + - name: Get assembly version from appxmanifest + id: get_assembly_version + shell: bash + run: | + cd src/Notepads/ + VERSION_STR=$(xpath -q -e '//Package/Identity/@Version' Package.appxmanifest) + VERSION=$(echo "$VERSION_STR" | grep -oE "([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)") + echo "::set-output name=version_num::$(echo $VERSION)" + echo "::set-output name=version_tag::$(echo v"$VERSION")" + + - run: echo "${{ steps.get_assembly_version.outputs.version_tag }}" # - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.configuration == 'Release' # name: Get latest tag From 96cd3bd952a583ea87b771581438f29c7edecd31 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 15 Feb 2021 14:28:03 +0200 Subject: [PATCH 133/194] test xPath --- .github/workflows/main.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b0bf1b51c..84fa93598 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -4,7 +4,7 @@ on: [push, pull_request, workflow_dispatch] jobs: ci: - runs-on: windows-latest + runs-on: ubuntu-latest strategy: matrix: configuration: [ Debug, Release ] @@ -35,7 +35,6 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} - name: Install xPath - shell: bash run: sudo apt install libxml-xpath-perl # - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.configuration == 'Release' From ea6d595544b15fc370aaa1a5efa98a9bb4213194 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 15 Feb 2021 14:32:56 +0200 Subject: [PATCH 134/194] test Select-Xml --- .github/workflows/main.yml | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 84fa93598..9adcd16c2 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -4,7 +4,7 @@ on: [push, pull_request, workflow_dispatch] jobs: ci: - runs-on: ubuntu-latest + runs-on: windows-latest strategy: matrix: configuration: [ Debug, Release ] @@ -34,19 +34,23 @@ jobs: fetch-depth: 50 token: ${{ secrets.GITHUB_TOKEN }} - - name: Install xPath - run: sudo apt install libxml-xpath-perl - # - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.configuration == 'Release' - - name: Get assembly version from appxmanifest - id: get_assembly_version - shell: bash + # name: Get assembly version from appxmanifest + # id: get_assembly_version + # shell: bash + # run: | + # cd src/Notepads/ + # VERSION_STR=$(xpath -q -e '//Package/Identity/@Version' Package.appxmanifest) + # VERSION=$(echo "$VERSION_STR" | grep -oE "([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)") + # echo "::set-output name=version_num::$(echo $VERSION)" + # echo "::set-output name=version_tag::$(echo v"$VERSION")" + + - name: Get version + shell: powershell run: | - cd src/Notepads/ - VERSION_STR=$(xpath -q -e '//Package/Identity/@Version' Package.appxmanifest) - VERSION=$(echo "$VERSION_STR" | grep -oE "([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)") - echo "::set-output name=version_num::$(echo $VERSION)" - echo "::set-output name=version_tag::$(echo v"$VERSION")" + Select-Xml ` + '${{ github.workspace }}/src/Notepads/Package.appxmanifest' ` + '//Identity/@Version' - run: echo "${{ steps.get_assembly_version.outputs.version_tag }}" From abe6c4cc58d0c6828d6700d00c24cb972778b2be Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 15 Feb 2021 14:34:56 +0200 Subject: [PATCH 135/194] test Select-Xml --- .github/workflows/main.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 9adcd16c2..c250f69a2 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -48,11 +48,7 @@ jobs: - name: Get version shell: powershell run: | - Select-Xml ` - '${{ github.workspace }}/src/Notepads/Package.appxmanifest' ` - '//Identity/@Version' - - - run: echo "${{ steps.get_assembly_version.outputs.version_tag }}" + Select-Xml -Xml '${{ github.workspace }}\src\Notepads\Package.appxmanifest' -XPath '//Identity/@Version' # - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.configuration == 'Release' # name: Get latest tag From 31696beab1b1a72b90739d620634721f774b6272 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 15 Feb 2021 14:36:10 +0200 Subject: [PATCH 136/194] test Select-Xml --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c250f69a2..a711ec093 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -48,7 +48,7 @@ jobs: - name: Get version shell: powershell run: | - Select-Xml -Xml '${{ github.workspace }}\src\Notepads\Package.appxmanifest' -XPath '//Identity/@Version' + Select-Xml -Path '${{ github.workspace }}\src\Notepads\Package.appxmanifest' -XPath '//Identity/@Version' # - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.configuration == 'Release' # name: Get latest tag From 8c49dbbbcb216828688db55b1cf3d88730aca339 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 15 Feb 2021 14:42:37 +0200 Subject: [PATCH 137/194] test Select-Xml --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a711ec093..d0e5343bc 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -48,7 +48,7 @@ jobs: - name: Get version shell: powershell run: | - Select-Xml -Path '${{ github.workspace }}\src\Notepads\Package.appxmanifest' -XPath '//Identity/@Version' + Select-Xml -Path '${{ github.workspace }}\src\Notepads\Package.appxmanifest' -XPath '//Package/Identity/@Version' # - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.configuration == 'Release' # name: Get latest tag From 86ccc9d13093761da08b093745d3d3b0efc98f1e Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 15 Feb 2021 15:26:54 +0200 Subject: [PATCH 138/194] test --- .github/workflows/main.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d0e5343bc..d3c5a8901 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -48,7 +48,11 @@ jobs: - name: Get version shell: powershell run: | - Select-Xml -Path '${{ github.workspace }}\src\Notepads\Package.appxmanifest' -XPath '//Package/Identity/@Version' + cd src/Notepads/ + $xml = [xml](Get-Content Package.appxmanifest) + $NUMM = $xml.Package.Identity | Select Version + $NUMM -match "([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)" + echo $matches[0] # - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.configuration == 'Release' # name: Get latest tag From 1510768497ee2292d1ed87b7b8e8121ac9fad18f Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 15 Feb 2021 15:31:29 +0200 Subject: [PATCH 139/194] test --- .github/workflows/main.yml | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d3c5a8901..cf71b6cf4 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -35,24 +35,22 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} # - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.configuration == 'Release' - # name: Get assembly version from appxmanifest - # id: get_assembly_version - # shell: bash - # run: | - # cd src/Notepads/ - # VERSION_STR=$(xpath -q -e '//Package/Identity/@Version' Package.appxmanifest) - # VERSION=$(echo "$VERSION_STR" | grep -oE "([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)") - # echo "::set-output name=version_num::$(echo $VERSION)" - # echo "::set-output name=version_tag::$(echo v"$VERSION")" - - - name: Get version - shell: powershell + - name: Get assembly version from appxmanifest + id: get_assembly_version + shell: bash run: | cd src/Notepads/ $xml = [xml](Get-Content Package.appxmanifest) - $NUMM = $xml.Package.Identity | Select Version - $NUMM -match "([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)" - echo $matches[0] + $ASSEMBLY_VERSION = $xml.Package.Identity | select Version + $ASSEMBLY_VERSION -match "([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)" + $ASSEMBLY_VERSION_NUMBER = $matches[0] + echo "::set-output name=version_num::$(echo $ASSEMBLY_VERSION_NUMBER)" + echo "::set-output name=version_tag::$(echo v"$ASSEMBLY_VERSION_NUMBER")" + + - name: Echo variables + run: | + echo "${{ steps.get_assembly_version.outputs.version_num }}" + echo "${{ steps.get_assembly_version.outputs.version_tag }}" # - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.configuration == 'Release' # name: Get latest tag From d2f6547d0a29b9ac69dc05681c2c69af9dac0b09 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 15 Feb 2021 15:32:43 +0200 Subject: [PATCH 140/194] test --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index cf71b6cf4..489a36c1d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -37,7 +37,7 @@ jobs: # - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.configuration == 'Release' - name: Get assembly version from appxmanifest id: get_assembly_version - shell: bash + shell: powershell run: | cd src/Notepads/ $xml = [xml](Get-Content Package.appxmanifest) From 677f7c1743e4ab6e3b1aed863abe2a5b22bf5966 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 15 Feb 2021 15:42:33 +0200 Subject: [PATCH 141/194] test create release with powershell --- .github/workflows/main.yml | 326 ++++++++++++++++++------------------- 1 file changed, 162 insertions(+), 164 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 489a36c1d..d1b79915d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -13,19 +13,19 @@ jobs: env: Solution_Name: src\Notepads.sln steps: - # - name: Set up JDK 11 - # id: Setup_JDK - # uses: actions/setup-java@v1 - # with: - # java-version: 1.11 + - name: Set up JDK 11 + id: Setup_JDK + uses: actions/setup-java@v1 + with: + java-version: 1.11 - # - name: Install .NET Core - # id: install_dotnet_dependencies - # uses: actions/setup-dotnet@v1 + - name: Install .NET Core + id: install_dotnet_dependencies + uses: actions/setup-dotnet@v1 - # - name: Setup MSBuild - # id: setup_msbuild - # uses: microsoft/setup-msbuild@v1 + - name: Setup MSBuild + id: setup_msbuild + uses: microsoft/setup-msbuild@v1 - name: Checkout repository id: checkout_repo @@ -35,6 +35,7 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} # - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.configuration == 'Release' + - if: matrix.configuration == 'Release' - name: Get assembly version from appxmanifest id: get_assembly_version shell: powershell @@ -47,160 +48,157 @@ jobs: echo "::set-output name=version_num::$(echo $ASSEMBLY_VERSION_NUMBER)" echo "::set-output name=version_tag::$(echo v"$ASSEMBLY_VERSION_NUMBER")" - - name: Echo variables + # - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.configuration == 'Release' + - if: matrix.configuration == 'Release' + name: Get latest tag + id: get_latest_tag + shell: powershell run: | - echo "${{ steps.get_assembly_version.outputs.version_num }}" - echo "${{ steps.get_assembly_version.outputs.version_tag }}" - - # - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.configuration == 'Release' - # name: Get latest tag - # id: get_latest_tag - # shell: bash - # run: | - # LATEST_TAG=$(git -c 'versionsort.suffix=-' ls-remote --exit-code --refs --sort='version:refname' --tags "https://github.com/$GIT_URL.git" '*.*.*' | tail --lines=1 | cut --delimiter='/' --fields=3) - # echo "::set-output name=tag::$(echo $LATEST_TAG)" - # env: - # GIT_URL: ${{ github.repository }} + $LATEST_TAG = git -c 'versionsort.suffix=-' ls-remote --exit-code --refs --sort='version:refname' --tags "https://github.com/$env:GIT_URL.git" '*.*.*' | tail --lines=1 | cut --delimiter='/' --fields=3 + echo "::set-output name=tag::$(echo $LATEST_TAG)" + env: + GIT_URL: ${{ github.repository }} - # - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && steps.get_assembly_version.outputs.version_tag != steps.get_latest_tag.outputs.tag && matrix.configuration == 'Release' - # name: Add new tag to repo - # id: add_new_tag_to_repo - # shell: bash - # run: | - # git config --global user.name $GIT_USER_NAME - # git config --global user.email $GIT_USER_EMAIL - # git tag -a -m "Description for this release" $NEW_VERSION_TAG - # git push --follow-tags - # env: - # GIT_USER_NAME: ${{ secrets.GIT_USER_NAME }} - # GIT_USER_EMAIL: ${{ secrets.GIT_USER_EMAIL }} - # NEW_VERSION_TAG: ${{ steps.get_assembly_version.outputs.version_tag }} - - # - if: github.event_name != 'pull_request' - # name: Cache SonarCloud packages - # id: cache_sonar_packages - # uses: actions/cache@v2 - # with: - # path: ~\sonar\cache - # key: ${{ runner.os }}-sonar - # restore-keys: ${{ runner.os }}-sonar - - # - if: github.event_name != 'pull_request' - # name: Cache SonarCloud scanner - # id: cache_sonar_scanner - # uses: actions/cache@v2 - # with: - # path: .\.sonar\scanner - # key: ${{ runner.os }}-sonar-scanner - # restore-keys: ${{ runner.os }}-sonar-scanner - - # - if: github.event_name != 'pull_request' && steps.cache_sonar_scanner.outputs.cache-hit != 'true' - # name: Install SonarCloud scanner - # id: install_sonar_scanner - # shell: powershell - # run: | - # New-Item -Path .\.sonar\scanner -ItemType Directory - # dotnet tool update dotnet-sonarscanner --tool-path .\.sonar\scanner - - # - if: github.event_name != 'pull_request' - # name: Lowercase string generator - # id: lowercase_string_gen - # shell: powershell - # run: | - # $LOWERCASE_OWNER = "${{ github.repository_owner }}".ToLower() - # echo "::set-output name=owner_name::$LOWERCASE_OWNER" - - # - if: github.event_name != 'pull_request' - # name: Initialize SonarCloud scanner - # id: init_sonar_scanner - # env: - # SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - # shell: powershell - # run: .\.sonar\scanner\dotnet-sonarscanner begin /k:"${{ github.repository_owner }}_${{ github.event.repository.name }}" /o:"${{ steps.lowercase_string_gen.outputs.owner_name }}" /d:sonar.login="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" - - # - name: Restore the application - # id: restore_application - # run: | - # msbuild $env:Solution_Name ` - # /t:Restore ` - # /p:Configuration=$env:Configuration - # env: - # Configuration: ${{ matrix.configuration }} - - # - name: Build and generate bundles - # id: build_app - # run: | - # msbuild $env:Solution_Name ` - # /p:Platform=$env:Platform ` - # /p:Configuration=$env:Configuration ` - # /p:UapAppxPackageBuildMode=$env:Uap_Appx_Package_Build_Mode ` - # /p:AppxBundle=$env:Appx_Bundle ` - # /p:AppxPackageSigningEnabled=$env:Appx_Package_Signing_Enabled ` - # /p:AppxBundlePlatforms=$env:Appx_Bundle_Platforms ` - # /p:AppxPackageDir=$env:Artifacts_Dir - # env: - # Platform: x64 - # Configuration: ${{ matrix.configuration }} - # Uap_Appx_Package_Build_Mode: StoreUpload - # Appx_Bundle: Always - # Appx_Package_Signing_Enabled: false - # Appx_Bundle_Platforms: x86|x64 - # Artifacts_Dir: ${{ github.workspace }}/Artifacts - - # - if: github.event_name != 'pull_request' - # name: Send SonarCloud results - # id: send_sonar_results - # env: - # GITHUB_TOKEN: ${{ secrets.SONAR_GITHUB_TOKEN }} - # SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - # shell: powershell - # run: .\.sonar\scanner\dotnet-sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN }}" - - # - name: Upload build artifacts - # id: upload_artifacts - # uses: actions/upload-artifact@v1 - # with: - # name: Build artifacts - # path: Artifacts/ - - # cd: - # # "This job will execute when the workflow is triggered on a 'push event', the target branch is 'master' and the commit is intended to be a release." - # if: github.event_name == 'push' && github.ref == 'refs/heads/master' && needs.ci.outputs.new_version != '' - # needs: ci - # runs-on: windows-latest - # env: - # NEW_VERSION: ${{ needs.ci.outputs.new_version }} - # NEW_TAG: v${{ needs.ci.outputs.new_version }} - # steps: - # - name: Checkout repository - # id: checkout_repo - # uses: actions/checkout@v2 - - # - name: Download and extract MSIX package - # id: dl_package_artifact - # uses: actions/download-artifact@v2 - # with: - # name: Build artifacts - # path: Artifacts/ - - # - name: Create and publish release - # id: create_release - # uses: actions/create-release@v1 - # env: - # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - # with: - # tag_name: ${{ env.NEW_TAG }} - # release_name: Notepads ${{ env.NEW_TAG }} - - # - name: Upload msixbundle as release asset - # id: upload_notepads_zip - # uses: actions/upload-release-asset@v1 - # env: - # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - # with: - # upload_url: ${{ steps.create_release.outputs.upload_url }} - # asset_path: Artifacts/Notepads_${{ env.NEW_VERSION }}_Test/Notepads_${{ env.NEW_VERSION }}_x86_x64.msixbundle - # asset_name: Notepads_${{ env.NEW_VERSION }}_x86_x64.msixbundle - # asset_content_type: application/zip + # - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && steps.get_assembly_version.outputs.version_tag != steps.get_latest_tag.outputs.tag && matrix.configuration == 'Release' + - if: steps.get_assembly_version.outputs.version_tag != steps.get_latest_tag.outputs.tag && matrix.configuration == 'Release' + name: Add new tag to repo + id: add_new_tag_to_repo + shell: bash + run: | + git config --global user.name $GIT_USER_NAME + git config --global user.email $GIT_USER_EMAIL + git tag -a -m "Description for this release" $NEW_VERSION_TAG + git push --follow-tags + env: + GIT_USER_NAME: ${{ secrets.GIT_USER_NAME }} + GIT_USER_EMAIL: ${{ secrets.GIT_USER_EMAIL }} + NEW_VERSION_TAG: ${{ steps.get_assembly_version.outputs.version_tag }} + + - if: github.event_name != 'pull_request' + name: Cache SonarCloud packages + id: cache_sonar_packages + uses: actions/cache@v2 + with: + path: ~\sonar\cache + key: ${{ runner.os }}-sonar + restore-keys: ${{ runner.os }}-sonar + + - if: github.event_name != 'pull_request' + name: Cache SonarCloud scanner + id: cache_sonar_scanner + uses: actions/cache@v2 + with: + path: .\.sonar\scanner + key: ${{ runner.os }}-sonar-scanner + restore-keys: ${{ runner.os }}-sonar-scanner + + - if: github.event_name != 'pull_request' && steps.cache_sonar_scanner.outputs.cache-hit != 'true' + name: Install SonarCloud scanner + id: install_sonar_scanner + shell: powershell + run: | + New-Item -Path .\.sonar\scanner -ItemType Directory + dotnet tool update dotnet-sonarscanner --tool-path .\.sonar\scanner + + - if: github.event_name != 'pull_request' + name: Lowercase string generator + id: lowercase_string_gen + shell: powershell + run: | + $LOWERCASE_OWNER = "${{ github.repository_owner }}".ToLower() + echo "::set-output name=owner_name::$LOWERCASE_OWNER" + + - if: github.event_name != 'pull_request' + name: Initialize SonarCloud scanner + id: init_sonar_scanner + env: + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + shell: powershell + run: .\.sonar\scanner\dotnet-sonarscanner begin /k:"${{ github.repository_owner }}_${{ github.event.repository.name }}" /o:"${{ steps.lowercase_string_gen.outputs.owner_name }}" /d:sonar.login="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" + + - name: Restore the application + id: restore_application + run: | + msbuild $env:Solution_Name ` + /t:Restore ` + /p:Configuration=$env:Configuration + env: + Configuration: ${{ matrix.configuration }} + + - name: Build and generate bundles + id: build_app + run: | + msbuild $env:Solution_Name ` + /p:Platform=$env:Platform ` + /p:Configuration=$env:Configuration ` + /p:UapAppxPackageBuildMode=$env:Uap_Appx_Package_Build_Mode ` + /p:AppxBundle=$env:Appx_Bundle ` + /p:AppxPackageSigningEnabled=$env:Appx_Package_Signing_Enabled ` + /p:AppxBundlePlatforms=$env:Appx_Bundle_Platforms ` + /p:AppxPackageDir=$env:Artifacts_Dir + env: + Platform: x64 + Configuration: ${{ matrix.configuration }} + Uap_Appx_Package_Build_Mode: StoreUpload + Appx_Bundle: Always + Appx_Package_Signing_Enabled: false + Appx_Bundle_Platforms: x86|x64 + Artifacts_Dir: ${{ github.workspace }}/Artifacts + + - if: github.event_name != 'pull_request' + name: Send SonarCloud results + id: send_sonar_results + env: + GITHUB_TOKEN: ${{ secrets.SONAR_GITHUB_TOKEN }} + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + shell: powershell + run: .\.sonar\scanner\dotnet-sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN }}" + + - name: Upload build artifacts + id: upload_artifacts + uses: actions/upload-artifact@v1 + with: + name: Build artifacts + path: Artifacts/ + + cd: + # "This job will execute when the workflow is triggered on a 'push event', the target branch is 'master' and the commit is intended to be a release." + if: github.event_name == 'push' && github.ref == 'refs/heads/master' && needs.ci.outputs.new_version != '' + needs: ci + runs-on: windows-latest + env: + NEW_VERSION: ${{ needs.ci.outputs.new_version }} + NEW_TAG: v${{ needs.ci.outputs.new_version }} + steps: + - name: Checkout repository + id: checkout_repo + uses: actions/checkout@v2 + + - name: Download and extract MSIX package + id: dl_package_artifact + uses: actions/download-artifact@v2 + with: + name: Build artifacts + path: Artifacts/ + + - name: Create and publish release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ env.NEW_TAG }} + release_name: Notepads ${{ env.NEW_TAG }} + + - name: Upload msixbundle as release asset + id: upload_notepads_zip + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: Artifacts/Notepads_${{ env.NEW_VERSION }}_Test/Notepads_${{ env.NEW_VERSION }}_x86_x64.msixbundle + asset_name: Notepads_${{ env.NEW_VERSION }}_x86_x64.msixbundle + asset_content_type: application/zip # Built with ❤ by [Pipeline Foundation](https://pipeline.foundation) \ No newline at end of file From 04ce8edc19b1a84ae4a48c3880dddf3bc75be463 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 15 Feb 2021 15:44:09 +0200 Subject: [PATCH 142/194] test create release with powershell --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d1b79915d..1d45ac4d9 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -36,7 +36,7 @@ jobs: # - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.configuration == 'Release' - if: matrix.configuration == 'Release' - - name: Get assembly version from appxmanifest + name: Get assembly version from appxmanifest id: get_assembly_version shell: powershell run: | From 249abe7dd492a5d91e219822de6453277c8ff921 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 15 Feb 2021 15:48:36 +0200 Subject: [PATCH 143/194] create release with Powershell --- .github/workflows/main.yml | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 1d45ac4d9..703b0d3da 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -34,8 +34,7 @@ jobs: fetch-depth: 50 token: ${{ secrets.GITHUB_TOKEN }} - # - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.configuration == 'Release' - - if: matrix.configuration == 'Release' + - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.configuration == 'Release' name: Get assembly version from appxmanifest id: get_assembly_version shell: powershell @@ -48,8 +47,7 @@ jobs: echo "::set-output name=version_num::$(echo $ASSEMBLY_VERSION_NUMBER)" echo "::set-output name=version_tag::$(echo v"$ASSEMBLY_VERSION_NUMBER")" - # - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.configuration == 'Release' - - if: matrix.configuration == 'Release' + - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.configuration == 'Release' name: Get latest tag id: get_latest_tag shell: powershell @@ -59,8 +57,7 @@ jobs: env: GIT_URL: ${{ github.repository }} - # - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && steps.get_assembly_version.outputs.version_tag != steps.get_latest_tag.outputs.tag && matrix.configuration == 'Release' - - if: steps.get_assembly_version.outputs.version_tag != steps.get_latest_tag.outputs.tag && matrix.configuration == 'Release' + - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && steps.get_assembly_version.outputs.version_tag != steps.get_latest_tag.outputs.tag && matrix.configuration == 'Release' name: Add new tag to repo id: add_new_tag_to_repo shell: bash From 2745b16039a9535635cddb42cfb1cad49eaf9ff9 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 15 Feb 2021 15:52:32 +0200 Subject: [PATCH 144/194] turn push tag step to powershell --- .github/workflows/main.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 703b0d3da..16bc1e0f9 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -60,11 +60,11 @@ jobs: - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && steps.get_assembly_version.outputs.version_tag != steps.get_latest_tag.outputs.tag && matrix.configuration == 'Release' name: Add new tag to repo id: add_new_tag_to_repo - shell: bash + shell: powershell run: | - git config --global user.name $GIT_USER_NAME - git config --global user.email $GIT_USER_EMAIL - git tag -a -m "Description for this release" $NEW_VERSION_TAG + git config --global user.name $env:GIT_USER_NAME + git config --global user.email $env:GIT_USER_EMAIL + git tag -a -m "Description for this release" $env:NEW_VERSION_TAG git push --follow-tags env: GIT_USER_NAME: ${{ secrets.GIT_USER_NAME }} From 1ccfd3851a17a4bb919b0819c2232ccc09fb65c9 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Tue, 16 Feb 2021 12:17:05 +0200 Subject: [PATCH 145/194] add the discussed improvements for the release sequence --- .github/workflows/main.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 16bc1e0f9..162df24a5 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -10,6 +10,8 @@ jobs: configuration: [ Debug, Release ] outputs: new_version: ${{ steps.get_assembly_version.outputs.version_num }} + new_version_tag: ${{ steps.get_assembly_version.outputs.version_tag }} + latest_tag: ${{ steps.get_latest_tag.outputs.tag }} env: Solution_Name: src\Notepads.sln steps: @@ -41,9 +43,7 @@ jobs: run: | cd src/Notepads/ $xml = [xml](Get-Content Package.appxmanifest) - $ASSEMBLY_VERSION = $xml.Package.Identity | select Version - $ASSEMBLY_VERSION -match "([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)" - $ASSEMBLY_VERSION_NUMBER = $matches[0] + $ASSEMBLY_VERSION_NUMBER = $xml.Package.Identity | Select -ExpandProperty Version echo "::set-output name=version_num::$(echo $ASSEMBLY_VERSION_NUMBER)" echo "::set-output name=version_tag::$(echo v"$ASSEMBLY_VERSION_NUMBER")" @@ -64,7 +64,7 @@ jobs: run: | git config --global user.name $env:GIT_USER_NAME git config --global user.email $env:GIT_USER_EMAIL - git tag -a -m "Description for this release" $env:NEW_VERSION_TAG + git tag -a -m "New version" $env:NEW_VERSION_TAG git push --follow-tags env: GIT_USER_NAME: ${{ secrets.GIT_USER_NAME }} @@ -160,12 +160,12 @@ jobs: cd: # "This job will execute when the workflow is triggered on a 'push event', the target branch is 'master' and the commit is intended to be a release." - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && needs.ci.outputs.new_version != '' + if: github.event_name == 'push' && github.ref == 'refs/heads/master' && needs.ci.outputs.new_version_tag != needs.ci.outputs.latest_tag needs: ci runs-on: windows-latest env: NEW_VERSION: ${{ needs.ci.outputs.new_version }} - NEW_TAG: v${{ needs.ci.outputs.new_version }} + NEW_TAG: ${{ needs.ci.outputs.new_version_tag }} steps: - name: Checkout repository id: checkout_repo From 700fec9dd8968095440277a8bec89ce62fb6ebbe Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Wed, 17 Feb 2021 15:43:53 +0200 Subject: [PATCH 146/194] add certification signing from Base64 to package build process --- .github/workflows/main.yml | 43 +++++++++++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 10 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 162df24a5..320c9cd79 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -108,13 +108,31 @@ jobs: - if: github.event_name != 'pull_request' name: Initialize SonarCloud scanner id: init_sonar_scanner + shell: powershell + run: | + .\.sonar\scanner\dotnet-sonarscanner begin ` + /k:"${{ github.repository_owner }}_${{ github.event.repository.name }}" ` + /o:"${{ steps.lowercase_string_gen.outputs.owner_name }}" ` + /d:sonar.login="${{ secrets.SONAR_TOKEN }}" ` + /d:sonar.host.url="https://sonarcloud.io" env: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + + - name: Create PFX certificate for AppxBundle + id: create_pfx_cert shell: powershell - run: .\.sonar\scanner\dotnet-sonarscanner begin /k:"${{ github.repository_owner }}_${{ github.event.repository.name }}" /o:"${{ steps.lowercase_string_gen.outputs.owner_name }}" /d:sonar.login="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" + run: | + $BASE64_STR = $env:BASE64_STR + $TARGET_FILE = "$env:DEFAULT_DIR\cert.pfx" + $FROM_BASE64_STR = [Convert]::FromBase64String($BASE64_STR) + [IO.File]::WriteAllBytes($TARGET_FILE, $FROM_BASE64_STR) + env: + BASE64_STR: ${{ secrets.PFX_TO_BASE64 }} + DEFAULT_DIR: ${{ github.workspace }} - name: Restore the application id: restore_application + shell: powershell run: | msbuild $env:Solution_Name ` /t:Restore ` @@ -124,6 +142,7 @@ jobs: - name: Build and generate bundles id: build_app + shell: powershell run: | msbuild $env:Solution_Name ` /p:Platform=$env:Platform ` @@ -132,24 +151,28 @@ jobs: /p:AppxBundle=$env:Appx_Bundle ` /p:AppxPackageSigningEnabled=$env:Appx_Package_Signing_Enabled ` /p:AppxBundlePlatforms=$env:Appx_Bundle_Platforms ` - /p:AppxPackageDir=$env:Artifacts_Dir + /p:AppxPackageDir=$env:Artifacts_Dir ` + /p:PackageCertificateKeyFile=$env:PackageCertificateKeyFile ` + /p:PackageCertificatePassword=$env:PackageCertificatePassword env: Platform: x64 Configuration: ${{ matrix.configuration }} Uap_Appx_Package_Build_Mode: StoreUpload Appx_Bundle: Always - Appx_Package_Signing_Enabled: false + Appx_Package_Signing_Enabled: true Appx_Bundle_Platforms: x86|x64 - Artifacts_Dir: ${{ github.workspace }}/Artifacts + Artifacts_Dir: ${{ github.workspace }}\Artifacts + PackageCertificateKeyFile: ${{ github.workspace }}\cert.pfx + PackageCertificatePassword: ${{ secrets.PACKAGE_CERTIFICATE_PWD }} - if: github.event_name != 'pull_request' name: Send SonarCloud results id: send_sonar_results + shell: powershell + run: .\.sonar\scanner\dotnet-sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN }}" env: GITHUB_TOKEN: ${{ secrets.SONAR_GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - shell: powershell - run: .\.sonar\scanner\dotnet-sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN }}" - name: Upload build artifacts id: upload_artifacts @@ -181,21 +204,21 @@ jobs: - name: Create and publish release id: create_release uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ env.NEW_TAG }} release_name: Notepads ${{ env.NEW_TAG }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Upload msixbundle as release asset id: upload_notepads_zip uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: Artifacts/Notepads_${{ env.NEW_VERSION }}_Test/Notepads_${{ env.NEW_VERSION }}_x86_x64.msixbundle asset_name: Notepads_${{ env.NEW_VERSION }}_x86_x64.msixbundle asset_content_type: application/zip + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Built with ❤ by [Pipeline Foundation](https://pipeline.foundation) \ No newline at end of file From e5172c05499f31d3dd80cd35ad68d939ac8b1dac Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Wed, 17 Feb 2021 16:03:36 +0200 Subject: [PATCH 147/194] remove multi-line script for Initialize SonarCloud scanner step --- .github/workflows/main.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 320c9cd79..53447cbe1 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -110,11 +110,7 @@ jobs: id: init_sonar_scanner shell: powershell run: | - .\.sonar\scanner\dotnet-sonarscanner begin ` - /k:"${{ github.repository_owner }}_${{ github.event.repository.name }}" ` - /o:"${{ steps.lowercase_string_gen.outputs.owner_name }}" ` - /d:sonar.login="${{ secrets.SONAR_TOKEN }}" ` - /d:sonar.host.url="https://sonarcloud.io" + .\.sonar\scanner\dotnet-sonarscanner begin /k:"${{ github.repository_owner }}_${{ github.event.repository.name }}" /o:"${{ steps.lowercase_string_gen.outputs.owner_name }}" /d:sonar.login="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" env: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} From ff5a85d50d68e5a2b4cd46fa962f42fd3d92b70b Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Wed, 17 Feb 2021 16:16:07 +0200 Subject: [PATCH 148/194] test new SonarCloud implementation --- .github/workflows/main.yml | 102 ++++++++++++++++++++----------------- sonar-project.properties | 12 +++++ 2 files changed, 66 insertions(+), 48 deletions(-) create mode 100644 sonar-project.properties diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 53447cbe1..0b038287f 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -71,47 +71,53 @@ jobs: GIT_USER_EMAIL: ${{ secrets.GIT_USER_EMAIL }} NEW_VERSION_TAG: ${{ steps.get_assembly_version.outputs.version_tag }} - - if: github.event_name != 'pull_request' - name: Cache SonarCloud packages - id: cache_sonar_packages - uses: actions/cache@v2 - with: - path: ~\sonar\cache - key: ${{ runner.os }}-sonar - restore-keys: ${{ runner.os }}-sonar - - - if: github.event_name != 'pull_request' - name: Cache SonarCloud scanner - id: cache_sonar_scanner - uses: actions/cache@v2 - with: - path: .\.sonar\scanner - key: ${{ runner.os }}-sonar-scanner - restore-keys: ${{ runner.os }}-sonar-scanner - - - if: github.event_name != 'pull_request' && steps.cache_sonar_scanner.outputs.cache-hit != 'true' - name: Install SonarCloud scanner - id: install_sonar_scanner - shell: powershell - run: | - New-Item -Path .\.sonar\scanner -ItemType Directory - dotnet tool update dotnet-sonarscanner --tool-path .\.sonar\scanner - - - if: github.event_name != 'pull_request' - name: Lowercase string generator - id: lowercase_string_gen - shell: powershell - run: | - $LOWERCASE_OWNER = "${{ github.repository_owner }}".ToLower() - echo "::set-output name=owner_name::$LOWERCASE_OWNER" - - - if: github.event_name != 'pull_request' - name: Initialize SonarCloud scanner - id: init_sonar_scanner - shell: powershell - run: | - .\.sonar\scanner\dotnet-sonarscanner begin /k:"${{ github.repository_owner }}_${{ github.event.repository.name }}" /o:"${{ steps.lowercase_string_gen.outputs.owner_name }}" /d:sonar.login="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" + # - if: github.event_name != 'pull_request' + # name: Cache SonarCloud packages + # id: cache_sonar_packages + # uses: actions/cache@v2 + # with: + # path: ~\sonar\cache + # key: ${{ runner.os }}-sonar + # restore-keys: ${{ runner.os }}-sonar + + # - if: github.event_name != 'pull_request' + # name: Cache SonarCloud scanner + # id: cache_sonar_scanner + # uses: actions/cache@v2 + # with: + # path: .\.sonar\scanner + # key: ${{ runner.os }}-sonar-scanner + # restore-keys: ${{ runner.os }}-sonar-scanner + + # - if: github.event_name != 'pull_request' && steps.cache_sonar_scanner.outputs.cache-hit != 'true' + # name: Install SonarCloud scanner + # id: install_sonar_scanner + # shell: powershell + # run: | + # New-Item -Path .\.sonar\scanner -ItemType Directory + # dotnet tool update dotnet-sonarscanner --tool-path .\.sonar\scanner + + # - if: github.event_name != 'pull_request' + # name: Lowercase string generator + # id: lowercase_string_gen + # shell: powershell + # run: | + # $LOWERCASE_OWNER = "${{ github.repository_owner }}".ToLower() + # echo "::set-output name=owner_name::$LOWERCASE_OWNER" + + # - if: github.event_name != 'pull_request' + # name: Initialize SonarCloud scanner + # id: init_sonar_scanner + # shell: powershell + # run: | + # .\.sonar\scanner\dotnet-sonarscanner begin /k:"${{ github.repository_owner }}_${{ github.event.repository.name }}" /o:"${{ steps.lowercase_string_gen.outputs.owner_name }}" /d:sonar.login="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" + # env: + # SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + + - name: SonarCloud Scan + uses: SonarSource/sonarcloud-github-action@master env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - name: Create PFX certificate for AppxBundle @@ -161,14 +167,14 @@ jobs: PackageCertificateKeyFile: ${{ github.workspace }}\cert.pfx PackageCertificatePassword: ${{ secrets.PACKAGE_CERTIFICATE_PWD }} - - if: github.event_name != 'pull_request' - name: Send SonarCloud results - id: send_sonar_results - shell: powershell - run: .\.sonar\scanner\dotnet-sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN }}" - env: - GITHUB_TOKEN: ${{ secrets.SONAR_GITHUB_TOKEN }} - SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + # - if: github.event_name != 'pull_request' + # name: Send SonarCloud results + # id: send_sonar_results + # shell: powershell + # run: .\.sonar\scanner\dotnet-sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN }}" + # env: + # GITHUB_TOKEN: ${{ secrets.SONAR_GITHUB_TOKEN }} + # SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - name: Upload build artifacts id: upload_artifacts diff --git a/sonar-project.properties b/sonar-project.properties new file mode 100644 index 000000000..8f324cd8f --- /dev/null +++ b/sonar-project.properties @@ -0,0 +1,12 @@ +sonar.projectKey=aleks-ivanov_Notepads +sonar.organization=aleksivanovsinglet + +# This is the name and version displayed in the SonarCloud UI. +#sonar.projectName=Notepads +#sonar.projectVersion=1.0 + +# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows. +#sonar.sources=. + +# Encoding of the source code. Default is default system encoding +#sonar.sourceEncoding=UTF-8 \ No newline at end of file From a6cac60fdb49bd210f89abaca91b14422bcdf37d Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Wed, 17 Feb 2021 16:25:35 +0200 Subject: [PATCH 149/194] test SonarCloud classic implementation --- .github/workflows/main.yml | 111 +++++++++++++++++++------------------ 1 file changed, 57 insertions(+), 54 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0b038287f..85e1ddea9 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -71,54 +71,57 @@ jobs: GIT_USER_EMAIL: ${{ secrets.GIT_USER_EMAIL }} NEW_VERSION_TAG: ${{ steps.get_assembly_version.outputs.version_tag }} - # - if: github.event_name != 'pull_request' - # name: Cache SonarCloud packages - # id: cache_sonar_packages - # uses: actions/cache@v2 - # with: - # path: ~\sonar\cache - # key: ${{ runner.os }}-sonar - # restore-keys: ${{ runner.os }}-sonar - - # - if: github.event_name != 'pull_request' - # name: Cache SonarCloud scanner - # id: cache_sonar_scanner - # uses: actions/cache@v2 - # with: - # path: .\.sonar\scanner - # key: ${{ runner.os }}-sonar-scanner - # restore-keys: ${{ runner.os }}-sonar-scanner - - # - if: github.event_name != 'pull_request' && steps.cache_sonar_scanner.outputs.cache-hit != 'true' - # name: Install SonarCloud scanner - # id: install_sonar_scanner - # shell: powershell - # run: | - # New-Item -Path .\.sonar\scanner -ItemType Directory - # dotnet tool update dotnet-sonarscanner --tool-path .\.sonar\scanner - - # - if: github.event_name != 'pull_request' - # name: Lowercase string generator - # id: lowercase_string_gen - # shell: powershell - # run: | - # $LOWERCASE_OWNER = "${{ github.repository_owner }}".ToLower() - # echo "::set-output name=owner_name::$LOWERCASE_OWNER" - - # - if: github.event_name != 'pull_request' - # name: Initialize SonarCloud scanner - # id: init_sonar_scanner - # shell: powershell - # run: | - # .\.sonar\scanner\dotnet-sonarscanner begin /k:"${{ github.repository_owner }}_${{ github.event.repository.name }}" /o:"${{ steps.lowercase_string_gen.outputs.owner_name }}" /d:sonar.login="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" - # env: - # SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - - - name: SonarCloud Scan - uses: SonarSource/sonarcloud-github-action@master + - if: github.event_name != 'pull_request' + name: Cache SonarCloud packages + id: cache_sonar_packages + uses: actions/cache@v2 + with: + path: ~\sonar\cache + key: ${{ runner.os }}-sonar + restore-keys: ${{ runner.os }}-sonar + + - if: github.event_name != 'pull_request' + name: Cache SonarCloud scanner + id: cache_sonar_scanner + uses: actions/cache@v2 + with: + path: .\.sonar\scanner + key: ${{ runner.os }}-sonar-scanner + restore-keys: ${{ runner.os }}-sonar-scanner + + - if: github.event_name != 'pull_request' && steps.cache_sonar_scanner.outputs.cache-hit != 'true' + name: Install SonarCloud scanner + id: install_sonar_scanner + shell: powershell + run: | + New-Item -Path .\.sonar\scanner -ItemType Directory + dotnet tool update dotnet-sonarscanner --tool-path .\.sonar\scanner + + - if: github.event_name != 'pull_request' + name: Lowercase string generator + id: lowercase_string_gen + shell: powershell + run: | + $LOWERCASE_OWNER = "${{ github.repository_owner }}".ToLower() + echo "::set-output name=owner_name::$LOWERCASE_OWNER" + + - if: github.event_name != 'pull_request' + name: Initialize SonarCloud scanner + id: init_sonar_scanner + shell: powershell + run: | + .\.sonar\scanner\dotnet-sonarscanner begin /k:"${{ github.repository_owner }}_${{ github.event.repository.name }}" /o:"${{ steps.lowercase_string_gen.outputs.owner_name }}" /d:sonar.login="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" + env: + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + + - if: github.event_name != 'pull_request' + name: Initialize SonarCloud scanner + id: init_sonar_scanner env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + shell: powershell + run: .\.sonar\scanner\dotnet-sonarscanner begin /k:"${{ github.repository_owner }}_${{ github.event.repository.name }}" /o:"${{ steps.lowercase_string_gen.outputs.owner_name }}" /d:sonar.login="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" + - name: Create PFX certificate for AppxBundle id: create_pfx_cert @@ -167,14 +170,14 @@ jobs: PackageCertificateKeyFile: ${{ github.workspace }}\cert.pfx PackageCertificatePassword: ${{ secrets.PACKAGE_CERTIFICATE_PWD }} - # - if: github.event_name != 'pull_request' - # name: Send SonarCloud results - # id: send_sonar_results - # shell: powershell - # run: .\.sonar\scanner\dotnet-sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN }}" - # env: - # GITHUB_TOKEN: ${{ secrets.SONAR_GITHUB_TOKEN }} - # SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + - if: github.event_name != 'pull_request' + name: Send SonarCloud results + id: send_sonar_results + shell: powershell + run: .\.sonar\scanner\dotnet-sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN }}" + env: + GITHUB_TOKEN: ${{ secrets.SONAR_GITHUB_TOKEN }} + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - name: Upload build artifacts id: upload_artifacts From fbfa0f65f74b1b537643b79701a72c47393c5ae3 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Wed, 17 Feb 2021 16:29:38 +0200 Subject: [PATCH 150/194] test SonarCloud classic implementation --- .github/workflows/main.yml | 9 --------- 1 file changed, 9 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 85e1ddea9..53447cbe1 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -114,15 +114,6 @@ jobs: env: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - - if: github.event_name != 'pull_request' - name: Initialize SonarCloud scanner - id: init_sonar_scanner - env: - SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - shell: powershell - run: .\.sonar\scanner\dotnet-sonarscanner begin /k:"${{ github.repository_owner }}_${{ github.event.repository.name }}" /o:"${{ steps.lowercase_string_gen.outputs.owner_name }}" /d:sonar.login="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" - - - name: Create PFX certificate for AppxBundle id: create_pfx_cert shell: powershell From 51e499ac2b2b7cfdb45285cfcb4789de9b934089 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Wed, 17 Feb 2021 16:34:39 +0200 Subject: [PATCH 151/194] test SonarCloud classic implementation --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 53447cbe1..369577c55 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -110,7 +110,7 @@ jobs: id: init_sonar_scanner shell: powershell run: | - .\.sonar\scanner\dotnet-sonarscanner begin /k:"${{ github.repository_owner }}_${{ github.event.repository.name }}" /o:"${{ steps.lowercase_string_gen.outputs.owner_name }}" /d:sonar.login="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" + .\.sonar\scanner\dotnet-sonarscanner begin /k:"${{ github.repository_owner }}_${{ github.event.repository.name }}" /o:"${{ steps.lowercase_string_gen.outputs.owner_name }}" /d:sonar.login="$env:SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" env: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} From db9ece74f34287ca30a39757bafdcbc03d4d1a19 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Wed, 17 Feb 2021 16:43:04 +0200 Subject: [PATCH 152/194] test SonarCloud classic implementation --- .github/workflows/main.yml | 2 +- sonar-project.properties | 12 ------------ 2 files changed, 1 insertion(+), 13 deletions(-) delete mode 100644 sonar-project.properties diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 369577c55..2707d8144 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -110,7 +110,7 @@ jobs: id: init_sonar_scanner shell: powershell run: | - .\.sonar\scanner\dotnet-sonarscanner begin /k:"${{ github.repository_owner }}_${{ github.event.repository.name }}" /o:"${{ steps.lowercase_string_gen.outputs.owner_name }}" /d:sonar.login="$env:SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" + .\.sonar\scanner\dotnet-sonarscanner begin /k:"aleks-ivanov_Notepads" /o:"aleksivanovsinglet" /d:sonar.login="$env:SONAR_TOKEN" }}" /d:sonar.host.url="https://sonarcloud.io" env: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} diff --git a/sonar-project.properties b/sonar-project.properties deleted file mode 100644 index 8f324cd8f..000000000 --- a/sonar-project.properties +++ /dev/null @@ -1,12 +0,0 @@ -sonar.projectKey=aleks-ivanov_Notepads -sonar.organization=aleksivanovsinglet - -# This is the name and version displayed in the SonarCloud UI. -#sonar.projectName=Notepads -#sonar.projectVersion=1.0 - -# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows. -#sonar.sources=. - -# Encoding of the source code. Default is default system encoding -#sonar.sourceEncoding=UTF-8 \ No newline at end of file From ca41f102d2a8619d22e54eb2aa01a6c8f5cb0946 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Wed, 17 Feb 2021 16:45:17 +0200 Subject: [PATCH 153/194] test SonarCloud classic implementation --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 2707d8144..70246ee13 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -110,7 +110,7 @@ jobs: id: init_sonar_scanner shell: powershell run: | - .\.sonar\scanner\dotnet-sonarscanner begin /k:"aleks-ivanov_Notepads" /o:"aleksivanovsinglet" /d:sonar.login="$env:SONAR_TOKEN" }}" /d:sonar.host.url="https://sonarcloud.io" + .\.sonar\scanner\dotnet-sonarscanner begin /k:"aleks-ivanov_Notepads" /o:"aleksivanovsinglet" /d:sonar.login=$env:SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" env: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} From b09791d2d5458845b1f7075957ddfde3df4c185b Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Wed, 17 Feb 2021 16:47:22 +0200 Subject: [PATCH 154/194] test SonarCloud classic implementation --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 70246ee13..f19dda41c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -110,7 +110,7 @@ jobs: id: init_sonar_scanner shell: powershell run: | - .\.sonar\scanner\dotnet-sonarscanner begin /k:"aleks-ivanov_Notepads" /o:"aleksivanovsinglet" /d:sonar.login=$env:SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" + .\.sonar\scanner\dotnet-sonarscanner begin /k:"aleks-ivanov_Notepads" /o:"aleksivanovsinglet" /d:sonar.login="$env:SONAR_TOKEN" /d:sonar.host.url="https://sonarcloud.io" env: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} From 8e118e4b33ab4d193512cc83ff9be0949867a3b7 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Wed, 17 Feb 2021 17:12:27 +0200 Subject: [PATCH 155/194] complete package signing --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f19dda41c..ef90f44e3 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -110,7 +110,7 @@ jobs: id: init_sonar_scanner shell: powershell run: | - .\.sonar\scanner\dotnet-sonarscanner begin /k:"aleks-ivanov_Notepads" /o:"aleksivanovsinglet" /d:sonar.login="$env:SONAR_TOKEN" /d:sonar.host.url="https://sonarcloud.io" + .\.sonar\scanner\dotnet-sonarscanner begin /k:"${{ github.repository_owner }}_${{ github.event.repository.name }}" /o:"${{ steps.lowercase_string_gen.outputs.owner_name }}" /d:sonar.login="$env:SONAR_TOKEN" /d:sonar.host.url="https://sonarcloud.io" env: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} From 778307c5275173cdb2507f176e4cc59d29441d8f Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Wed, 17 Feb 2021 17:37:18 +0200 Subject: [PATCH 156/194] made two of the SonarCloud steps more readable --- .github/workflows/main.yml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ef90f44e3..700cc4449 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -110,7 +110,11 @@ jobs: id: init_sonar_scanner shell: powershell run: | - .\.sonar\scanner\dotnet-sonarscanner begin /k:"${{ github.repository_owner }}_${{ github.event.repository.name }}" /o:"${{ steps.lowercase_string_gen.outputs.owner_name }}" /d:sonar.login="$env:SONAR_TOKEN" /d:sonar.host.url="https://sonarcloud.io" + .\.sonar\scanner\dotnet-sonarscanner begin ` + /k:"${{ github.repository_owner }}_${{ github.event.repository.name }}" ` + /o:"${{ steps.lowercase_string_gen.outputs.owner_name }}" ` + /d:sonar.login="$env:SONAR_TOKEN" ` + /d:sonar.host.url="https://sonarcloud.io" env: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} @@ -165,7 +169,9 @@ jobs: name: Send SonarCloud results id: send_sonar_results shell: powershell - run: .\.sonar\scanner\dotnet-sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN }}" + run: | + .\.sonar\scanner\dotnet-sonarscanner end ` + /d:sonar.login="${{ secrets.SONAR_TOKEN }}" env: GITHUB_TOKEN: ${{ secrets.SONAR_GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} From 5dbe9c148857c698aef929e62f7cdd18e8f7c17f Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Thu, 18 Feb 2021 11:55:55 +0200 Subject: [PATCH 157/194] test package signing limited to push --- .github/workflows/main.yml | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 700cc4449..d22b0f794 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -118,7 +118,8 @@ jobs: env: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - - name: Create PFX certificate for AppxBundle + - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.configuration == 'Release' + name: Create PFX certificate for AppxBundle id: create_pfx_cert shell: powershell run: | @@ -140,6 +141,20 @@ jobs: env: Configuration: ${{ matrix.configuration }} + - name: Determine if signing should be applaied to AppxBundle + id: determine_signing + shell: powershell + run: | + $PARAM = false + if ($env:GITHUB_EVENT_NAME -ceq 'push' && $env:GITHUB_REF -ceq 'refs/heads/master' && $env:BUILD_CONFIGURATION -ceq 'Release') { + $PARAM = true + } + echo "::set-output name=parameter::$(echo $PARAM)" + env: + $GITHUB_EVENT_NAME: ${{ github.event_name }} + $GITHUB_REF: ${{ github.ref }} + $BUILD_CONFIGURATION: ${{ matrix.configuration }} + - name: Build and generate bundles id: build_app shell: powershell @@ -159,7 +174,7 @@ jobs: Configuration: ${{ matrix.configuration }} Uap_Appx_Package_Build_Mode: StoreUpload Appx_Bundle: Always - Appx_Package_Signing_Enabled: true + Appx_Package_Signing_Enabled: ${{ steps.determine_signing.outputs.parameter }} Appx_Bundle_Platforms: x86|x64 Artifacts_Dir: ${{ github.workspace }}\Artifacts PackageCertificateKeyFile: ${{ github.workspace }}\cert.pfx @@ -176,7 +191,8 @@ jobs: GITHUB_TOKEN: ${{ secrets.SONAR_GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - - name: Upload build artifacts + - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.configuration == 'Release' + name: Upload build artifacts id: upload_artifacts uses: actions/upload-artifact@v1 with: From beec2b3da05b4dd2ac5a7e0592fc5f6d9f13c4b4 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Thu, 18 Feb 2021 12:02:37 +0200 Subject: [PATCH 158/194] test package signing limited to push --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d22b0f794..772a5a74d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -146,7 +146,7 @@ jobs: shell: powershell run: | $PARAM = false - if ($env:GITHUB_EVENT_NAME -ceq 'push' && $env:GITHUB_REF -ceq 'refs/heads/master' && $env:BUILD_CONFIGURATION -ceq 'Release') { + if ( ($env:GITHUB_EVENT_NAME -ceq 'push') -and ($env:GITHUB_REF -ceq 'refs/heads/master') -and ($env:BUILD_CONFIGURATION -ceq 'Release') ) { $PARAM = true } echo "::set-output name=parameter::$(echo $PARAM)" From 7f3048fafc0c046b65ecf813eb984efdd9d7b986 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Thu, 18 Feb 2021 12:19:12 +0200 Subject: [PATCH 159/194] test package signing limited to push --- .github/workflows/main.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 772a5a74d..cd909ca59 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -141,13 +141,13 @@ jobs: env: Configuration: ${{ matrix.configuration }} - - name: Determine if signing should be applaied to AppxBundle + - name: Determine if signing should be applied to AppxBundle id: determine_signing shell: powershell run: | - $PARAM = false + [bool]$PARAM = $false if ( ($env:GITHUB_EVENT_NAME -ceq 'push') -and ($env:GITHUB_REF -ceq 'refs/heads/master') -and ($env:BUILD_CONFIGURATION -ceq 'Release') ) { - $PARAM = true + $PARAM = $true } echo "::set-output name=parameter::$(echo $PARAM)" env: From 4fa0315bd0ce4e1c8709d5dcf090a1e6aea1be85 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Thu, 18 Feb 2021 15:55:15 +0200 Subject: [PATCH 160/194] test steps' conditionals handler step --- .github/workflows/main.yml | 50 ++++++++++++++++++++++++++------------ 1 file changed, 34 insertions(+), 16 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index cd909ca59..5f1db6a99 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -12,9 +12,29 @@ jobs: new_version: ${{ steps.get_assembly_version.outputs.version_num }} new_version_tag: ${{ steps.get_assembly_version.outputs.version_tag }} latest_tag: ${{ steps.get_latest_tag.outputs.tag }} + is_github_release: ${{ steps.step_conditionals_handler.outputs.is_github_release }} env: Solution_Name: src\Notepads.sln steps: + - name: Steps' conditionals handler + id: step_conditionals_handler + shell: powershell + run: | + [bool]$IS_GITHUB_RELEASE = $false + [bool]$IS_NOT_PR = $true + if ( ($env:GITHUB_EVENT_NAME -ceq 'push') -and ($env:GITHUB_REF -ceq 'refs/heads/master') -and ($env:BUILD_CONFIGURATION -ceq 'Release') ) { + $IS_GITHUB_RELEASE = $true + } + if ( $env:GITHUB_EVENT_NAME -ceq 'pull_request' ) { + $IS_NOT_PR = $false + } + echo "::set-output name=is_github_release::$(echo "$IS_GITHUB_RELEASE")" + echo "::set-output name=is_not_PR::$(echo "$IS_NOT_PR")" + env: + $GITHUB_EVENT_NAME: ${{ github.event_name }} + $GITHUB_REF: ${{ github.ref }} + $BUILD_CONFIGURATION: ${{ matrix.configuration }} + - name: Set up JDK 11 id: Setup_JDK uses: actions/setup-java@v1 @@ -36,7 +56,7 @@ jobs: fetch-depth: 50 token: ${{ secrets.GITHUB_TOKEN }} - - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.configuration == 'Release' + - if: steps.step_conditionals_handler.outputs.is_github_release name: Get assembly version from appxmanifest id: get_assembly_version shell: powershell @@ -47,7 +67,7 @@ jobs: echo "::set-output name=version_num::$(echo $ASSEMBLY_VERSION_NUMBER)" echo "::set-output name=version_tag::$(echo v"$ASSEMBLY_VERSION_NUMBER")" - - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.configuration == 'Release' + - if: steps.step_conditionals_handler.outputs.is_github_release name: Get latest tag id: get_latest_tag shell: powershell @@ -57,7 +77,7 @@ jobs: env: GIT_URL: ${{ github.repository }} - - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && steps.get_assembly_version.outputs.version_tag != steps.get_latest_tag.outputs.tag && matrix.configuration == 'Release' + - if: steps.step_conditionals_handler.outputs.is_github_release && steps.get_assembly_version.outputs.version_tag != steps.get_latest_tag.outputs.tag name: Add new tag to repo id: add_new_tag_to_repo shell: powershell @@ -71,7 +91,7 @@ jobs: GIT_USER_EMAIL: ${{ secrets.GIT_USER_EMAIL }} NEW_VERSION_TAG: ${{ steps.get_assembly_version.outputs.version_tag }} - - if: github.event_name != 'pull_request' + - if: steps.step_conditionals_handler.outputs.is_not_PR name: Cache SonarCloud packages id: cache_sonar_packages uses: actions/cache@v2 @@ -80,7 +100,7 @@ jobs: key: ${{ runner.os }}-sonar restore-keys: ${{ runner.os }}-sonar - - if: github.event_name != 'pull_request' + - if: steps.step_conditionals_handler.outputs.is_not_PR name: Cache SonarCloud scanner id: cache_sonar_scanner uses: actions/cache@v2 @@ -89,7 +109,7 @@ jobs: key: ${{ runner.os }}-sonar-scanner restore-keys: ${{ runner.os }}-sonar-scanner - - if: github.event_name != 'pull_request' && steps.cache_sonar_scanner.outputs.cache-hit != 'true' + - if: steps.step_conditionals_handler.outputs.is_not_PR && steps.cache_sonar_scanner.outputs.cache-hit != 'true' name: Install SonarCloud scanner id: install_sonar_scanner shell: powershell @@ -97,7 +117,7 @@ jobs: New-Item -Path .\.sonar\scanner -ItemType Directory dotnet tool update dotnet-sonarscanner --tool-path .\.sonar\scanner - - if: github.event_name != 'pull_request' + - if: steps.step_conditionals_handler.outputs.is_not_PR name: Lowercase string generator id: lowercase_string_gen shell: powershell @@ -105,7 +125,7 @@ jobs: $LOWERCASE_OWNER = "${{ github.repository_owner }}".ToLower() echo "::set-output name=owner_name::$LOWERCASE_OWNER" - - if: github.event_name != 'pull_request' + - if: steps.step_conditionals_handler.outputs.is_not_PR name: Initialize SonarCloud scanner id: init_sonar_scanner shell: powershell @@ -118,7 +138,7 @@ jobs: env: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.configuration == 'Release' + - if: steps.step_conditionals_handler.outputs.is_github_release name: Create PFX certificate for AppxBundle id: create_pfx_cert shell: powershell @@ -146,14 +166,12 @@ jobs: shell: powershell run: | [bool]$PARAM = $false - if ( ($env:GITHUB_EVENT_NAME -ceq 'push') -and ($env:GITHUB_REF -ceq 'refs/heads/master') -and ($env:BUILD_CONFIGURATION -ceq 'Release') ) { + if ( $env:IS_GITHUB_RELEASE ) { $PARAM = $true } echo "::set-output name=parameter::$(echo $PARAM)" env: - $GITHUB_EVENT_NAME: ${{ github.event_name }} - $GITHUB_REF: ${{ github.ref }} - $BUILD_CONFIGURATION: ${{ matrix.configuration }} + $IS_GITHUB_RELEASE: ${{ steps.step_conditionals_handler.outputs.is_github_release }} - name: Build and generate bundles id: build_app @@ -180,7 +198,7 @@ jobs: PackageCertificateKeyFile: ${{ github.workspace }}\cert.pfx PackageCertificatePassword: ${{ secrets.PACKAGE_CERTIFICATE_PWD }} - - if: github.event_name != 'pull_request' + - if: steps.step_conditionals_handler.outputs.is_not_PR name: Send SonarCloud results id: send_sonar_results shell: powershell @@ -191,7 +209,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.SONAR_GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && matrix.configuration == 'Release' + - if: steps.step_conditionals_handler.outputs.is_github_release name: Upload build artifacts id: upload_artifacts uses: actions/upload-artifact@v1 @@ -201,7 +219,7 @@ jobs: cd: # "This job will execute when the workflow is triggered on a 'push event', the target branch is 'master' and the commit is intended to be a release." - if: github.event_name == 'push' && github.ref == 'refs/heads/master' && needs.ci.outputs.new_version_tag != needs.ci.outputs.latest_tag + if: needs.ci.outputs.is_github_release && needs.ci.outputs.new_version_tag != needs.ci.outputs.latest_tag needs: ci runs-on: windows-latest env: From a35d143b290604389839ad0b1bc8c9f7e3326ba3 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Thu, 18 Feb 2021 15:58:06 +0200 Subject: [PATCH 161/194] test steps' conditionals handler step --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 5f1db6a99..cc735bf96 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -28,8 +28,8 @@ jobs: if ( $env:GITHUB_EVENT_NAME -ceq 'pull_request' ) { $IS_NOT_PR = $false } - echo "::set-output name=is_github_release::$(echo "$IS_GITHUB_RELEASE")" - echo "::set-output name=is_not_PR::$(echo "$IS_NOT_PR")" + echo "::set-output name=is_github_release::$(echo $IS_GITHUB_RELEASE)" + echo "::set-output name=is_not_PR::$(echo $IS_NOT_PR)" env: $GITHUB_EVENT_NAME: ${{ github.event_name }} $GITHUB_REF: ${{ github.ref }} From a5ee73ded4741f9bcaef323eec1efb640b219a99 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Thu, 18 Feb 2021 16:01:22 +0200 Subject: [PATCH 162/194] test steps' conditionals handler step --- .github/workflows/main.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index cc735bf96..2b2f94f42 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -35,6 +35,11 @@ jobs: $GITHUB_REF: ${{ github.ref }} $BUILD_CONFIGURATION: ${{ matrix.configuration }} + - name: Check step_conditionals_handler output + run: | + echo "${{ steps.step_conditionals_handler.outputs.is_github_release }}" + echo "${{ steps.step_conditionals_handler.outputs.is_not_PR }}" + - name: Set up JDK 11 id: Setup_JDK uses: actions/setup-java@v1 From 8f4a188b31c1c7711dd302f533017211df7a110a Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Thu, 18 Feb 2021 16:03:18 +0200 Subject: [PATCH 163/194] test steps' conditionals handler step --- .github/workflows/main.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 2b2f94f42..149494c42 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -40,7 +40,8 @@ jobs: echo "${{ steps.step_conditionals_handler.outputs.is_github_release }}" echo "${{ steps.step_conditionals_handler.outputs.is_not_PR }}" - - name: Set up JDK 11 + - if: (false) + name: Set up JDK 11 id: Setup_JDK uses: actions/setup-java@v1 with: From 2b3e2be5edce3b18c02711847de8d9996f94c769 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Thu, 18 Feb 2021 16:06:28 +0200 Subject: [PATCH 164/194] test steps' conditionals handler step --- .github/workflows/main.yml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 149494c42..c5ad0e523 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -40,7 +40,7 @@ jobs: echo "${{ steps.step_conditionals_handler.outputs.is_github_release }}" echo "${{ steps.step_conditionals_handler.outputs.is_not_PR }}" - - if: (false) + - if: ( False ) name: Set up JDK 11 id: Setup_JDK uses: actions/setup-java@v1 @@ -62,7 +62,7 @@ jobs: fetch-depth: 50 token: ${{ secrets.GITHUB_TOKEN }} - - if: steps.step_conditionals_handler.outputs.is_github_release + - if: ( steps.step_conditionals_handler.outputs.is_github_release ) name: Get assembly version from appxmanifest id: get_assembly_version shell: powershell @@ -73,7 +73,7 @@ jobs: echo "::set-output name=version_num::$(echo $ASSEMBLY_VERSION_NUMBER)" echo "::set-output name=version_tag::$(echo v"$ASSEMBLY_VERSION_NUMBER")" - - if: steps.step_conditionals_handler.outputs.is_github_release + - if: ( steps.step_conditionals_handler.outputs.is_github_release ) name: Get latest tag id: get_latest_tag shell: powershell @@ -83,7 +83,7 @@ jobs: env: GIT_URL: ${{ github.repository }} - - if: steps.step_conditionals_handler.outputs.is_github_release && steps.get_assembly_version.outputs.version_tag != steps.get_latest_tag.outputs.tag + - if: ( steps.step_conditionals_handler.outputs.is_github_release ) && steps.get_assembly_version.outputs.version_tag != steps.get_latest_tag.outputs.tag name: Add new tag to repo id: add_new_tag_to_repo shell: powershell @@ -97,7 +97,7 @@ jobs: GIT_USER_EMAIL: ${{ secrets.GIT_USER_EMAIL }} NEW_VERSION_TAG: ${{ steps.get_assembly_version.outputs.version_tag }} - - if: steps.step_conditionals_handler.outputs.is_not_PR + - if: ( steps.step_conditionals_handler.outputs.is_not_PR ) name: Cache SonarCloud packages id: cache_sonar_packages uses: actions/cache@v2 @@ -106,7 +106,7 @@ jobs: key: ${{ runner.os }}-sonar restore-keys: ${{ runner.os }}-sonar - - if: steps.step_conditionals_handler.outputs.is_not_PR + - if: ( steps.step_conditionals_handler.outputs.is_not_PR ) name: Cache SonarCloud scanner id: cache_sonar_scanner uses: actions/cache@v2 @@ -115,7 +115,7 @@ jobs: key: ${{ runner.os }}-sonar-scanner restore-keys: ${{ runner.os }}-sonar-scanner - - if: steps.step_conditionals_handler.outputs.is_not_PR && steps.cache_sonar_scanner.outputs.cache-hit != 'true' + - if: ( steps.step_conditionals_handler.outputs.is_not_PR && steps.cache_sonar_scanner.outputs. )cache-hit != 'true' name: Install SonarCloud scanner id: install_sonar_scanner shell: powershell @@ -123,7 +123,7 @@ jobs: New-Item -Path .\.sonar\scanner -ItemType Directory dotnet tool update dotnet-sonarscanner --tool-path .\.sonar\scanner - - if: steps.step_conditionals_handler.outputs.is_not_PR + - if: ( steps.step_conditionals_handler.outputs.is_not_PR ) name: Lowercase string generator id: lowercase_string_gen shell: powershell @@ -131,7 +131,7 @@ jobs: $LOWERCASE_OWNER = "${{ github.repository_owner }}".ToLower() echo "::set-output name=owner_name::$LOWERCASE_OWNER" - - if: steps.step_conditionals_handler.outputs.is_not_PR + - if: ( steps.step_conditionals_handler.outputs.is_not_PR ) name: Initialize SonarCloud scanner id: init_sonar_scanner shell: powershell @@ -144,7 +144,7 @@ jobs: env: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - - if: steps.step_conditionals_handler.outputs.is_github_release + - if: ( steps.step_conditionals_handler.outputs.is_github_release ) name: Create PFX certificate for AppxBundle id: create_pfx_cert shell: powershell @@ -204,7 +204,7 @@ jobs: PackageCertificateKeyFile: ${{ github.workspace }}\cert.pfx PackageCertificatePassword: ${{ secrets.PACKAGE_CERTIFICATE_PWD }} - - if: steps.step_conditionals_handler.outputs.is_not_PR + - if: ( steps.step_conditionals_handler.outputs.is_not_PR ) name: Send SonarCloud results id: send_sonar_results shell: powershell @@ -215,7 +215,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.SONAR_GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - - if: steps.step_conditionals_handler.outputs.is_github_release + - if: ( steps.step_conditionals_handler.outputs.is_github_release ) name: Upload build artifacts id: upload_artifacts uses: actions/upload-artifact@v1 @@ -225,7 +225,7 @@ jobs: cd: # "This job will execute when the workflow is triggered on a 'push event', the target branch is 'master' and the commit is intended to be a release." - if: needs.ci.outputs.is_github_release && needs.ci.outputs.new_version_tag != needs.ci.outputs.latest_tag + if: ( needs.ci.outputs.is_github_release ) && needs.ci.outputs.new_version_tag != needs.ci.outputs.latest_tag needs: ci runs-on: windows-latest env: From 82e872ef4b9b6465bd8eb787d1e1349f2ba0313c Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Thu, 18 Feb 2021 16:10:16 +0200 Subject: [PATCH 165/194] test steps' conditionals handler step --- .github/workflows/main.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c5ad0e523..a1ff65d14 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -20,13 +20,13 @@ jobs: id: step_conditionals_handler shell: powershell run: | - [bool]$IS_GITHUB_RELEASE = $false - [bool]$IS_NOT_PR = $true + $IS_GITHUB_RELEASE = "false" + $IS_NOT_PR = "true" if ( ($env:GITHUB_EVENT_NAME -ceq 'push') -and ($env:GITHUB_REF -ceq 'refs/heads/master') -and ($env:BUILD_CONFIGURATION -ceq 'Release') ) { - $IS_GITHUB_RELEASE = $true + $IS_GITHUB_RELEASE = "true" } if ( $env:GITHUB_EVENT_NAME -ceq 'pull_request' ) { - $IS_NOT_PR = $false + $IS_NOT_PR = "false" } echo "::set-output name=is_github_release::$(echo $IS_GITHUB_RELEASE)" echo "::set-output name=is_not_PR::$(echo $IS_NOT_PR)" From 53ae48a91351880be4a21b84738284053790e8ae Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Thu, 18 Feb 2021 16:10:44 +0200 Subject: [PATCH 166/194] test steps' conditionals handler step --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a1ff65d14..1a939ef75 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -40,7 +40,7 @@ jobs: echo "${{ steps.step_conditionals_handler.outputs.is_github_release }}" echo "${{ steps.step_conditionals_handler.outputs.is_not_PR }}" - - if: ( False ) + - if: ( false ) name: Set up JDK 11 id: Setup_JDK uses: actions/setup-java@v1 From 1b479869d2651efc75419e327a5208ce225521f5 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Thu, 18 Feb 2021 16:12:06 +0200 Subject: [PATCH 167/194] test steps' conditionals handler step --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 1a939ef75..f1dec0f57 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -115,7 +115,7 @@ jobs: key: ${{ runner.os }}-sonar-scanner restore-keys: ${{ runner.os }}-sonar-scanner - - if: ( steps.step_conditionals_handler.outputs.is_not_PR && steps.cache_sonar_scanner.outputs. )cache-hit != 'true' + - if: ( steps.step_conditionals_handler.outputs.is_not_PR ) && steps.cache_sonar_scanner.outputs.cache-hit != 'true' name: Install SonarCloud scanner id: install_sonar_scanner shell: powershell From 2ffef61691dc37a1b1d4da6a45ba37c054476875 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Thu, 18 Feb 2021 16:15:34 +0200 Subject: [PATCH 168/194] test steps' conditionals handler step --- .github/workflows/main.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f1dec0f57..57ded6444 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -20,13 +20,13 @@ jobs: id: step_conditionals_handler shell: powershell run: | - $IS_GITHUB_RELEASE = "false" - $IS_NOT_PR = "true" + $IS_GITHUB_RELEASE = $false + $IS_NOT_PR = $true if ( ($env:GITHUB_EVENT_NAME -ceq 'push') -and ($env:GITHUB_REF -ceq 'refs/heads/master') -and ($env:BUILD_CONFIGURATION -ceq 'Release') ) { - $IS_GITHUB_RELEASE = "true" + $IS_GITHUB_RELEASE = $true } if ( $env:GITHUB_EVENT_NAME -ceq 'pull_request' ) { - $IS_NOT_PR = "false" + $IS_NOT_PR = $false } echo "::set-output name=is_github_release::$(echo $IS_GITHUB_RELEASE)" echo "::set-output name=is_not_PR::$(echo $IS_NOT_PR)" From 454cb129b35ec7848fa03f0685c44def5ced238d Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Thu, 18 Feb 2021 16:16:42 +0200 Subject: [PATCH 169/194] test steps' conditionals handler step --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 57ded6444..36dcad617 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -28,8 +28,8 @@ jobs: if ( $env:GITHUB_EVENT_NAME -ceq 'pull_request' ) { $IS_NOT_PR = $false } - echo "::set-output name=is_github_release::$(echo $IS_GITHUB_RELEASE)" - echo "::set-output name=is_not_PR::$(echo $IS_NOT_PR)" + echo "::set-output name=is_github_release::$(echo $IS_GITHUB_RELEASE.ToLower())" + echo "::set-output name=is_not_PR::$(echo $IS_NOT_PR.ToLower())" env: $GITHUB_EVENT_NAME: ${{ github.event_name }} $GITHUB_REF: ${{ github.ref }} From 8c5c6c52d4db40bdb567a4db30250de1e303e362 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Thu, 18 Feb 2021 16:22:04 +0200 Subject: [PATCH 170/194] test steps' conditionals handler step --- .github/workflows/main.yml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 36dcad617..664d62938 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -20,16 +20,14 @@ jobs: id: step_conditionals_handler shell: powershell run: | - $IS_GITHUB_RELEASE = $false - $IS_NOT_PR = $true + echo "::set-output name=is_github_release::false" + echo "::set-output name=is_not_PR::true" if ( ($env:GITHUB_EVENT_NAME -ceq 'push') -and ($env:GITHUB_REF -ceq 'refs/heads/master') -and ($env:BUILD_CONFIGURATION -ceq 'Release') ) { - $IS_GITHUB_RELEASE = $true + echo "::set-output name=is_github_release::true" } if ( $env:GITHUB_EVENT_NAME -ceq 'pull_request' ) { - $IS_NOT_PR = $false + echo "::set-output name=is_not_PR::false" } - echo "::set-output name=is_github_release::$(echo $IS_GITHUB_RELEASE.ToLower())" - echo "::set-output name=is_not_PR::$(echo $IS_NOT_PR.ToLower())" env: $GITHUB_EVENT_NAME: ${{ github.event_name }} $GITHUB_REF: ${{ github.ref }} From 6746a448a4fa6bee853c455a9a21e27b87216416 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Thu, 18 Feb 2021 16:25:37 +0200 Subject: [PATCH 171/194] test steps' conditionals handler step --- .github/workflows/main.yml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 664d62938..1a80a60fe 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -60,7 +60,7 @@ jobs: fetch-depth: 50 token: ${{ secrets.GITHUB_TOKEN }} - - if: ( steps.step_conditionals_handler.outputs.is_github_release ) + - if: steps.step_conditionals_handler.outputs.is_github_release == true name: Get assembly version from appxmanifest id: get_assembly_version shell: powershell @@ -71,7 +71,7 @@ jobs: echo "::set-output name=version_num::$(echo $ASSEMBLY_VERSION_NUMBER)" echo "::set-output name=version_tag::$(echo v"$ASSEMBLY_VERSION_NUMBER")" - - if: ( steps.step_conditionals_handler.outputs.is_github_release ) + - if: steps.step_conditionals_handler.outputs.is_github_release == true name: Get latest tag id: get_latest_tag shell: powershell @@ -81,7 +81,7 @@ jobs: env: GIT_URL: ${{ github.repository }} - - if: ( steps.step_conditionals_handler.outputs.is_github_release ) && steps.get_assembly_version.outputs.version_tag != steps.get_latest_tag.outputs.tag + - if: steps.step_conditionals_handler.outputs.is_github_release == true && steps.get_assembly_version.outputs.version_tag != steps.get_latest_tag.outputs.tag name: Add new tag to repo id: add_new_tag_to_repo shell: powershell @@ -95,7 +95,7 @@ jobs: GIT_USER_EMAIL: ${{ secrets.GIT_USER_EMAIL }} NEW_VERSION_TAG: ${{ steps.get_assembly_version.outputs.version_tag }} - - if: ( steps.step_conditionals_handler.outputs.is_not_PR ) + - if: steps.step_conditionals_handler.outputs.is_not_PR == true name: Cache SonarCloud packages id: cache_sonar_packages uses: actions/cache@v2 @@ -104,7 +104,7 @@ jobs: key: ${{ runner.os }}-sonar restore-keys: ${{ runner.os }}-sonar - - if: ( steps.step_conditionals_handler.outputs.is_not_PR ) + - if: steps.step_conditionals_handler.outputs.is_not_PR == true name: Cache SonarCloud scanner id: cache_sonar_scanner uses: actions/cache@v2 @@ -113,7 +113,7 @@ jobs: key: ${{ runner.os }}-sonar-scanner restore-keys: ${{ runner.os }}-sonar-scanner - - if: ( steps.step_conditionals_handler.outputs.is_not_PR ) && steps.cache_sonar_scanner.outputs.cache-hit != 'true' + - if: steps.step_conditionals_handler.outputs.is_not_PR == true && steps.cache_sonar_scanner.outputs.cache-hit != 'true' name: Install SonarCloud scanner id: install_sonar_scanner shell: powershell @@ -121,7 +121,7 @@ jobs: New-Item -Path .\.sonar\scanner -ItemType Directory dotnet tool update dotnet-sonarscanner --tool-path .\.sonar\scanner - - if: ( steps.step_conditionals_handler.outputs.is_not_PR ) + - if: steps.step_conditionals_handler.outputs.is_not_PR == true name: Lowercase string generator id: lowercase_string_gen shell: powershell @@ -129,7 +129,7 @@ jobs: $LOWERCASE_OWNER = "${{ github.repository_owner }}".ToLower() echo "::set-output name=owner_name::$LOWERCASE_OWNER" - - if: ( steps.step_conditionals_handler.outputs.is_not_PR ) + - if: steps.step_conditionals_handler.outputs.is_not_PR == true name: Initialize SonarCloud scanner id: init_sonar_scanner shell: powershell @@ -142,7 +142,7 @@ jobs: env: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - - if: ( steps.step_conditionals_handler.outputs.is_github_release ) + - if: steps.step_conditionals_handler.outputs.is_github_release == true name: Create PFX certificate for AppxBundle id: create_pfx_cert shell: powershell @@ -202,7 +202,7 @@ jobs: PackageCertificateKeyFile: ${{ github.workspace }}\cert.pfx PackageCertificatePassword: ${{ secrets.PACKAGE_CERTIFICATE_PWD }} - - if: ( steps.step_conditionals_handler.outputs.is_not_PR ) + - if: steps.step_conditionals_handler.outputs.is_not_PR == true name: Send SonarCloud results id: send_sonar_results shell: powershell @@ -213,7 +213,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.SONAR_GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - - if: ( steps.step_conditionals_handler.outputs.is_github_release ) + - if: steps.step_conditionals_handler.outputs.is_github_release == true name: Upload build artifacts id: upload_artifacts uses: actions/upload-artifact@v1 From 699bc8788af0fa339e00638537543b03206f3fbf Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Thu, 18 Feb 2021 16:28:57 +0200 Subject: [PATCH 172/194] test steps' conditionals handler step --- .github/workflows/main.yml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 1a80a60fe..082a8dbea 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -60,7 +60,7 @@ jobs: fetch-depth: 50 token: ${{ secrets.GITHUB_TOKEN }} - - if: steps.step_conditionals_handler.outputs.is_github_release == true + - if: steps.step_conditionals_handler.outputs.is_github_release == 'true' name: Get assembly version from appxmanifest id: get_assembly_version shell: powershell @@ -71,7 +71,7 @@ jobs: echo "::set-output name=version_num::$(echo $ASSEMBLY_VERSION_NUMBER)" echo "::set-output name=version_tag::$(echo v"$ASSEMBLY_VERSION_NUMBER")" - - if: steps.step_conditionals_handler.outputs.is_github_release == true + - if: steps.step_conditionals_handler.outputs.is_github_release == 'true' name: Get latest tag id: get_latest_tag shell: powershell @@ -81,7 +81,7 @@ jobs: env: GIT_URL: ${{ github.repository }} - - if: steps.step_conditionals_handler.outputs.is_github_release == true && steps.get_assembly_version.outputs.version_tag != steps.get_latest_tag.outputs.tag + - if: steps.step_conditionals_handler.outputs.is_github_release == 'true' && steps.get_assembly_version.outputs.version_tag != steps.get_latest_tag.outputs.tag name: Add new tag to repo id: add_new_tag_to_repo shell: powershell @@ -95,7 +95,7 @@ jobs: GIT_USER_EMAIL: ${{ secrets.GIT_USER_EMAIL }} NEW_VERSION_TAG: ${{ steps.get_assembly_version.outputs.version_tag }} - - if: steps.step_conditionals_handler.outputs.is_not_PR == true + - if: steps.step_conditionals_handler.outputs.is_not_PR == 'true' name: Cache SonarCloud packages id: cache_sonar_packages uses: actions/cache@v2 @@ -104,7 +104,7 @@ jobs: key: ${{ runner.os }}-sonar restore-keys: ${{ runner.os }}-sonar - - if: steps.step_conditionals_handler.outputs.is_not_PR == true + - if: steps.step_conditionals_handler.outputs.is_not_PR == 'true' name: Cache SonarCloud scanner id: cache_sonar_scanner uses: actions/cache@v2 @@ -113,7 +113,7 @@ jobs: key: ${{ runner.os }}-sonar-scanner restore-keys: ${{ runner.os }}-sonar-scanner - - if: steps.step_conditionals_handler.outputs.is_not_PR == true && steps.cache_sonar_scanner.outputs.cache-hit != 'true' + - if: steps.step_conditionals_handler.outputs.is_not_PR == 'true' && steps.cache_sonar_scanner.outputs.cache-hit != 'true' name: Install SonarCloud scanner id: install_sonar_scanner shell: powershell @@ -121,7 +121,7 @@ jobs: New-Item -Path .\.sonar\scanner -ItemType Directory dotnet tool update dotnet-sonarscanner --tool-path .\.sonar\scanner - - if: steps.step_conditionals_handler.outputs.is_not_PR == true + - if: steps.step_conditionals_handler.outputs.is_not_PR == 'true' name: Lowercase string generator id: lowercase_string_gen shell: powershell @@ -129,7 +129,7 @@ jobs: $LOWERCASE_OWNER = "${{ github.repository_owner }}".ToLower() echo "::set-output name=owner_name::$LOWERCASE_OWNER" - - if: steps.step_conditionals_handler.outputs.is_not_PR == true + - if: steps.step_conditionals_handler.outputs.is_not_PR == 'true' name: Initialize SonarCloud scanner id: init_sonar_scanner shell: powershell @@ -142,7 +142,7 @@ jobs: env: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - - if: steps.step_conditionals_handler.outputs.is_github_release == true + - if: steps.step_conditionals_handler.outputs.is_github_release == 'true' name: Create PFX certificate for AppxBundle id: create_pfx_cert shell: powershell @@ -202,7 +202,7 @@ jobs: PackageCertificateKeyFile: ${{ github.workspace }}\cert.pfx PackageCertificatePassword: ${{ secrets.PACKAGE_CERTIFICATE_PWD }} - - if: steps.step_conditionals_handler.outputs.is_not_PR == true + - if: steps.step_conditionals_handler.outputs.is_not_PR == 'true' name: Send SonarCloud results id: send_sonar_results shell: powershell @@ -213,7 +213,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.SONAR_GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - - if: steps.step_conditionals_handler.outputs.is_github_release == true + - if: steps.step_conditionals_handler.outputs.is_github_release == 'true' name: Upload build artifacts id: upload_artifacts uses: actions/upload-artifact@v1 From 783250c6fcd5f855851859012ebe7153b9c6169c Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Thu, 18 Feb 2021 16:39:03 +0200 Subject: [PATCH 173/194] test steps' conditionals handler step --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 082a8dbea..82c960b31 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -38,7 +38,7 @@ jobs: echo "${{ steps.step_conditionals_handler.outputs.is_github_release }}" echo "${{ steps.step_conditionals_handler.outputs.is_not_PR }}" - - if: ( false ) + - if: steps.step_conditionals_handler.outputs.is_not_PR == 'true' name: Set up JDK 11 id: Setup_JDK uses: actions/setup-java@v1 @@ -223,7 +223,7 @@ jobs: cd: # "This job will execute when the workflow is triggered on a 'push event', the target branch is 'master' and the commit is intended to be a release." - if: ( needs.ci.outputs.is_github_release ) && needs.ci.outputs.new_version_tag != needs.ci.outputs.latest_tag + if: needs.ci.outputs.is_github_release == 'true' && needs.ci.outputs.new_version_tag != needs.ci.outputs.latest_tag needs: ci runs-on: windows-latest env: From eefabad4cf225702103bb885d42aa662a64fc0c2 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Thu, 18 Feb 2021 16:42:08 +0200 Subject: [PATCH 174/194] test steps' conditionals handler step --- .github/workflows/main.yml | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 82c960b31..0d03cea15 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -21,24 +21,19 @@ jobs: shell: powershell run: | echo "::set-output name=is_github_release::false" - echo "::set-output name=is_not_PR::true" + echo "::set-output name=is_not_pr::true" if ( ($env:GITHUB_EVENT_NAME -ceq 'push') -and ($env:GITHUB_REF -ceq 'refs/heads/master') -and ($env:BUILD_CONFIGURATION -ceq 'Release') ) { echo "::set-output name=is_github_release::true" } if ( $env:GITHUB_EVENT_NAME -ceq 'pull_request' ) { - echo "::set-output name=is_not_PR::false" + echo "::set-output name=is_not_pr::false" } env: $GITHUB_EVENT_NAME: ${{ github.event_name }} $GITHUB_REF: ${{ github.ref }} $BUILD_CONFIGURATION: ${{ matrix.configuration }} - - name: Check step_conditionals_handler output - run: | - echo "${{ steps.step_conditionals_handler.outputs.is_github_release }}" - echo "${{ steps.step_conditionals_handler.outputs.is_not_PR }}" - - - if: steps.step_conditionals_handler.outputs.is_not_PR == 'true' + - if: steps.step_conditionals_handler.outputs.is_not_pr == 'true' name: Set up JDK 11 id: Setup_JDK uses: actions/setup-java@v1 @@ -95,7 +90,7 @@ jobs: GIT_USER_EMAIL: ${{ secrets.GIT_USER_EMAIL }} NEW_VERSION_TAG: ${{ steps.get_assembly_version.outputs.version_tag }} - - if: steps.step_conditionals_handler.outputs.is_not_PR == 'true' + - if: steps.step_conditionals_handler.outputs.is_not_pr == 'true' name: Cache SonarCloud packages id: cache_sonar_packages uses: actions/cache@v2 @@ -104,7 +99,7 @@ jobs: key: ${{ runner.os }}-sonar restore-keys: ${{ runner.os }}-sonar - - if: steps.step_conditionals_handler.outputs.is_not_PR == 'true' + - if: steps.step_conditionals_handler.outputs.is_not_pr == 'true' name: Cache SonarCloud scanner id: cache_sonar_scanner uses: actions/cache@v2 @@ -113,7 +108,7 @@ jobs: key: ${{ runner.os }}-sonar-scanner restore-keys: ${{ runner.os }}-sonar-scanner - - if: steps.step_conditionals_handler.outputs.is_not_PR == 'true' && steps.cache_sonar_scanner.outputs.cache-hit != 'true' + - if: steps.step_conditionals_handler.outputs.is_not_pr == 'true' && steps.cache_sonar_scanner.outputs.cache-hit != 'true' name: Install SonarCloud scanner id: install_sonar_scanner shell: powershell @@ -121,7 +116,7 @@ jobs: New-Item -Path .\.sonar\scanner -ItemType Directory dotnet tool update dotnet-sonarscanner --tool-path .\.sonar\scanner - - if: steps.step_conditionals_handler.outputs.is_not_PR == 'true' + - if: steps.step_conditionals_handler.outputs.is_not_pr == 'true' name: Lowercase string generator id: lowercase_string_gen shell: powershell @@ -129,7 +124,7 @@ jobs: $LOWERCASE_OWNER = "${{ github.repository_owner }}".ToLower() echo "::set-output name=owner_name::$LOWERCASE_OWNER" - - if: steps.step_conditionals_handler.outputs.is_not_PR == 'true' + - if: steps.step_conditionals_handler.outputs.is_not_pr == 'true' name: Initialize SonarCloud scanner id: init_sonar_scanner shell: powershell @@ -202,7 +197,7 @@ jobs: PackageCertificateKeyFile: ${{ github.workspace }}\cert.pfx PackageCertificatePassword: ${{ secrets.PACKAGE_CERTIFICATE_PWD }} - - if: steps.step_conditionals_handler.outputs.is_not_PR == 'true' + - if: steps.step_conditionals_handler.outputs.is_not_pr == 'true' name: Send SonarCloud results id: send_sonar_results shell: powershell From c70f1a5d9cfa48da999cacc2426607809ab4e141 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Thu, 18 Feb 2021 16:45:08 +0200 Subject: [PATCH 175/194] test steps' conditionals handler step --- .github/workflows/main.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0d03cea15..70571dea9 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -20,14 +20,16 @@ jobs: id: step_conditionals_handler shell: powershell run: | - echo "::set-output name=is_github_release::false" - echo "::set-output name=is_not_pr::true" + $IS_GITHUB_RELEASE = 'false' + $IS_NOT_PR = 'true' if ( ($env:GITHUB_EVENT_NAME -ceq 'push') -and ($env:GITHUB_REF -ceq 'refs/heads/master') -and ($env:BUILD_CONFIGURATION -ceq 'Release') ) { - echo "::set-output name=is_github_release::true" + $IS_GITHUB_RELEASE = 'true' } if ( $env:GITHUB_EVENT_NAME -ceq 'pull_request' ) { - echo "::set-output name=is_not_pr::false" + $IS_NOT_PR = 'false' } + echo "::set-output name=is_github_release::$(echo $IS_GITHUB_RELEASE)" + echo "::set-output name=is_not_pr::$(echo $IS_NOT_PR)" env: $GITHUB_EVENT_NAME: ${{ github.event_name }} $GITHUB_REF: ${{ github.ref }} From 2696e2aeec62a65e5e4689fe47a0747a7273d758 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Thu, 18 Feb 2021 17:03:50 +0200 Subject: [PATCH 176/194] test steps' conditionals handler step --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 70571dea9..646f74a54 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -85,7 +85,7 @@ jobs: run: | git config --global user.name $env:GIT_USER_NAME git config --global user.email $env:GIT_USER_EMAIL - git tag -a -m "New version" $env:NEW_VERSION_TAG + git tag -a -m "${{ github.event.head_commit.message }}" $env:NEW_VERSION_TAG git push --follow-tags env: GIT_USER_NAME: ${{ secrets.GIT_USER_NAME }} From 347fd067a35af29d4664bfb571349f45c7ebebc2 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Thu, 18 Feb 2021 18:20:41 +0200 Subject: [PATCH 177/194] create 'Steps' conditionals handler' step --- .github/workflows/main.yml | 26 +++++++------------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 646f74a54..f6f7025ec 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -14,7 +14,7 @@ jobs: latest_tag: ${{ steps.get_latest_tag.outputs.tag }} is_github_release: ${{ steps.step_conditionals_handler.outputs.is_github_release }} env: - Solution_Name: src\Notepads.sln + SOLUTION_NAME: src\Notepads.sln steps: - name: Steps' conditionals handler id: step_conditionals_handler @@ -31,9 +31,9 @@ jobs: echo "::set-output name=is_github_release::$(echo $IS_GITHUB_RELEASE)" echo "::set-output name=is_not_pr::$(echo $IS_NOT_PR)" env: - $GITHUB_EVENT_NAME: ${{ github.event_name }} - $GITHUB_REF: ${{ github.ref }} - $BUILD_CONFIGURATION: ${{ matrix.configuration }} + GITHUB_EVENT_NAME: ${{ github.event_name }} + GITHUB_REF: ${{ github.ref }} + BUILD_CONFIGURATION: ${{ matrix.configuration }} - if: steps.step_conditionals_handler.outputs.is_not_pr == 'true' name: Set up JDK 11 @@ -156,29 +156,17 @@ jobs: id: restore_application shell: powershell run: | - msbuild $env:Solution_Name ` + msbuild $env:SOLUTION_NAME ` /t:Restore ` /p:Configuration=$env:Configuration env: Configuration: ${{ matrix.configuration }} - - name: Determine if signing should be applied to AppxBundle - id: determine_signing - shell: powershell - run: | - [bool]$PARAM = $false - if ( $env:IS_GITHUB_RELEASE ) { - $PARAM = $true - } - echo "::set-output name=parameter::$(echo $PARAM)" - env: - $IS_GITHUB_RELEASE: ${{ steps.step_conditionals_handler.outputs.is_github_release }} - - name: Build and generate bundles id: build_app shell: powershell run: | - msbuild $env:Solution_Name ` + msbuild $env:SOLUTION_NAME ` /p:Platform=$env:Platform ` /p:Configuration=$env:Configuration ` /p:UapAppxPackageBuildMode=$env:Uap_Appx_Package_Build_Mode ` @@ -193,7 +181,7 @@ jobs: Configuration: ${{ matrix.configuration }} Uap_Appx_Package_Build_Mode: StoreUpload Appx_Bundle: Always - Appx_Package_Signing_Enabled: ${{ steps.determine_signing.outputs.parameter }} + Appx_Package_Signing_Enabled: ${{ steps.step_conditionals_handler.outputs.is_github_release }} Appx_Bundle_Platforms: x86|x64 Artifacts_Dir: ${{ github.workspace }}\Artifacts PackageCertificateKeyFile: ${{ github.workspace }}\cert.pfx From 03f26b88a6dd03ae2bb44863f44aa5749bc12678 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Fri, 19 Feb 2021 13:23:34 +0200 Subject: [PATCH 178/194] draft Create Release documentation entry --- CI-CD_DOCUMENTATION.md | 56 ++++++++++++++++++ ScreenShots/CI-CD_DOCUMENTATION/Release_1.png | Bin 0 -> 19313 bytes ScreenShots/CI-CD_DOCUMENTATION/Release_2.png | Bin 0 -> 9532 bytes 3 files changed, 56 insertions(+) create mode 100644 ScreenShots/CI-CD_DOCUMENTATION/Release_1.png create mode 100644 ScreenShots/CI-CD_DOCUMENTATION/Release_2.png diff --git a/CI-CD_DOCUMENTATION.md b/CI-CD_DOCUMENTATION.md index 57a05fb45..b8d86c2f9 100644 --- a/CI-CD_DOCUMENTATION.md +++ b/CI-CD_DOCUMENTATION.md @@ -236,6 +236,62 @@ To add more descriptions, follow these steps: ![CSA_custom_2](/ScreenShots/CI-CD_DOCUMENTATION/CSA_custom_2.png) +
+ +## 5. Automated GitHub release + +This feature automatically bumps up the GitHub tag in the repo, creates a GitHub release with the new tag and attaches the msixbundle to it + +#### Setup + +Add the following secrets by going to the repo **Settings** tab -> **Secrets**: + +1. **GIT_USER_NAME** +- used to add the identity required for creating a tag +- copy and paste your GitHub username as the value of the secret + +2. **GIT_USER_EMAIL** +- used to add the identity required for creating a tag +- copy and paste your primary GitHub email as the value of the secret + +3. **PFX_TO_BASE64** +- used to dynamically create the PFX file required for the signing of the **msixbundle** +- use the following Powershell code locally to turn your PFX file into Base64: + +``` +# read from PFX as binary +$PFX_FILE = [IO.File]::ReadAllBytes('absolute_path_to_PFX') +# convert to Base64 and write in txt +[System.Convert]::ToBase64String($PFX_FILE) | Out-File 'cert.txt' +``` + +- copy the contents of the **cert.txt** and paste as the value of the secret + +4. **PACKAGE_CERTIFICATE_PWD** +- used in the build of the project to authenticate the PFX +- copy and paste the password of your PFX as the value of this secret + +NOTE: +- none of those values are visible in the logs of the pipeline, nor are available to anyone outside of the original repository e.g. forks, anonymous clones etc. +- the dynamically created PFX file lives only for the duration of the pipeline execution + +#### Execution + +Follow these steps to trigger the automated GitHub release process: + +1. Bump up the **Package.Identity.Version** in the **Package.appxmanifest** + +2. Make a push commit to your master branch or if you've done the previous change in a feature branch, the merge of the PR to the master branch would act as the push commit + +If the setup was done correctly and there are no errors in the pipeline, when the pipeline successfully completes, there should be a new, properly tagged GitHub release with the msixbundle attached to it. + +NOTE: +- the message of your last commit (head_commit) is used as the required description of the newly created tag, which appears here: + +![Release_1](/ScreenShots/CI-CD_DOCUMENTATION/Release_1.png) + +![Release_2](/ScreenShots/CI-CD_DOCUMENTATION/Release_2.png) + # Built with ❤ by [Pipeline Foundation](https://pipeline.foundation) \ No newline at end of file diff --git a/ScreenShots/CI-CD_DOCUMENTATION/Release_1.png b/ScreenShots/CI-CD_DOCUMENTATION/Release_1.png new file mode 100644 index 0000000000000000000000000000000000000000..0e2947aa7dd223c82dabd793c8548a7a97bc54de GIT binary patch literal 19313 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 literal 0 HcmV?d00001 diff --git a/ScreenShots/CI-CD_DOCUMENTATION/Release_2.png b/ScreenShots/CI-CD_DOCUMENTATION/Release_2.png new file mode 100644 index 0000000000000000000000000000000000000000..bec95602fd2d01a9b8db862b421d6742f0580d48 GIT binary patch literal 9532 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 Date: Fri, 19 Feb 2021 16:24:52 +0200 Subject: [PATCH 179/194] complete Create Release sequence documentation entry --- CI-CD_DOCUMENTATION.md | 8 +++++--- ScreenShots/CI-CD_DOCUMENTATION/Release_1.png | Bin 19313 -> 18738 bytes ScreenShots/CI-CD_DOCUMENTATION/Release_2.png | Bin 9532 -> 23111 bytes 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/CI-CD_DOCUMENTATION.md b/CI-CD_DOCUMENTATION.md index b8d86c2f9..c4a8d1060 100644 --- a/CI-CD_DOCUMENTATION.md +++ b/CI-CD_DOCUMENTATION.md @@ -240,7 +240,7 @@ To add more descriptions, follow these steps: ## 5. Automated GitHub release -This feature automatically bumps up the GitHub tag in the repo, creates a GitHub release with the new tag and attaches the msixbundle to it +Automatically bumps up the GitHub tag in the repo, creates a GitHub release with the new tag and attaches the msixbundle to it #### Setup @@ -262,7 +262,7 @@ Add the following secrets by going to the repo **Settings** tab -> **Secrets**: # read from PFX as binary $PFX_FILE = [IO.File]::ReadAllBytes('absolute_path_to_PFX') # convert to Base64 and write in txt -[System.Convert]::ToBase64String($PFX_FILE) | Out-File 'cert.txt' +[System.Convert]::ToBase64String($PFX_FILE) | Out-File 'absolute_path\cert.txt' ``` - copy the contents of the **cert.txt** and paste as the value of the secret @@ -286,10 +286,12 @@ Follow these steps to trigger the automated GitHub release process: If the setup was done correctly and there are no errors in the pipeline, when the pipeline successfully completes, there should be a new, properly tagged GitHub release with the msixbundle attached to it. NOTE: -- the message of your last commit (head_commit) is used as the required description of the newly created tag, which appears here: +- the tag itself is used as the required description of the newly created tag, which appears here: ![Release_1](/ScreenShots/CI-CD_DOCUMENTATION/Release_1.png) +- it is replaced by the release description + ![Release_2](/ScreenShots/CI-CD_DOCUMENTATION/Release_2.png) # diff --git a/ScreenShots/CI-CD_DOCUMENTATION/Release_1.png b/ScreenShots/CI-CD_DOCUMENTATION/Release_1.png index 0e2947aa7dd223c82dabd793c8548a7a97bc54de..541d7875569939fe61040d7857249cf8e0750b0b 100644 GIT binary patch literal 18738 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 literal 19313 zcmdSA2T)Ysvo4AP5)_b(M9CQh6oxEF&RIZ$BuN58k_YxU~2cK6p`cSq@HDH9RW5@KOt5vi&u z=wV^q24P{{Qo+9id}H1bS`K{N^3+q7$EqBr-vDlK?Bz7&u&}D*?_OHr0`~-96%$V^ zEaFbg|69ForM6gD>UUHXQuri#!_Ln%(0<%pFiPK znB%1K4{}9g^)67}wW5nPd-$y$zfb3rF`|bMAs1>Ex+LN2%AsM3T+9}oHA9ASxTxGX zJju~|lH>T%v7}(5mR!@aqb1lGU3W5l@hOOLEYWLtEIo4sJnX++Hzhv3Re&@N*h=4N z6oCVRVqv|$4Z+5IZoNfeKE6sk1eS`0^_du-81wlF`~T=?sHLgl)uUUO5q{yYfYK05 z<=hOwO@{hYFyB8zJ_Y}4?EfEK4CSGgWm`jcW^S-jgU_s*LrQaZZhFF-qCh^3*o=1> z$;XW~asMjr5jG?_AVi2iXiv`c=Zj|tVpVytqPrU%bKddQf6U&FV zXQu2({v$Lr6pq@>*!z{apM?8wPrCdFEJ@%NR0Hq$Z|K(^2gHxEqQ%CuswxWU8)jJr zpsy+PuF#aR&ZB#Fd7xBOJaTy(*aWKQSRPrRUPLqe$x z1d8m?Vn2f5Zw5eJQ79F}Z~4Iv9WG?{%mi-9+tm=4FP6bm&kQ{M*n^TR>COX3e!nse zGDGswnF3|yA>zVnb~6ghl;v2FW_dJEYl56u(`F0|WxTe)=9jHc@z`0h zQJ5k*A^NN9!iXW`{BkqZ6?9bzF3E0yxt2Aq{iLp#Q-1Pu6(8A#@Bt(_%igASVpfgjgRAd*o=Ce-_5VpqFa*{KS+4hl1MIo;1v!i0Ys1T{u|S2A!PJKJdYZD9KK{V@UWiEL5=f+Dy}o|^{8M)&kTYPRc`s)`KK0~ycZG# z)2=PxY$~l{bF8Oq<1CyW`3(dh!u6hMi$80#gS3C8@&>uBDtdHH=vt>Ho6E>n{-|)k>N%9F>qj5n z9mY?cIPZ8MCIf#t_7*in^P3seX|NRR<9oYG@{x-8{0VmuL_|A~)0k}f+-)@LV0e$C z4v$j++rUp~vOb_}XnQ1WM?XAp^F&I&npES;0Zyx-9GZ{2>iM>=acO27D`Za+BOC`sVnjTk~>y((e zohXZy>LkRbb5;R{nNG1eUsPh86|~qU78Qw1TH2OVF_QU7tZ#y*dE)4kQfrx+SNx8Y z$3@1WbV=JRk%sd;E~Vp$qaxrLe+>SzyQ_ZxbX@p8B*PP32$^dryM`dA>eZJFW`g4O zCuN9O>9`yABn)#Ol)Uo!V=#A~tKf~xi&r+mz-pL|UN!l$6gi~L1(NCsTCma9d4|+9 zHMZhndPd3r$9szd=Buq6))FNup|_A^gdhzH>`z3erQhkk*r0%EnXU>BxE#-rQ zFSFcQkRw8-My`E$ScOBe1jHE+fOCU$V5(fISWH^61r}2aSLFgR82pl6RoBGf#}?y~ z{fx9HgCtL>58g3Y?(f2x+XT}&2S*YOa5fr{|w|yj>a(*rP-$>YM8y|VCLVTpdXd>%WYjSgRXcHLK6ag z1a-HEjh+SbosG04KG;*2n-~Rs3Vd(k=PF-oAhB5fi9zoBTZziZ`pm<a z&|@aXN6V7F>KSfq?h(4pIQEG&HsW{4<$tAswc)6t3s}9$FRtQhwvO0!w4s`*%q=YU zcPQhYLqh1w4exSq!LH$?w`sjy$?;EO(Pz=SXxeo<>@?UL)9J#VtzE0@;xj*$XHLHzcl5;1Mn1WO`iY8?Xi{F@jP%cy znc5!-Op&j!;uKtheK1;rGLAH+jU~R&UO7t6l03x8*EU7g9SZ55A`pAo6YP z$0E9$E3QHN)#wxL$DNQbyX<1pnvkWts$JWo7VzZQ*M)N6R`g2^Hg{Sa`!)o z14uX-tSjgp3M;|&At+6V9Ky;;dV;XiGdjE*Y%6`!aCzP~Izp?vEVHDF7s-@-4N`3u4^0 zGZ{84r0tCyK`{pgxVxv+DvL(5F%7t1Fz^=eQ;B z2}xqd(!Rnub{)w#<{6pYr1Y|3OIo>?5e!7VZksKM9u)HV{86|#hOiDPlHh?l3mL{_ zN_r|WF%O!iTha`WWS`KqzPQ=hVVsJYjoCEW2hrM~AV=At?-}UC*At{z36Jm74`zrX zNY_VtbVHOm%X58h!QbISeVje_eOho-R%gvyi)z2Vvby=rH=b)51;tyXl~=^t#;=aI5yk#QNB{E8@pY=oBPY|5bt_sqpIyU6*0`UIMG@<*G3J02Kv*OFM73O$Tzv*_qsf@YcBTclb(VHt91fS`Huj zr?S_{6ydcmc9O~I@z7NJ24adL(`QBv2BWPx!#OXx2ghu2?St`FQhYdGCh(Z=IZH^b z7jGZJ-%;SXc^aap=Gbxk||+@8Gjh*Zz^kT;d(H> zc^{$0mgOL%V9aGdU)gP}Sj-x4Gd_4X^U1-+nD3+2_r9Oi)QB`a=VI4>9r8$qTcJb*)r=TR=E!j>sG9l*Fa88r$S@qhP z1Hvx#_+P$VnXS6jd*Dox|q3y3^u0=SI?T|m)5IDQAi zY$P20&u?r~QLmA8a0_WM+vO;zd5?rA5xy2Jh8KDIGuaT*$?~Phn=ZAglHjxZ!IH4s zMWujETN4frClMxmf4J2zfw1}@v{F&!rk1??x;Q95=Q)Y1=rXQJO`9eCmk1{!KcAHC z4~(w8c9s)J1;UgV2VUHVAV(}rTxX(fbeFiJy(O*TCVJ`RcbOa@Z>RSUhhkfe+P%5VP5*Q#9K}|0jJkjHx@uy~SQwJTqR9FV z1(v+1|I)}t?p;<`pB&Dm^-Oym1l`3MD8&C8DEC<-7W#+=zbB0u3au=v5vzCiOV=ud zFePP%LJBtf`ZR#o#XxPOsLmmlo(Fv20M}O*~ zq&Ig0&YH3*gk|YIou?sV;>xAShdz$6r zM%XFNs3)s{ZQC8uao8*v?&<4c0-)?t`vtZndc(@i58B#UhGOz`7BR9c!l(HQ*4Y9Ot^-Em%DucrE%fqZ#$NF|qWa+CH@il@DWN(H*EjUogdY@}lvVkxceQo)5fE5FaAP(s znE8B$T9Rdst1Umo2QIU^F9@5ZZGp}8voR~wNIHUa?jC?oUCWvT#D)xTBXHT#xwyHl zfrkZ5MV42SmPNC(X3gmK3y1D#O0wXflR2O9s;lX$e&KSdsjy{Wj0~4g_vuk0l!yg( z4(PXak4~~Lj^iBX1JB##Wv}<*H{5QH-8RtIJLvVF6)z5Z=-hs+e$VC>6cl_YKC9$3 zXgFAQT-G^ptdc?_9+0Ks)5{%w@%S$Y*~}5v z`Qm`g^l)kCvIHn*5h8dvy~4#Tpw{^C^ekh&;Is4)6D3FgfPf9bn|;9zqv+^D+VtXl7iA~(>}V*#|``mEj#6rO47UlS6k^{3K%UT|7N(z5+& zKpWnpSIsDVxf!1!OI;qwtG^^e#qui&v%^z+~<)j==(u!A6c{M*H;(p%JGav43ckt z=xa-}r&nIDx?P7$NJy-U1uu!&(#;xuzUnsk(g4?L6W~am8X0RZA$BAyAc*A^+iY-D z)|$O++n(54#O1s?v?@3M>TR5-#zvUpNH_kIO>S6}Py7tYbH>|C>vt86!LU8|!R}bA*Fi@n;u~4`3iR=bYiq09&Zu)l zAcwD%{k@!nY5MZ2)T#52=~04Ut9Mb`Bn>W3tQH|`AJCOZr9VQAM26{>l8fw{{b-FY znypYM6M!myZe@`NlV22DqOY`vYJtiE^=hTXc*~mVeEikNosZ05!ZMV4f zs|59{HHd)VHy=t}M03z#jqlBD!Jy*rZm*JNR7_Nd%eIH<{^tbBz3YkbqkLCkh=>9w zaou>d;-F)9L7SI+t1R2}&x?{T4&!TOjxI&Bd~N64l_Brm$nfn`MFtd;!T3w0CvOeWl^NpG{xC)=+bKX&++6y8T;eW ztIb(|8Esw#OTwQ!d7RyQ->$reg`^w-&b}{FB(vEil!YTW7gTwlLwfFkWr^&&egm=~ zDR$iQPo9;e$>rP-RvBJzsk8YXuBSA61V@JLBu5b!Rt|y|Arn5onCOB&S;r%m@&@ko zvN^@R=leZRPVZI~ynbo+TNm#4dBoNHN*asm7NR=V3!fOt-mR|3$M4pDRy?aPw862{ zyd}_d%g@>xa=piNlQ=K{6NNzZwc?qmsrNdyf6Vc0UrXy*UlKgc_MMBV2}$(X*ZvdO z7lhWjj9@&lbS6&{Ar+?%T=NzTYJOU0sOZAS>gs3j;Vz_^WNJyJqARYdDeO^5K7;qW z5(c`r7HluQ9jHl=_2M{Hy7t@m=T}u7Tg;mv{(UIApgc*w!IiHj@bnUUZBhGkAfLAN zH*&|WuF8^&qpQpHr7(_}r@6VSWLd9mrc>cz$4%v}DI6PMILv)_g!}l50oxo?n3!wz z+R##IkBn4tu@E#K*h z35U1-{3-0Xx#&purlqA_ezlZ`dOS8i6|ug;`SG&$ZP#wt^OjO&e61liHqN?V1gaLx zM|Xo?dPL=ZrSM6UQDTVD9*+`nlTcT3wRAd;naYYh?W*rjP8pXiLBI1PNj({qIMag9 zsjgi!9MY>p9hN5c?8`WmDy=!6l(g&j_BxKhrRHQp2g`zYmp_#RY+oErtdRyug)ABd ziD(`(M&T%br1Kj#4HB7E@|E|IVXZ>Wq-Lz!k)8D31UK)V{JJ2<8OfB5;6ez+x%2tM zGuMMp9jmWi9=2n>B*$R8a@1$o>tCPcTv@J5Le4oQz^JG4h>gw7{E*X#kOc43dUuO& zgoIGKCyAugVlLlhnha7z5u?+U{#hrV9LPWTnunx2VRnjj0PS`-fXC$v$tBkt|I(0~ zMnQ>tzF1qN{GP&}M=u$7HXK;B1%~S4^UOKT3*uZ%F zLI_82`+M0Q#Nn=Z7disjzA?KLNP^Yp0faS)P<$;rJNB!=j>{Ocd*?>Y?K``z%8h0OmyW+^EJxLA)6YFKELt>n z_UV%b1!nsm#4Ki%z>9dA?EAKpXJnTc=|_>hbE=AhgXkQYgTiqY?fv-=xQbpUW8Z7V z`K|5=H}}3(JWKG=52?za8B0XDgzN;~i>NcOPe4e-I?N^Fdpkdz3?duesu?)(3CO zQ+s_-(dw|J?R=wOv<-e{p!22og|Pn-@0I*7*!KZkqKFMUZlh=ydKDE*)lamPM3m&Q-JfHrZS1sT+{_kR5>!I?0Qr>W#GE32n9S^Z89= zGZ;ayy7sK6qZ?y*%+fAMwYd(Z>{};<@~4f!baDuSiFlFUy<72t=z<^&oq;^V3LC z-&w=pU6Ck}9@=*@F(aHmNUn?*0~hBNDc1sT^}VSv1&g`{!`^s%tN)yG6Hd!?E_?KzT2#E>rr~2DdIPOVR#7khRjdSg(*IX;u<-a!`pKr zr5gmv<*S0L)xr|(V|mh(28C@gfh)0!{zsGuU6ON~sD+jf^Fb%(&2P488DxWD!@1Jx zgXw}N01Tr5Ecs=8ff&YWX;V^Cdfdcq$c3m+`#Ycu>S}FC1-EO*E#{Lwv)sank8fcm zC@t5q>l)m}0$wtNiC(kXz|*r$TERF=PujH&yQTapyMwT=$+X1eEgNP^MV^@%MWLTF zaBv6M_}(RWm3}W11_TNze}}s|1uVC$y*;=6?7Q2TB)aw4+6cTP0NwUn$vz{M_xTtG z1FH8gtf2zW$Kh!t_{+`3vXh@*b}~y0W!w6hS#+TI8u$nqnXn!y$`9HueBZea{9)v{weDLFzs5I2LY=@ppcHohe2p=CAk38eU|Yswpt~0enhM@N%6_; z$CLAd0xz6&+fwR_3yK~2L=+?T6udlj1b5lYR>liBwPjd!N8cf~=H?3I; zF)B(D-W>^VSxAF_XXgor&u9CL+~($?k6U2pY}a?%TkIAtFJKF|^fYyKt>o*p6VKW5 zpewEi;-R;hEWGKZr|zem7kFVqUj6Lcz*AWQ(ov%@&TOQf7KEE`vvDm$Fr`S$LFJ#9Op%rx3RG9L#pDn zZ&pJ@EM(tZJq6cfblj{f$H`6rW6=liCC1ZK!M_GS1ewHcL_7clyFY$J{)+^MGe+nN z%Z3CfPROW=f9ZM)(QmCG`xTS)2EsdhEhC%rTL1+Mlw{xmL(-0uJi>&!fKZU+$&BE) z%$NWZaqB+pQ_msxJxq9tPy7~T`=prZB_`+t0(l(HkH7@aFbR1GHZXhK1|AJ2LI-9* z^gI3EoGODE(a+D7&t8=3b(7`oar=&p6o-_klu~hZOvDCW#>~VZ5FDCyc?IEk#yC>L z&J@+l@|~pl1udVk5Ar&Uj(OxEY`y`70bMqBw4Gf4Cd}W;0kz$(Hs5ZZrDftk-&o&I zdQr>3dV$2E9f16o8BMJR)WgCV{f|(uJaZGj*P>^2qP_LrUa(Fhr}9dk>&^5BJMpTg zP{kVzmJl`w_Si}EzS3HNuBCJ=jb8?7X04-Yw>irKF6cUKLkAwmQF+TaKDwJQS=a6kJ?T zddhaL@UcW)Xz_04#XRdM+v>F_AHJmlcJkA21oLj3V6&=tQ`y5{UfYYE&}wNj&c})1 ztHzZAFb7N&-74>L=RAM%0J>JPVY3wf0(|dqFP2u_Q<4;?M^knRwZ<5ml36Cr#bGg; z8=~R*jEU}vkaFQ*`?}riwP&;LSe;DI19d^mW0!c@T#KAYv@_WX1I&HNCab6AIPW?r z`t-rQ5JA?Ckl_=4E|7o7Ve2|ttKOG^+ae3Wi6i!KK5%QmqRTwrE&=Dx+1UM$lJ9Y+)dLCoF8V(KVNNN zdeS4X@W$_T>q+s!%i0l6C%$AS&f68*y2;*;^WADHgXgPl(5+ClDd@*|61e`5LX{P* zdKJlZhP!wb1OFWRDvWhNIY`iEv!&1Su|deUAVc4csP>TRtF+riJscBSha=i={)&x@ z!`azqj7X$*btj$Fp_ca(64m6;rCtSfSs2X4_^jV%P&~)sbh@p=BCWMn1#%F2^X-&e%eYIvYP>P^o8;uCoW4+qJlN}awwa-8^S~|k`&!Y7$RntR z1K;~?N4R#LSt$u518uBu<_lShZxL+sKl{~wwvuDhO-E;_%#^J|XCcXA{*l_#)g*l5 z9DkMSKI|TA0j@IqzV#ywVS=qLvLIb=!GVR~FnkRfAv+t+(!#OU0~O)9$HBM0kwew< z_Xt;%p_J(dP&Wx9FrR)-pYQ(BK=%2NWB!$b%N=%&RIymQ37UXj?|pwQ+MbEQc)^(Y zj7DEO>=pT-`(3f-3TLHgyNO@Q1W>;}L^kB7*I^ylq{t4PHiHi8%zs3BzzJ$4St)B9 z8Ea~|#v>xKEQopDt|^!sIBEP-Nmw4NLH)G-G*ck@7MZyNIr&XKt-IARYKe1zL`z5G zrLa)yI0t{nCrM^nj*KqyXD|Ye`Li%iyI?n3%QpHB(fYC@=JFi;!@b3+cQV}Hg5u=p zEoF;O%n6`HvLBR-oUfuhHQGj!z$Sb1rhS{cP?*kN&vxguXM_10JpZy{q!(as8IwjJqC8eWNs zy?Sd7^cO#VIUqYwYdktZcaM-4e67dbYn&F(z)wY!bs_o(Dy(hSb#5w61jrymqqBz$ z!DZS5B+75v19$kRKW_+?TQt0D-=AdmFS?;OKV6kPtQ$oCSc3;c&yl|BX_9A~TQxiL zS93Mn`c-Y*<9LF^F$7NOue0M%j(E`nUc+mmvIonI{s&vnm)+YX9&5ZXl~ETw3Nlej zX(Wk&GQ!g&yMz_NHOZerp~&|`%E^(1W8>H{;WC*KNNu7(L3`}KW>i=W3^F~KRDZtl z1wKQUJau%b%gx>~*&N4M>6Sk=->OoA*REDaC#H@NKij0MEq7|8pruOKZaE&cf&1yH z5jG4$3dVS+eva|V+ZtP(dS8Wvq@<-vKb)~9u$Hq%G=a}v)ZYA{F6!Ievpm}uH)-Ff z9{KV60GY7;@w)AYCnWgrOUI*ce&fM6ZH5}o z($s#wa%xPZ89!b*jIH^iF@dNw}XmIC1{FEuq{)Bydn8D1XGw^FSe-iE`LcquwOtDjgE%rI zinmxZUf99_M*L+OL0Y2vb7XS1e>|KvVZ$j|(Cv=Q)pXu$$|v=EQ}LXjz%B8Pwew3^ zWKp-Bu@@-rWEuP*8TFas=m?&?lJR^bIPT}f1nzk*F$O|C^46GAe$>zhLSzbf?Fp^e z|E=r$*Mv{O!uK$6MT6n*4y?waZ14UDdH#o=0q?wH`Nh>V_t=^D-(Bm!K$6B66d!j* z;mV40Y_fP{7^a5saT>>eL>91F2updXsdmisPr_R3Un6=W|C5L4Uj>iqiMxAx-5xZo z-p$zkwM(;SoZ0h;@CuIxKxPjx*lnct?!T4g&|6{sg+65pt`r@oeaf-2Ljd3k)R@wK zDJ#MPdgpt8zy(k}bUi=1_VTc%@i%|VPQ*yv4o{9dSS z*$+%XyP8g7spMeEVjyhA8j`|D6a`4c{pYf0WJ4J#tx4B$*s-oGdtrIlJ;_s*o7;98 zafr~KbLb~Q7MCdc%k?@R?wrik!mnZT(rv0~f~DvW>K5k_k1zL)nAIz1!C8a5)q$n~ z>n`WRB!<7?KhCZYGJ6$BE0d@Xm70XZH)qF=p6zdEMrVM0&)?#Xzl%}&{8XjCq9f0z z!+;@>f1eO)PJMfyyxGf(*HET0wHev2F{frc9}+XoXr`SSfXr8~awYe+Oz?IKK6&Ew zv9ws(^6FVL_hxQLd8pCP_NQx2(7ul@zZ6nadmW70V`7nLO-9Hzy`wF^#2*c?L^M2dq5f+%A#*;A1(%eX>U31uO8G+#fp$ zqpuh&QSLY=uV^2^vz+6Yj+%S_<@iUyVZhGV6dqDq*(LX>I2*v*Nu9WyUyoeB)ymq( zG0wk@^>*kMkT{SU%^E9#B*FRzzT@4<3-HjR3+HBvalIES6RVbPFnGS5W zlBNt=<)>{wz3oz7T0FquHi~|L!#VG=xQ!k16nR5F%BUO_yo+}zY5DTEP5*B=tgFf@oxjKB-L|yW9BH-#m)@KZdsr9DbEPv5oQM+wL z(A<6AXJoX%HQPDf{A8L|CLk-k&ZDFE8-;1U^=_Ul&<1c9pbvL#oz?L65O62JthD@h zGm$`JVXbE9(I}Nx3|NnYzh5^OdnM4*N2$JPiXLS4z!)2#;NTx4G=VC;hotOo2>w_~ zd^3U;XV9es?APnR_6vBcfe8KQt-smg|FI!mw6e`8S&WN3-``kad>VBj_m%UkR`sSg&pa6Aq=IQmQHwN$IGv z=FI16zqZxEfH7dhXJ!Is)WAa-|0JI_a< zjVI5$6)!fq_)Tbscz4J*)_|hPG%7{8DH<2?Y_s3BLX?QikZ3hL zj?%rSRpOST9@(bdr!<2r3?Gu_-JP1gEh$gjH-O?OpXgTsQGE6xN6=)r{0=3$huJqBDQ|i> zU;)%pFL>;9{SxJ}Exg3%my!}tu!r!7h7PiG*q>y4dhulmf8`TpFU9R2Z&qo)F9nVw zg_(8vv0dQ9VuO+n(3R87xfhH1}M&?D_nhJE~kQfK6_3tZpt&fkaRkGUcl*h zB%Xc@f~(K02=RQ}E)3hbIObgxF&NaYn{v#dTUbPQHs|E9%st=~KbGe>yJ#x9NYQU! zyz?aTaav?K@Y=O4>&>KKa$&4qx5bfpPM*Y(ImL4A>~Z_Si{aT~ z?>(H7oja2jUIX>!^hGtrr|QmFzX$;{_eu{u5nutGMqcG>tldn8+i(DuL6z;s&mGY& zrN(}X)SY8|woPj}@68GKz-a#c$?w)lmb0pZTAsgO81!{)QyVs|^p@3}J^cPcT*Vm# zSx}-)x&H(x6uty26l_QszNYLoo|S8Yd$Qmh1^CsFlkciaF?(jyx6$OQ2{H2^+&Qv^ zcq+E?{9^FB3jL+!9;;?cX`a;`O=89Hw!PNH{FUbopOe$*1Z^a7jGy44|s+p@*lE4n!iphnkq9&NghK* zJ>{Jn1*=D{fhOr0M{x|vHQg(_gUBcL$6nS>5Wq%$Uky)0*)-)pl=ay=+w=Jr<=aGB z`9-YsY2eNQt=o^Rxxn`GU(a}tU#Tufnw>kKJ9hZORPL;}omE&TEuEZ)dPclx*UbKU)c?@fD8YxHB`aSW zJiPUEqQJ(Wb^{+8YpZgm`bJgBO)`bEfSd*W;HI(1Bf3?KCpd~-^RW9f9;eZ5GJN9k zz!w_D^2EcD&3w0V&1&_mNE$ddMbecVtVl~*T%u(@S;a4VTZopn~swfgYT~KAw5k_%nEe|o8>2r*YCKEej{Xd zbv?_d9wA4H?=`&^?;KTvMvB{PAIiyU`#2`{iuL0|IpI4s_KFoW+4hUITa(_ybKG0- zY@b;pL+ZCp7=#AY2?YxV2OwEE;&_jE{Aq@AbFpY|$CR`Rw<5`Cm}lCc+N_(aeqY&CI8ck8VS5m6 z8yd;VPwDNNCE72!GQ0i*rPvO&z43gS4ocj zYo^*gO*L?BbLFi2*{;XS*5>`$MoZ?)rQ45uFdkQfK+D(0Jq1 zO!=w{jFQq*>Jn&K3@iMYc9sc_Me%v0snNpyEU!6`JWzd|;kB}(?{WJ$Z0a#6Uq`8p zLAyH#gi1qLYKe?q3f&ZE<>|9^rOB=7F$U za<<(NV6|YXk2LV1NomiduRX!vAe}d!?I|A$bKl!!tj`tkh`TqDC;5>;W&8O8qXy&0 zYU(5%a~u04sc+oNe4xR)d8H1dADLCaM1 z;bv5SBjf}%VP4|BFBV)v(yiQG?RTR&D#x?2a;!&6Z{O)M)BVCAV~XcuYpL(~_=4Pk z$^7QdJJRHk( z46iSxsjgJy!8;C%LZtG)eKhfXAkCF3PjXN-)~|mO>uelM+1=Q-U=1;2FdaFh^Yhoz zxbBwb<`wvB)YPSH$J!LEDwI>`oGrg-kU$%rAW^#emCI!T8La3(WX@72RyP0LIZ!F` z9$I~44^GD+cuf3%1GtefqaidFV~Qr_D4H^(I``>y{B>&rLi zKFxK+P@R4!7gfQxE!?Jr*d0EF2yzyopQ+fxYpiGw$%i;2KeTl2bMS&nN;Nt>U7to8 z`bMb<e=caPvMthnK zQ^x&Y1i1ddc|y-H!IFzL#DGzcKBVB~hlRDd&p)`JIf0tR*#q`u3sC?e^;Y^X8o`Z7 z4AE@$&W`=Hd-HpLs>@ytOm(cGbI^TXy8n-Q7I(OVW@8BC34d`-GG~M5<5imPSHt_z zGAV%3!a!xfn%nY5qJZJr{!?W9ztca=%J8>c@-NgzkxZuK^66J#z_#se0DA+OLg3$h z`hWF2|5qw%Q4UZj3={|(v^R(UoDv(2x)yU( z-x57*zc7Xeb`*N0Rto^nKAOX5iUX*B4Yw3Dt~FEgIt?;edA~2s#+kM#lYe|5#*Iu6 zGu$VM)qXJp#CdU;$3=0J5s9$mtM__Nz+S3CEjYf8$?+*wu5g&Hk(O1*cP2fU6fCw-F6BGaRY$>7XJ;lg%F>YVHn}Di*#`*6 zj>q!sydQ0Yp?z+oj&ahR20HWHh09d@ zN>;9}Mf|pRC>0}PI{IUFxBIiT1Y}?gZIfj=l2WWRcSeeDxUDpqFrILuk*CX1clX!u zSq7^BN7=7n4A9UM>s;^p1hI-bkohT}^Q-r>4_?sF7oSXv)?}`ks`B zI3>msJ|4tOrstVidQ>FWDQ=+K@7RHC8foku@H{9A#piZ3T%inahMKi&-t~?WA>(D0Guay_Qv?V4K~Pv&fA9d7=nFIGqQ&wMRYLPocn{Y; zgJ)#Ec&q|D#WFaQ&?jCe`F?U*E&?dp;^z!6(&!^F!`Jx^WfgYInJuMb2jyRi4A0Zd zZ?VQtZv6S+KK+1tdzUdwYrw5lj#9Et^Bcit_6e%-imOA*JD;h--fh5>>({nGH@A>y zdSRB9S@MOy$3OmMg|Ps&cNSRdpxJeuNrM>O>cdaxcueX7*g4IAjDhlYlU4P?_wIWo zo>|krL+HukrH3V@USC7*Xw9q;IIXuSHSy$EpVJz4EFcvpOV{{m^P<1x6Hm2(m>ypQ|}5X$U)o*whbQLDoz zR`&8Rbqnx$wZ~W(Uhw_{SK@o7Aol`QGmG~J);J~TVk4tu20>Yx1%M8j`3GhZtAF3A zbVVN>o12rdgErj^%YxM{J}I^n z?767IF~CvSieRh?5#m-RZdx8-4k0!Sm;}au{bJ+qpFNxbAkm$W(&9tgOs61Vn1|#T zLh5gq18{-&e{|8SK`?x5ez7s>`AmuU=x}rnSFy(*82hUR7KVW#qo>M@%VsLspL|l= z-X5iO*rEEuw4wiGuJ?TTg1zWttT%>2`r8dD!VTgRx%5ZmuL$RNq6c}HQqauez(}vi z|MhZ#k}$M`8j+wbcmL?%kX`geyz312&?e2)lGa#x&uI?m;^!3YkXos zWtZ3fuyV%plvxKDkomGzoj43sPNM|=a~HZ-rbS0v%d$n=*l0MqLD zpO{w1qD69Y>wQ>WGxoC-Nz1`OxOEyPXEVS!%B|F71wHc6II{u0{QRj& zl+bw3qng*Hut0P@05&r3VJL@ZV2V~eW$k!D5JXC-nu(_9RqkmOzV5ojN?`+3MYr_z z?%*nZrbCB>(%?WcIc&8P+jUOMp8L~{#7gOY603nI7mh;qryNxo`i;o{m4onmpmx|& zY?%6d_iQ~#?XyA=L8KH@L2Sk}s`fJ~bVcpHu>dx}$m9NFYcFpqD_x`7M?oJ@T+#kz zh3N%M3K*6pUr3GJY2W^Fl&TW=(vD&+=#O4TGNVOw6eaBR==}y1^x5D)dJCaNmTt~> zsJ?@#X@Cs)CQP2)6ZH5PVC%5@ZvW%vzjRzEk_1Or^CZ`zR3sc8pmiU#sx~D8(Fp-3 zA4tn01=To48d-a~QPK9yG%Kp~90&y;NN>`l29=i@`XTV4De;31jvoZvl}-Z}@regD zjgL8ihMFY@NI@MrCdJW5hM6cCQgA%``Pc5Mb@;frri;|-iPN}yf>pUxK(<-~u}<(A zDbK95yr#T{ssA0;6I3mXCQW!j!Iz`-RWE5~gO=+=92vdt^#gmid+4LY-c7ILAE52n zm^Z#8nw%?Q^Lf!Z(;N#pN8ba$v%&vuQ{tCfUF^TM+5D-c$eXh1kEY1%@DB1-Uw5+B z)-s!Y#h0J2i~0jU{80SJands)X~`c~&OS9~BY$C0Q?Y*%ZOV~)fscUW$dYWJ#NkyC zkyTb+TD^Yz`&W}RfU7lEdrj?pDl(Pt$N2-9yKNkK_g>cscQpx%U;N7a&+ZjcU-!5& zhZKfgc~~Xxp5eKCM#*Df_0V2HagE}9CP>hm?fS&roq}q0`YT?3W>uN@;6ruoOrQPT zUjE-d&;9sh&x0FG3=V0af(}@&%1)D*CfPPWZq22$6Qw5@8E?`NQO|lj(FeE+5Io}v zY~V33ldpZ5Y2|TepRlIW7dD0oy1={*>=#Trc(Zu1uCs4-3kR@x6$2Kp;G=aIIQmNA z44=?|Q}PuZpWg31KLa#c4w^d$Es58O+vt^qGGJfC-L)d=tW{J*P}Uic%1w+w1A(LV zXa6i(8WOm5o>%zVrA@8fFVF4f?tKcBZ}0)-fS0#a&P<%MG?m}u;zQJF1W<)Qn~7_x h&xF&)KnJ_O^}RWY34f&%fn5s*22WQ%mvv4FO#qw1^eO-V diff --git a/ScreenShots/CI-CD_DOCUMENTATION/Release_2.png b/ScreenShots/CI-CD_DOCUMENTATION/Release_2.png index bec95602fd2d01a9b8db862b421d6742f0580d48..e2a6f783f21f2653d96ab93d3c372325d80bc822 100644 GIT binary patch literal 23111 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 mN1q0iApZzI{uBMplGe|YQS@TXMjpTi%&I6i? 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 Date: Fri, 19 Feb 2021 16:36:00 +0200 Subject: [PATCH 180/194] correct PowerShell name --- CI-CD_DOCUMENTATION.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CI-CD_DOCUMENTATION.md b/CI-CD_DOCUMENTATION.md index c4a8d1060..55874db2c 100644 --- a/CI-CD_DOCUMENTATION.md +++ b/CI-CD_DOCUMENTATION.md @@ -256,7 +256,7 @@ Add the following secrets by going to the repo **Settings** tab -> **Secrets**: 3. **PFX_TO_BASE64** - used to dynamically create the PFX file required for the signing of the **msixbundle** -- use the following Powershell code locally to turn your PFX file into Base64: +- use the following PowerShell code locally to turn your PFX file into Base64: ``` # read from PFX as binary From ed8cdf748c1fe9da2b121106932bcefd7ebcf49b Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Fri, 19 Feb 2021 20:01:15 +0200 Subject: [PATCH 181/194] add the tag itself for its description --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f6f7025ec..4603aa1ec 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -85,7 +85,7 @@ jobs: run: | git config --global user.name $env:GIT_USER_NAME git config --global user.email $env:GIT_USER_EMAIL - git tag -a -m "${{ github.event.head_commit.message }}" $env:NEW_VERSION_TAG + git tag -a -m "$env:NEW_VERSION_TAG" $env:NEW_VERSION_TAG git push --follow-tags env: GIT_USER_NAME: ${{ secrets.GIT_USER_NAME }} From 7ae1fa2f909a19974ceb402250080f5c00bd35a8 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 22 Feb 2021 14:29:15 +0200 Subject: [PATCH 182/194] made all steps in codeql.yml and main.yml per our conventions --- .github/workflows/codeql-analysis.yml | 31 +++++++++++++-------- .github/workflows/main.yml | 40 +++++++++++++-------------- 2 files changed, 38 insertions(+), 33 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 654e339b6..70dd4720e 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -12,10 +12,11 @@ jobs: runs-on: windows-latest strategy: matrix: - configuration: [Debug, Release] + configuration: [ Debug, Release ] env: - Solution_Name: src\Notepads.sln - Project_Path: src\Notepads\Notepads.csproj + SOLUTION_NAME: src\Notepads.sln + PROJECT_PATH: src\Notepads\Notepads.csproj + CONFIGURATION: ${{ matrix.configuration }} steps: - name: Checkout repository @@ -37,10 +38,11 @@ jobs: - name: Restore application id: restore_app - env: - Configuration: ${{ matrix.configuration }} + shell: powershell run: | - msbuild $env:Solution_Name /t:Restore /p:Configuration=$env:Configuration + msbuild $env:SOLUTION_NAME ` + /t:Restore ` + /p:Configuration=$env:CONFIGURATION - name: Initialize CodeQL id: init_codeql @@ -50,13 +52,18 @@ jobs: - name: Build application id: build_app - env: - Appx_Bundle: Always - Appx_Bundle_Platforms: x86|x64 - Appx_Package_Build_Mode: StoreUpload - Configuration: ${{ matrix.configuration }} + shell: powershell run: | - msbuild $env:Project_Path /p:Configuration=$env:Configuration /p:UapAppxPackageBuildMode=$env:Appx_Package_Build_Mode /p:AppxBundle=$env:Appx_Bundle /p:AppxPackageSigningEnabled=false /p:AppxBundlePlatforms="$env:Appx_Bundle_Platforms" + msbuild $env:PROJECT_PATH ` + /p:Configuration=$env:CONFIGURATION ` + /p:UapAppxPackageBuildMode=$env:APPX_PACKAGE_BUILD_MODE ` + /p:AppxBundle=$env:APPX_BUNDLE ` + /p:AppxPackageSigningEnabled=false ` + /p:AppxBundlePlatforms="$env:APPX_BUNDLE_PLATFORMS" + env: + APPX_PACKAGE_BUILD_MODE: StoreUpload + APPX_BUNDLE: Always + APPX_BUNDLE_PLATFORMS: x86|x64 - name: Perform CodeQL Analysis id: analyze_codeql diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 4603aa1ec..dc3bff060 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -15,6 +15,7 @@ jobs: is_github_release: ${{ steps.step_conditionals_handler.outputs.is_github_release }} env: SOLUTION_NAME: src\Notepads.sln + CONFIGURATION: ${{ matrix.configuration }} steps: - name: Steps' conditionals handler id: step_conditionals_handler @@ -158,34 +159,31 @@ jobs: run: | msbuild $env:SOLUTION_NAME ` /t:Restore ` - /p:Configuration=$env:Configuration - env: - Configuration: ${{ matrix.configuration }} + /p:Configuration=$env:CONFIGURATION - name: Build and generate bundles id: build_app shell: powershell run: | msbuild $env:SOLUTION_NAME ` - /p:Platform=$env:Platform ` - /p:Configuration=$env:Configuration ` - /p:UapAppxPackageBuildMode=$env:Uap_Appx_Package_Build_Mode ` - /p:AppxBundle=$env:Appx_Bundle ` - /p:AppxPackageSigningEnabled=$env:Appx_Package_Signing_Enabled ` - /p:AppxBundlePlatforms=$env:Appx_Bundle_Platforms ` - /p:AppxPackageDir=$env:Artifacts_Dir ` - /p:PackageCertificateKeyFile=$env:PackageCertificateKeyFile ` - /p:PackageCertificatePassword=$env:PackageCertificatePassword + /p:Platform=$env:PLATFORM ` + /p:Configuration=$env:CONFIGURATION ` + /p:UapAppxPackageBuildMode=$env:UAP_APPX_PACKAGE_BUILD_MODE ` + /p:AppxBundle=$env:APPX_BUNDLE ` + /p:AppxPackageSigningEnabled=$env:APPX_PACKAGE_SIGNING_ENABLED ` + /p:AppxBundlePlatforms=$env:APPX_BUNDLE_PLATFORMS ` + /p:AppxPackageDir=$env:ARTIFACTS_DIR ` + /p:PackageCertificateKeyFile=$env:PACKAGE_CERTIFICATE_KEYFILE ` + /p:PackageCertificatePassword=$env:PACKAGE_CERTIFICATE_PASSWORD env: - Platform: x64 - Configuration: ${{ matrix.configuration }} - Uap_Appx_Package_Build_Mode: StoreUpload - Appx_Bundle: Always - Appx_Package_Signing_Enabled: ${{ steps.step_conditionals_handler.outputs.is_github_release }} - Appx_Bundle_Platforms: x86|x64 - Artifacts_Dir: ${{ github.workspace }}\Artifacts - PackageCertificateKeyFile: ${{ github.workspace }}\cert.pfx - PackageCertificatePassword: ${{ secrets.PACKAGE_CERTIFICATE_PWD }} + PLATFORM: x64 + UAP_APPX_PACKAGE_BUILD_MODE: StoreUpload + APPX_BUNDLE: Always + APPX_PACKAGE_SIGNING_ENABLED: ${{ steps.step_conditionals_handler.outputs.is_github_release }} + APPX_BUNDLE_PLATFORMS: x86|x64 + ARTIFACTS_DIR: ${{ github.workspace }}\Artifacts + PACKAGE_CERTIFICATE_KEYFILE: ${{ github.workspace }}\cert.pfx + PACKAGE_CERTIFICATE_PASSWORD: ${{ secrets.PACKAGE_CERTIFICATE_PWD }} - if: steps.step_conditionals_handler.outputs.is_not_pr == 'true' name: Send SonarCloud results From f753af0e1a86b36474e247bb56cc41af461dcec9 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 22 Feb 2021 14:32:30 +0200 Subject: [PATCH 183/194] made all steps in codeql.yml and main.yml per our conventions --- .github/workflows/codeql-analysis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 70dd4720e..9879b4dd7 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -17,7 +17,6 @@ jobs: SOLUTION_NAME: src\Notepads.sln PROJECT_PATH: src\Notepads\Notepads.csproj CONFIGURATION: ${{ matrix.configuration }} - steps: - name: Checkout repository id: checkout_repo From 94feaba8c02ecfc4a5435ec8e88c12ab3f5d378d Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Mon, 22 Feb 2021 16:33:58 +0200 Subject: [PATCH 184/194] decrease the complexity of the CSABD setup and update documentation for all entries --- .github/workflows/csa-bulk-dismissal.yml | 4 +- CI-CD_DOCUMENTATION.md | 129 ++++++++---------- .../CI-CD_DOCUMENTATION/SonarCloud_1.png | Bin 0 -> 11226 bytes 3 files changed, 61 insertions(+), 72 deletions(-) create mode 100644 ScreenShots/CI-CD_DOCUMENTATION/SonarCloud_1.png diff --git a/.github/workflows/csa-bulk-dismissal.yml b/.github/workflows/csa-bulk-dismissal.yml index 40b3c066a..5618dbbdf 100644 --- a/.github/workflows/csa-bulk-dismissal.yml +++ b/.github/workflows/csa-bulk-dismissal.yml @@ -11,8 +11,8 @@ jobs: ALERT_DESC: ['"Calls to unmanaged code"', '"Unmanaged code"'] env: # Settings - OWNER: ${{ secrets.REPO_OWNER_VAR }} # verbatim from URL - PROJECT_NAME: ${{ secrets.REPO_NAME_VAR }} # verbatim from URL + OWNER: ${{ github.repository_owner }} # verbatim from URL + PROJECT_NAME: ${{ github.event.repository.name }} # verbatim from URL ACCESS_TOKEN: ${{ secrets.CSA_ACCESS_TOKEN }} # requires security_events read/write permissions DISMISS_REASON: ${{ secrets.DISMISS_REASON_VAR }} # "false positive", "won't fix" or "used in tests". ALERTS_PER_PAGE: 100 diff --git a/CI-CD_DOCUMENTATION.md b/CI-CD_DOCUMENTATION.md index 55874db2c..d97b8ed79 100644 --- a/CI-CD_DOCUMENTATION.md +++ b/CI-CD_DOCUMENTATION.md @@ -1,12 +1,11 @@ # Notepads CI/CD documentation -* after merging the PR, the first run of the main workflow will not complete successfully, because it requires specific setup explained in this documentation +* after merging the PR, the first run of the "Notepads CI/CD Pipeline" workflow will not complete successfully, because it requires specific setup explained in this documentation. The two other workflows "CodeQL Analysis" and "Build", should complete successfully. -# ## 1. Set up SonarCloud ### SonarCloud is a cloud-based code quality and security service -#### Create your SonarCloud project +#### Create SonarCloud project - Go to https://sonarcloud.io/ @@ -16,61 +15,53 @@ - From the dropdown select "Create new Organization" -- Click the "Choose an organization on Github" button +- Click the "Choose an organization on GitHub" button -- Select an account for your organization setup +- Select an account for the organization setup - On Repository Access select "Only select repositories" and select the project and click the "Save" button -- On the "Create organization page" don't change your Key and click "Continue" +- On the "Create organization page" don't change the Key and click "Continue" -- Select the Free plan then click the "Create Organization" button to finalize the creation of your Organization +- Select the Free plan then click the "Create Organization" button to finalize the creation of the Organization #### Configure SonarCloud project -- From the dropdown select "Analyze new project" - -- Select the project and click "Set Up" button at the top right corner - -- Under the "Choose another analysis method" sign click the "With Github Actions" sign +- At the top right corner click the "+" sign and select "Analyze new project" -- Copy the Name of the token and the Value and use them on step "16" +- Select the project and click the "Set Up" button in the box on the right -- To Create a secret on GitHub click the fast forward button Settings>Secrets +- Under "Choose your analysis method" click "With GitHub Actions" and **keep the following page open** -- Then click "New Repository secret" +- In new tab, go to https://github.com/settings/tokens (Profile Settings -> Developer settings -> Personal access tokens) -- Enter the "Name" and the "Value" and click Add Secret +- Click on "Generate new token", set a name for the token, select **repo_deployment** and **read:packages** permissions, at the bottom of the page click on **Generate token** and copy the value of the generated token -- Go to https://github.com/settings/tokens and click " Personal access tokens" +- In the project's GitHub repository, go to the **Settings** tab -> Secrets -- Click on "Generate new token" set the name for the token and select **repo_deployment** and **read:packages** +- Click on **New Repository secret** and create a new secret with the name **SONAR_GITHUB_TOKEN** and the token you just copied as the value -- Scroll down and select **Generate token** +- Create another secret with the two values from the SonarCloud page you kept open, which you can close after completing this step -- Coppy the token and create another Secret +![SonarCloud_1](/ScreenShots/CI-CD_DOCUMENTATION/SonarCloud_1.png) -- Set the name of the token **SONAR_GITHUB_TOKEN** and paste the value from the generated token - -- Run manually your workflow one time to deliver the code to SonarCloud - - NOTE: Make sure first run is completed successfully before proceeding +- [Run the "Notepads CI/CD Pipeline" workflow manually](#run-workflow-manually) #### Set Quality Gate -- Go to the Project page +- After the "Notepads CI/CD Pipeline" workflow has executed successfully, go to https://sonarcloud.io/projects and click on the project -- Click the "Set new code definition" button and select "Previous version" +- In the alert bar above the results, click the "Set new code definition" button and select "Previous version" (notice the "New Code definition has been updated" alert at the top) -- Manually run the workflow and there you have set a Quality gate +- The Quality Gate will become active as soon as the next SonarCloud scan completes successfully
## 2. Run workflow manually -Once you've set up all the steps above correctly, you should be able to successfully complete a manual execution of the main workflow "Notepads CI/CD Pipeline". +Once you've set up all the steps above correctly, you should be able to successfully complete a manual execution of the "Notepads CI/CD Pipeline" workflow. - 1. Go to GitHub project -> "Actions" tab + 1. Go to the project's GitHub repository and click on the **Actions** tab 2. From the "Workflows" list on the left, click on "Notepads CI/CD Pipeline" @@ -97,9 +88,9 @@ Dependabot is a GitHub native security tool that goes through the dependencies i ### Set up security alerts and updates ##### - GitHub, through Dependabot, also natively offers a security check for vulnerable dependencies -1. Go to "Settings" tab of your repo +1. Go to "Settings" tab of the repo -2. Go to "Security&Analysis" section +2. Go to "Security & analysis" section 3. Click "Enable" for both "Dependabot alerts" and "Dependabot security updates" @@ -116,7 +107,7 @@ Dependabot is a GitHub native security tool that goes through the dependencies i ### Set up Dependency graph ##### - The "Dependency graph" option should be enabled by default for all public repos, but in case it isn't: -1. Go to "Settings" tab of your repo +1. Go to "Settings" tab of the repo 2. Go to "Security&Analysis" section @@ -134,9 +125,9 @@ NOTE: **screenshots are only exemplary** CodeQL is GitHub's own industry-leading semantic code analysis engine. CodeQL requires no setup, because it comes fully pre-configured by us. -To activate it and see its results, only a push commit or a merge of a PR to the default branch of your repository, is required. +To activate it and see its results, only a push commit or a merge of a PR to the default branch of the repository, is required. -We've also configured CodeQL to run on schedule, so every day at 8:00AM UTC, it automatically tests the code. +We've also configured CodeQL to run on schedule, so every day at 8:00AM UTC, it automatically scans the code. - you can see the results here at **Security** tab -> **Code scanning alerts** -> **CodeQL**: @@ -153,49 +144,19 @@ NOTE: This tool executes manual **only**. It won't execute on any other GitHub e #### 1. Setup -1. In your repo, go to the Settings tab -> Secrets +1. In the repository, go to the **Settings** tab -> **Secrets** ![CSA_secrets](/ScreenShots/CI-CD_DOCUMENTATION/CSA_secrets.png) -2. Add the following secrets with the name and the corresponding value, by at the upper right of the section, clicking on the **New repository secret** button : +2. Add the following secrets with the name and the corresponding value, by at the upper right of the section, clicking on the **New repository secret** button: ![CSA_new_secret](/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_secret.png) ![CSA_secret_add](/ScreenShots/CI-CD_DOCUMENTATION/CSA_secret_add.png) -- REPO_OWNER_VAR (secret name) - add repo owner's name, verbatim from GitHub URL (secret value) - -![CSA_url_owner](/ScreenShots/CI-CD_DOCUMENTATION/CSA_url_owner.png) - -- REPO_NAME_VAR - add repo's name, verbatim from GitHub URL - -![CSA_url_repo](/ScreenShots/CI-CD_DOCUMENTATION/CSA_url_repo.png) - -- CSA_ACCESS_TOKEN - add a PAT with "security_events" permission. - - 1. In a new tab open GitHub, at the top right corner, click on your profile picture and click on **Settings** from the dropdown. - - ![CSA_new_pat_1](/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_1.png) - - 2. Go to Developer Settings -> Personal access tokens. - - ![CSA_new_pat_2](/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_2.png) - - ![CSA_new_pat_3](/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_3.png) - - 3. Click the **Generate new token** button and enter password if prompted. - - ![CSA_new_pat_4](/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_4.png) - - 4. Name the token "CSA_ACCESS_TOKEN". From the permissions list, choose only "security_events", and at the bottom click on the **Generate token** button. - - ![CSA_new_pat_5](/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_5.png) +- CSA_ACCESS_TOKEN - create a [PAT with "security_events" permission only](#how-to-create-a-pat). - 5. Copy the token value and paste it in the secret "CSA_ACCESS_TOKEN", you created in the previous tab. - - ![CSA_new_pat_6](/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_6.png) - -- DISMISS_REASON_VAR - this secret refers to the reason why you dismissed the code scanning alert. Use the appropriate one, out of the three available options: "false positive", "won't fix" or "used in tests". (copy the option value **without** the quotes) +- DISMISS_REASON_VAR - this secret refers to the reason why you dismissed the code scanning alert. Use the appropriate one as the value of this secret, out of the three available options: **false positive**, **won't fix** or **used in tests**. #### 2. Execution @@ -207,7 +168,7 @@ NOTE: This tool executes manual **only**. It won't execute on any other GitHub e ![CSA_execute_2](/ScreenShots/CI-CD_DOCUMENTATION/CSA_execute_2.png) -3. If everything was set up currently in the "Setup" phase, the "Code scanning alerts bulk dismissal" workflow is going to be executed successfully, which after some time, would result in **all** previously open code scanning alerts be dismissed +3. If everything was set up currently in the "Setup" phase, the "Code scanning alerts bulk dismissal" workflow is going to be executed successfully, which after some time, would result in **all** previously open code scanning alerts, with a certain description be dismissed ![CSA_execute_3](/ScreenShots/CI-CD_DOCUMENTATION/CSA_execute_3.png) @@ -294,6 +255,34 @@ NOTE: ![Release_2](/ScreenShots/CI-CD_DOCUMENTATION/Release_2.png) +
+ +## 6. How to create a PAT + +- In a new tab open GitHub, at the top right corner, click on your profile picture and click on **Settings** from the dropdown. + + ![CSA_new_pat_1](/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_1.png) + +- Go to Developer Settings -> Personal access tokens. + + ![CSA_new_pat_2](/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_2.png) + + ![CSA_new_pat_3](/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_3.png) + +- Click the **Generate new token** button and enter password if prompted. + + ![CSA_new_pat_4](/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_4.png) + +- Name the token, from the permissions list choose the ones needed and at the bottom click on the **Generate token** button. + + ![CSA_new_pat_5](/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_5.png) + +- Copy the token value and paste it wherever its needed + + ![CSA_new_pat_6](/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_6.png) + +NOTE: once you close or refresh the page, you won't be able to copy the value of the PAT again! + # Built with ❤ by [Pipeline Foundation](https://pipeline.foundation) \ No newline at end of file diff --git a/ScreenShots/CI-CD_DOCUMENTATION/SonarCloud_1.png b/ScreenShots/CI-CD_DOCUMENTATION/SonarCloud_1.png new file mode 100644 index 0000000000000000000000000000000000000000..e2913c9fc467206244f824029b419c020db6a355 GIT binary patch literal 11226 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 Date: Mon, 22 Feb 2021 16:40:47 +0200 Subject: [PATCH 185/194] link Configure SonarCloud project PAT creation step to 'How to create a PAT' entry --- CI-CD_DOCUMENTATION.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/CI-CD_DOCUMENTATION.md b/CI-CD_DOCUMENTATION.md index d97b8ed79..3175c6398 100644 --- a/CI-CD_DOCUMENTATION.md +++ b/CI-CD_DOCUMENTATION.md @@ -33,9 +33,7 @@ - Under "Choose your analysis method" click "With GitHub Actions" and **keep the following page open** -- In new tab, go to https://github.com/settings/tokens (Profile Settings -> Developer settings -> Personal access tokens) - -- Click on "Generate new token", set a name for the token, select **repo_deployment** and **read:packages** permissions, at the bottom of the page click on **Generate token** and copy the value of the generated token +- [Create a new PAT with **repo_deployment** and **read:packages** permissions](#how-to-create-a-pat) and copy the value of the generated token - In the project's GitHub repository, go to the **Settings** tab -> Secrets From 7b1b929747015f687965a830f770317ebb88cda6 Mon Sep 17 00:00:00 2001 From: Aleksandar Ivanov <74899441+aleks-ivanov@users.noreply.github.com> Date: Mon, 22 Feb 2021 16:52:26 +0200 Subject: [PATCH 186/194] Update CI-CD_DOCUMENTATION.md --- CI-CD_DOCUMENTATION.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CI-CD_DOCUMENTATION.md b/CI-CD_DOCUMENTATION.md index 3175c6398..743f4174c 100644 --- a/CI-CD_DOCUMENTATION.md +++ b/CI-CD_DOCUMENTATION.md @@ -33,7 +33,7 @@ - Under "Choose your analysis method" click "With GitHub Actions" and **keep the following page open** -- [Create a new PAT with **repo_deployment** and **read:packages** permissions](#how-to-create-a-pat) and copy the value of the generated token +- [Create a new PAT with **repo_deployment** and **read:packages** permissions](#How-to-create-a-PAT) and copy the value of the generated token - In the project's GitHub repository, go to the **Settings** tab -> Secrets @@ -283,4 +283,4 @@ NOTE: once you close or refresh the page, you won't be able to copy the value of # -Built with ❤ by [Pipeline Foundation](https://pipeline.foundation) \ No newline at end of file +Built with ❤ by [Pipeline Foundation](https://pipeline.foundation) From 205a57b797d12a27ede679adebd43631e888171d Mon Sep 17 00:00:00 2001 From: Aleksandar Ivanov <74899441+aleks-ivanov@users.noreply.github.com> Date: Mon, 22 Feb 2021 16:54:06 +0200 Subject: [PATCH 187/194] Update CI-CD_DOCUMENTATION.md --- CI-CD_DOCUMENTATION.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CI-CD_DOCUMENTATION.md b/CI-CD_DOCUMENTATION.md index 743f4174c..4f00b4ef8 100644 --- a/CI-CD_DOCUMENTATION.md +++ b/CI-CD_DOCUMENTATION.md @@ -33,7 +33,7 @@ - Under "Choose your analysis method" click "With GitHub Actions" and **keep the following page open** -- [Create a new PAT with **repo_deployment** and **read:packages** permissions](#How-to-create-a-PAT) and copy the value of the generated token +- [Create a new PAT with **repo_deployment** and **read:packages** permissions](#6-how-to-create-a-pat) and copy the value of the generated token - In the project's GitHub repository, go to the **Settings** tab -> Secrets @@ -43,7 +43,7 @@ ![SonarCloud_1](/ScreenShots/CI-CD_DOCUMENTATION/SonarCloud_1.png) -- [Run the "Notepads CI/CD Pipeline" workflow manually](#run-workflow-manually) +- [Run the "Notepads CI/CD Pipeline" workflow manually](#2-run-workflow-manually) #### Set Quality Gate @@ -152,7 +152,7 @@ NOTE: This tool executes manual **only**. It won't execute on any other GitHub e ![CSA_secret_add](/ScreenShots/CI-CD_DOCUMENTATION/CSA_secret_add.png) -- CSA_ACCESS_TOKEN - create a [PAT with "security_events" permission only](#how-to-create-a-pat). +- CSA_ACCESS_TOKEN - create a [PAT with "security_events" permission only](#6-how-to-create-a-pat). - DISMISS_REASON_VAR - this secret refers to the reason why you dismissed the code scanning alert. Use the appropriate one as the value of this secret, out of the three available options: **false positive**, **won't fix** or **used in tests**. From c4cc3912a97d7df887420f8ddebef4656e1907d5 Mon Sep 17 00:00:00 2001 From: Aleksandar Ivanov <74899441+aleks-ivanov@users.noreply.github.com> Date: Mon, 22 Feb 2021 16:55:28 +0200 Subject: [PATCH 188/194] Update CI-CD_DOCUMENTATION.md --- CI-CD_DOCUMENTATION.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CI-CD_DOCUMENTATION.md b/CI-CD_DOCUMENTATION.md index 4f00b4ef8..823e844fa 100644 --- a/CI-CD_DOCUMENTATION.md +++ b/CI-CD_DOCUMENTATION.md @@ -152,7 +152,7 @@ NOTE: This tool executes manual **only**. It won't execute on any other GitHub e ![CSA_secret_add](/ScreenShots/CI-CD_DOCUMENTATION/CSA_secret_add.png) -- CSA_ACCESS_TOKEN - create a [PAT with "security_events" permission only](#6-how-to-create-a-pat). +- CSA_ACCESS_TOKEN - [create a PAT with "security_events" permission only](#6-how-to-create-a-pat). - DISMISS_REASON_VAR - this secret refers to the reason why you dismissed the code scanning alert. Use the appropriate one as the value of this secret, out of the three available options: **false positive**, **won't fix** or **used in tests**. From 27b4e2b3b7fd5b8480132ea32c0faee1bf97860e Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Tue, 23 Feb 2021 14:16:04 +0200 Subject: [PATCH 189/194] switch shell:powershell to pwsh --- .github/workflows/codeql-analysis.yml | 4 ++-- .github/workflows/main.yml | 22 +++++++++++----------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 9879b4dd7..701f74b99 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -37,7 +37,7 @@ jobs: - name: Restore application id: restore_app - shell: powershell + shell: pwsh run: | msbuild $env:SOLUTION_NAME ` /t:Restore ` @@ -51,7 +51,7 @@ jobs: - name: Build application id: build_app - shell: powershell + shell: pwsh run: | msbuild $env:PROJECT_PATH ` /p:Configuration=$env:CONFIGURATION ` diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index dc3bff060..7e85d9bc8 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -19,7 +19,7 @@ jobs: steps: - name: Steps' conditionals handler id: step_conditionals_handler - shell: powershell + shell: pwsh run: | $IS_GITHUB_RELEASE = 'false' $IS_NOT_PR = 'true' @@ -61,7 +61,7 @@ jobs: - if: steps.step_conditionals_handler.outputs.is_github_release == 'true' name: Get assembly version from appxmanifest id: get_assembly_version - shell: powershell + shell: pwsh run: | cd src/Notepads/ $xml = [xml](Get-Content Package.appxmanifest) @@ -72,7 +72,7 @@ jobs: - if: steps.step_conditionals_handler.outputs.is_github_release == 'true' name: Get latest tag id: get_latest_tag - shell: powershell + shell: pwsh run: | $LATEST_TAG = git -c 'versionsort.suffix=-' ls-remote --exit-code --refs --sort='version:refname' --tags "https://github.com/$env:GIT_URL.git" '*.*.*' | tail --lines=1 | cut --delimiter='/' --fields=3 echo "::set-output name=tag::$(echo $LATEST_TAG)" @@ -82,7 +82,7 @@ jobs: - if: steps.step_conditionals_handler.outputs.is_github_release == 'true' && steps.get_assembly_version.outputs.version_tag != steps.get_latest_tag.outputs.tag name: Add new tag to repo id: add_new_tag_to_repo - shell: powershell + shell: pwsh run: | git config --global user.name $env:GIT_USER_NAME git config --global user.email $env:GIT_USER_EMAIL @@ -114,7 +114,7 @@ jobs: - if: steps.step_conditionals_handler.outputs.is_not_pr == 'true' && steps.cache_sonar_scanner.outputs.cache-hit != 'true' name: Install SonarCloud scanner id: install_sonar_scanner - shell: powershell + shell: pwsh run: | New-Item -Path .\.sonar\scanner -ItemType Directory dotnet tool update dotnet-sonarscanner --tool-path .\.sonar\scanner @@ -122,7 +122,7 @@ jobs: - if: steps.step_conditionals_handler.outputs.is_not_pr == 'true' name: Lowercase string generator id: lowercase_string_gen - shell: powershell + shell: pwsh run: | $LOWERCASE_OWNER = "${{ github.repository_owner }}".ToLower() echo "::set-output name=owner_name::$LOWERCASE_OWNER" @@ -130,7 +130,7 @@ jobs: - if: steps.step_conditionals_handler.outputs.is_not_pr == 'true' name: Initialize SonarCloud scanner id: init_sonar_scanner - shell: powershell + shell: pwsh run: | .\.sonar\scanner\dotnet-sonarscanner begin ` /k:"${{ github.repository_owner }}_${{ github.event.repository.name }}" ` @@ -143,7 +143,7 @@ jobs: - if: steps.step_conditionals_handler.outputs.is_github_release == 'true' name: Create PFX certificate for AppxBundle id: create_pfx_cert - shell: powershell + shell: pwsh run: | $BASE64_STR = $env:BASE64_STR $TARGET_FILE = "$env:DEFAULT_DIR\cert.pfx" @@ -155,7 +155,7 @@ jobs: - name: Restore the application id: restore_application - shell: powershell + shell: pwsh run: | msbuild $env:SOLUTION_NAME ` /t:Restore ` @@ -163,7 +163,7 @@ jobs: - name: Build and generate bundles id: build_app - shell: powershell + shell: pwsh run: | msbuild $env:SOLUTION_NAME ` /p:Platform=$env:PLATFORM ` @@ -188,7 +188,7 @@ jobs: - if: steps.step_conditionals_handler.outputs.is_not_pr == 'true' name: Send SonarCloud results id: send_sonar_results - shell: powershell + shell: pwsh run: | .\.sonar\scanner\dotnet-sonarscanner end ` /d:sonar.login="${{ secrets.SONAR_TOKEN }}" From 9a0df5d4f447d857c9a6b5464136dcf20c510c62 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Thu, 25 Feb 2021 17:24:53 +0200 Subject: [PATCH 190/194] add owner's requested changes --- .github/workflows/codeql-analysis.yml | 2 +- .github/workflows/main.yml | 26 ++++++------- CI-CD_DOCUMENTATION.md | 56 +++++++++++++-------------- 3 files changed, 42 insertions(+), 42 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 701f74b99..d2426cbcd 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -12,7 +12,7 @@ jobs: runs-on: windows-latest strategy: matrix: - configuration: [ Debug, Release ] + configuration: [ Production ] env: SOLUTION_NAME: src\Notepads.sln PROJECT_PATH: src\Notepads\Notepads.csproj diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 7e85d9bc8..32b957050 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -7,12 +7,12 @@ jobs: runs-on: windows-latest strategy: matrix: - configuration: [ Debug, Release ] + configuration: [ Production ] outputs: new_version: ${{ steps.get_assembly_version.outputs.version_num }} new_version_tag: ${{ steps.get_assembly_version.outputs.version_tag }} latest_tag: ${{ steps.get_latest_tag.outputs.tag }} - is_github_release: ${{ steps.step_conditionals_handler.outputs.is_github_release }} + is_push_to_master: ${{ steps.step_conditionals_handler.outputs.is_push_to_master }} env: SOLUTION_NAME: src\Notepads.sln CONFIGURATION: ${{ matrix.configuration }} @@ -21,15 +21,15 @@ jobs: id: step_conditionals_handler shell: pwsh run: | - $IS_GITHUB_RELEASE = 'false' + $IS_PUSH_TO_MASTER = 'false' $IS_NOT_PR = 'true' - if ( ($env:GITHUB_EVENT_NAME -ceq 'push') -and ($env:GITHUB_REF -ceq 'refs/heads/master') -and ($env:BUILD_CONFIGURATION -ceq 'Release') ) { - $IS_GITHUB_RELEASE = 'true' + if ( ($env:GITHUB_EVENT_NAME -ceq 'push') -and ($env:GITHUB_REF -ceq 'refs/heads/master') ) { + $IS_PUSH_TO_MASTER = 'true' } if ( $env:GITHUB_EVENT_NAME -ceq 'pull_request' ) { $IS_NOT_PR = 'false' } - echo "::set-output name=is_github_release::$(echo $IS_GITHUB_RELEASE)" + echo "::set-output name=is_push_to_master::$(echo $IS_PUSH_TO_MASTER)" echo "::set-output name=is_not_pr::$(echo $IS_NOT_PR)" env: GITHUB_EVENT_NAME: ${{ github.event_name }} @@ -58,7 +58,7 @@ jobs: fetch-depth: 50 token: ${{ secrets.GITHUB_TOKEN }} - - if: steps.step_conditionals_handler.outputs.is_github_release == 'true' + - if: steps.step_conditionals_handler.outputs.is_push_to_master == 'true' name: Get assembly version from appxmanifest id: get_assembly_version shell: pwsh @@ -69,7 +69,7 @@ jobs: echo "::set-output name=version_num::$(echo $ASSEMBLY_VERSION_NUMBER)" echo "::set-output name=version_tag::$(echo v"$ASSEMBLY_VERSION_NUMBER")" - - if: steps.step_conditionals_handler.outputs.is_github_release == 'true' + - if: steps.step_conditionals_handler.outputs.is_push_to_master == 'true' name: Get latest tag id: get_latest_tag shell: pwsh @@ -79,7 +79,7 @@ jobs: env: GIT_URL: ${{ github.repository }} - - if: steps.step_conditionals_handler.outputs.is_github_release == 'true' && steps.get_assembly_version.outputs.version_tag != steps.get_latest_tag.outputs.tag + - if: steps.step_conditionals_handler.outputs.is_push_to_master == 'true' && steps.get_assembly_version.outputs.version_tag != steps.get_latest_tag.outputs.tag name: Add new tag to repo id: add_new_tag_to_repo shell: pwsh @@ -140,7 +140,7 @@ jobs: env: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - - if: steps.step_conditionals_handler.outputs.is_github_release == 'true' + - if: steps.step_conditionals_handler.outputs.is_push_to_master == 'true' name: Create PFX certificate for AppxBundle id: create_pfx_cert shell: pwsh @@ -179,7 +179,7 @@ jobs: PLATFORM: x64 UAP_APPX_PACKAGE_BUILD_MODE: StoreUpload APPX_BUNDLE: Always - APPX_PACKAGE_SIGNING_ENABLED: ${{ steps.step_conditionals_handler.outputs.is_github_release }} + APPX_PACKAGE_SIGNING_ENABLED: ${{ steps.step_conditionals_handler.outputs.is_push_to_master }} APPX_BUNDLE_PLATFORMS: x86|x64 ARTIFACTS_DIR: ${{ github.workspace }}\Artifacts PACKAGE_CERTIFICATE_KEYFILE: ${{ github.workspace }}\cert.pfx @@ -196,7 +196,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.SONAR_GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - - if: steps.step_conditionals_handler.outputs.is_github_release == 'true' + - if: steps.step_conditionals_handler.outputs.is_push_to_master == 'true' name: Upload build artifacts id: upload_artifacts uses: actions/upload-artifact@v1 @@ -206,7 +206,7 @@ jobs: cd: # "This job will execute when the workflow is triggered on a 'push event', the target branch is 'master' and the commit is intended to be a release." - if: needs.ci.outputs.is_github_release == 'true' && needs.ci.outputs.new_version_tag != needs.ci.outputs.latest_tag + if: needs.ci.outputs.is_push_to_master == 'true' && needs.ci.outputs.new_version_tag != needs.ci.outputs.latest_tag needs: ci runs-on: windows-latest env: diff --git a/CI-CD_DOCUMENTATION.md b/CI-CD_DOCUMENTATION.md index 823e844fa..5a95ddbd6 100644 --- a/CI-CD_DOCUMENTATION.md +++ b/CI-CD_DOCUMENTATION.md @@ -41,7 +41,7 @@ - Create another secret with the two values from the SonarCloud page you kept open, which you can close after completing this step -![SonarCloud_1](/ScreenShots/CI-CD_DOCUMENTATION/SonarCloud_1.png) +![SonarCloud_1](ScreenShots/CI-CD_DOCUMENTATION/SonarCloud_1.png) - [Run the "Notepads CI/CD Pipeline" workflow manually](#2-run-workflow-manually) @@ -65,7 +65,7 @@ Once you've set up all the steps above correctly, you should be able to successf 3. On the right, next to the "This workflow has a workflow_dispatch event trigger" label, click on the "Run workflow" dropdown, make sure the default branch is selected (if not manually changed, should be main or master) in the "Use workflow from" dropdown and click the "Run workflow" button -![Actions_workflow_dispatch](/ScreenShots/CI-CD_DOCUMENTATION/Actions_workflow_dispatch.png) +![Actions_workflow_dispatch](ScreenShots/CI-CD_DOCUMENTATION/Actions_workflow_dispatch.png) 4. Once the workflow run has completed successfully, move on to the next step of the documentation @@ -79,9 +79,9 @@ Dependabot is a GitHub native security tool that goes through the dependencies i - for PRs with version updates, this pipeline comes pre-configured for all current dependency sources in the project, so at "Insights" tab -> "Dependency graph" -> "Dependabot", you should be able to see all tracked sources of dependencies, when they have been checked last and view a full log of the last check -![Dependabot_tab](/ScreenShots/CI-CD_DOCUMENTATION/Dependabot_tab.png) +![Dependabot_tab](ScreenShots/CI-CD_DOCUMENTATION/Dependabot_tab.png) -![Dependabot_log_page](/ScreenShots/CI-CD_DOCUMENTATION/Dependabot_log_page.png) +![Dependabot_log_page](ScreenShots/CI-CD_DOCUMENTATION/Dependabot_log_page.png) ### Set up security alerts and updates ##### - GitHub, through Dependabot, also natively offers a security check for vulnerable dependencies @@ -94,13 +94,13 @@ Dependabot is a GitHub native security tool that goes through the dependencies i - By enabling "Dependabot alerts", you would be notified for any vulnerable dependencies in the project. At "Security" tab -> "Dependabot alerts", you can manage all alerts. By clicking on an alert, you would be able to see a detailed explanation of the vulnerability and a viable solution. -![Dependabot_alerts_page](/ScreenShots/CI-CD_DOCUMENTATION/Dependabot_alerts_page.png) +![Dependabot_alerts_page](ScreenShots/CI-CD_DOCUMENTATION/Dependabot_alerts_page.png) -![Dependabot_alert_page](/ScreenShots/CI-CD_DOCUMENTATION/Dependabot_alert_page.png) +![Dependabot_alert_page](ScreenShots/CI-CD_DOCUMENTATION/Dependabot_alert_page.png) - By enabling "Dependabot security updates", you authorize Dependabot to create PRs specifically for **security updates** -![Dependabot_PRs](/ScreenShots/CI-CD_DOCUMENTATION/Dependabot_PRs.png) +![Dependabot_PRs](ScreenShots/CI-CD_DOCUMENTATION/Dependabot_PRs.png) ### Set up Dependency graph ##### - The "Dependency graph" option should be enabled by default for all public repos, but in case it isn't: @@ -113,7 +113,7 @@ Dependabot is a GitHub native security tool that goes through the dependencies i - this option enables the "Insights" tab -> "Dependency graph" section -> "Dependencies" tab, in which all the dependencies for the project are listed, under the different manifests they are included in -![Dependabot_dependency_graph](/ScreenShots/CI-CD_DOCUMENTATION/Dependabot_dependency_graph.png) +![Dependabot_dependency_graph](ScreenShots/CI-CD_DOCUMENTATION/Dependabot_dependency_graph.png) NOTE: **screenshots are only exemplary** @@ -129,11 +129,11 @@ We've also configured CodeQL to run on schedule, so every day at 8:00AM UTC, it - you can see the results here at **Security** tab -> **Code scanning alerts** -> **CodeQL**: -![CodeQL_results](/ScreenShots/CI-CD_DOCUMENTATION/CodeQL_results.png) +![CodeQL_results](ScreenShots/CI-CD_DOCUMENTATION/CodeQL_results.png) - on the page of each result, you can see an explanation of what the problem is and also one or more solutions: -![CodeQL_alert_page](/ScreenShots/CI-CD_DOCUMENTATION/CodeQL_alert_page.png) +![CodeQL_alert_page](ScreenShots/CI-CD_DOCUMENTATION/CodeQL_alert_page.png) ### Code scanning alerts bulk dismissal tool ##### - currently, GitHub allows for only 25 code scanning alerts to be dismissed at a time. Sometimes, you might have hundreds you would like to dismiss, so you will have to click many times and wait for a long time to dismiss them. Via the "csa-bulk-dismissal.yml", you would be able to that with one click. @@ -144,13 +144,13 @@ NOTE: This tool executes manual **only**. It won't execute on any other GitHub e 1. In the repository, go to the **Settings** tab -> **Secrets** -![CSA_secrets](/ScreenShots/CI-CD_DOCUMENTATION/CSA_secrets.png) +![CSA_secrets](ScreenShots/CI-CD_DOCUMENTATION/CSA_secrets.png) 2. Add the following secrets with the name and the corresponding value, by at the upper right of the section, clicking on the **New repository secret** button: -![CSA_new_secret](/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_secret.png) +![CSA_new_secret](ScreenShots/CI-CD_DOCUMENTATION/CSA_new_secret.png) -![CSA_secret_add](/ScreenShots/CI-CD_DOCUMENTATION/CSA_secret_add.png) +![CSA_secret_add](ScreenShots/CI-CD_DOCUMENTATION/CSA_secret_add.png) - CSA_ACCESS_TOKEN - [create a PAT with "security_events" permission only](#6-how-to-create-a-pat). @@ -160,19 +160,19 @@ NOTE: This tool executes manual **only**. It won't execute on any other GitHub e 1. In your repo, click on the Actions tab and on the left, in the Workflows list, click on the "Code scanning alerts bulk dismissal" -![CSA_execute_1](/ScreenShots/CI-CD_DOCUMENTATION/CSA_execute_1.png) +![CSA_execute_1](ScreenShots/CI-CD_DOCUMENTATION/CSA_execute_1.png) 2. On the right, click on the "Run workflow" dropdown. Under "Use workflow from" choose your default branch (usually main/master) and click on the **Run workflow** button -![CSA_execute_2](/ScreenShots/CI-CD_DOCUMENTATION/CSA_execute_2.png) +![CSA_execute_2](ScreenShots/CI-CD_DOCUMENTATION/CSA_execute_2.png) 3. If everything was set up currently in the "Setup" phase, the "Code scanning alerts bulk dismissal" workflow is going to be executed successfully, which after some time, would result in **all** previously open code scanning alerts, with a certain description be dismissed -![CSA_execute_3](/ScreenShots/CI-CD_DOCUMENTATION/CSA_execute_3.png) +![CSA_execute_3](ScreenShots/CI-CD_DOCUMENTATION/CSA_execute_3.png) -![CSA_execute_4](/ScreenShots/CI-CD_DOCUMENTATION/CSA_execute_4.png) +![CSA_execute_4](ScreenShots/CI-CD_DOCUMENTATION/CSA_execute_4.png) -![CSA_execute_5](/ScreenShots/CI-CD_DOCUMENTATION/CSA_execute_5.png) +![CSA_execute_5](ScreenShots/CI-CD_DOCUMENTATION/CSA_execute_5.png) NOTE: "closed" refers to "dismissed" alerts @@ -189,11 +189,11 @@ To add more descriptions, follow these steps: 2. On line 11, notice "ALERT_DESC: ['"Calls to unmanaged code"', '"Unmanaged code"']". This is the array of descriptions that the CSABD (Code scanning alerts bulk dismissal) tool uses to filter through the alerts: -![CSA_custom_1](/ScreenShots/CI-CD_DOCUMENTATION/CSA_custom_1.png) +![CSA_custom_1](ScreenShots/CI-CD_DOCUMENTATION/CSA_custom_1.png) 3. To add more descriptions use comma separation, followed by a single space and the description enclosed in double quotes, then enclosed in single quotes: -![CSA_custom_2](/ScreenShots/CI-CD_DOCUMENTATION/CSA_custom_2.png) +![CSA_custom_2](ScreenShots/CI-CD_DOCUMENTATION/CSA_custom_2.png)
@@ -247,11 +247,11 @@ If the setup was done correctly and there are no errors in the pipeline, when th NOTE: - the tag itself is used as the required description of the newly created tag, which appears here: -![Release_1](/ScreenShots/CI-CD_DOCUMENTATION/Release_1.png) +![Release_1](ScreenShots/CI-CD_DOCUMENTATION/Release_1.png) - it is replaced by the release description -![Release_2](/ScreenShots/CI-CD_DOCUMENTATION/Release_2.png) +![Release_2](ScreenShots/CI-CD_DOCUMENTATION/Release_2.png)
@@ -259,25 +259,25 @@ NOTE: - In a new tab open GitHub, at the top right corner, click on your profile picture and click on **Settings** from the dropdown. - ![CSA_new_pat_1](/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_1.png) + ![CSA_new_pat_1](ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_1.png) - Go to Developer Settings -> Personal access tokens. - ![CSA_new_pat_2](/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_2.png) + ![CSA_new_pat_2](ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_2.png) - ![CSA_new_pat_3](/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_3.png) + ![CSA_new_pat_3](ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_3.png) - Click the **Generate new token** button and enter password if prompted. - ![CSA_new_pat_4](/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_4.png) + ![CSA_new_pat_4](ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_4.png) - Name the token, from the permissions list choose the ones needed and at the bottom click on the **Generate token** button. - ![CSA_new_pat_5](/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_5.png) + ![CSA_new_pat_5](ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_5.png) - Copy the token value and paste it wherever its needed - ![CSA_new_pat_6](/ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_6.png) + ![CSA_new_pat_6](ScreenShots/CI-CD_DOCUMENTATION/CSA_new_pat_6.png) NOTE: once you close or refresh the page, you won't be able to copy the value of the PAT again! From dd008c314bd3e725301ab5c3fc0365a80184f803 Mon Sep 17 00:00:00 2001 From: Aleksandar Ivanov <74899441+aleks-ivanov@users.noreply.github.com> Date: Thu, 25 Feb 2021 18:17:36 +0200 Subject: [PATCH 191/194] correct msixbundle path --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 32b957050..c2a71bbe5 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -238,10 +238,10 @@ jobs: uses: actions/upload-release-asset@v1 with: upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: Artifacts/Notepads_${{ env.NEW_VERSION }}_Test/Notepads_${{ env.NEW_VERSION }}_x86_x64.msixbundle + asset_path: Artifacts/Notepads_${{ env.NEW_VERSION }}_Production_Test/Notepads_${{ env.NEW_VERSION }}_x86_x64_Production.msixbundle asset_name: Notepads_${{ env.NEW_VERSION }}_x86_x64.msixbundle asset_content_type: application/zip env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} -# Built with ❤ by [Pipeline Foundation](https://pipeline.foundation) \ No newline at end of file +# Built with ❤ by [Pipeline Foundation](https://pipeline.foundation) From 890261fb91e55378e370bde6d94060f6a39c347e Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Fri, 19 Mar 2021 16:55:46 +0200 Subject: [PATCH 192/194] add latest feedback changes --- .github/workflows/codeql-analysis.yml | 4 +++- .github/workflows/main.yml | 12 +++++++----- src/Notepads/Notepads.csproj | 10 ++++++++++ 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index d2426cbcd..47de21204 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -54,15 +54,17 @@ jobs: shell: pwsh run: | msbuild $env:PROJECT_PATH ` + /p:Platform=$env:PLATFORM ` /p:Configuration=$env:CONFIGURATION ` /p:UapAppxPackageBuildMode=$env:APPX_PACKAGE_BUILD_MODE ` /p:AppxBundle=$env:APPX_BUNDLE ` /p:AppxPackageSigningEnabled=false ` /p:AppxBundlePlatforms="$env:APPX_BUNDLE_PLATFORMS" env: + PLATFORM: x64 APPX_PACKAGE_BUILD_MODE: StoreUpload APPX_BUNDLE: Always - APPX_BUNDLE_PLATFORMS: x86|x64 + APPX_BUNDLE_PLATFORMS: x64 - name: Perform CodeQL Analysis id: analyze_codeql diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c2a71bbe5..a6a24cfb2 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -174,16 +174,18 @@ jobs: /p:AppxBundlePlatforms=$env:APPX_BUNDLE_PLATFORMS ` /p:AppxPackageDir=$env:ARTIFACTS_DIR ` /p:PackageCertificateKeyFile=$env:PACKAGE_CERTIFICATE_KEYFILE ` - /p:PackageCertificatePassword=$env:PACKAGE_CERTIFICATE_PASSWORD + /p:PackageCertificatePassword=$env:PACKAGE_CERTIFICATE_PASSWORD ` + /p:AppCenterSecret=$env:APP_CENTER_SECRET env: PLATFORM: x64 UAP_APPX_PACKAGE_BUILD_MODE: StoreUpload APPX_BUNDLE: Always APPX_PACKAGE_SIGNING_ENABLED: ${{ steps.step_conditionals_handler.outputs.is_push_to_master }} - APPX_BUNDLE_PLATFORMS: x86|x64 + APPX_BUNDLE_PLATFORMS: x86|x64|ARM64 ARTIFACTS_DIR: ${{ github.workspace }}\Artifacts PACKAGE_CERTIFICATE_KEYFILE: ${{ github.workspace }}\cert.pfx PACKAGE_CERTIFICATE_PASSWORD: ${{ secrets.PACKAGE_CERTIFICATE_PWD }} + APP_CENTER_SECRET: ${{ secrets.APP_CENTER_SECRET }} - if: steps.step_conditionals_handler.outputs.is_not_pr == 'true' name: Send SonarCloud results @@ -238,10 +240,10 @@ jobs: uses: actions/upload-release-asset@v1 with: upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: Artifacts/Notepads_${{ env.NEW_VERSION }}_Production_Test/Notepads_${{ env.NEW_VERSION }}_x86_x64_Production.msixbundle - asset_name: Notepads_${{ env.NEW_VERSION }}_x86_x64.msixbundle + asset_path: Artifacts/Notepads_${{ env.NEW_VERSION }}_Production_Test/Notepads_${{ env.NEW_VERSION }}_x86_x64_ARM64_Production.msixbundle + asset_name: Notepads_${{ env.NEW_VERSION }}_x86_x64_ARM64.msixbundle asset_content_type: application/zip env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} -# Built with ❤ by [Pipeline Foundation](https://pipeline.foundation) +# Built with ❤ by [Pipeline Foundation](https://pipeline.foundation) \ No newline at end of file diff --git a/src/Notepads/Notepads.csproj b/src/Notepads/Notepads.csproj index 5f7043334..fb7b5f76a 100644 --- a/src/Notepads/Notepads.csproj +++ b/src/Notepads/Notepads.csproj @@ -459,6 +459,16 @@ + + + App.xaml.cs + + + From 0ac9b7672cab3b9e69325d0f242f0fecebbd6f41 Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Tue, 23 Mar 2021 14:17:36 +0200 Subject: [PATCH 193/194] add publish-to-store feature, add necessary files and changes and move AppCenterSecret to project file --- .github/workflows/main.yml | 12 +- .gitignore | 1 - src/Notepads/Notepads.csproj | 10 + src/Notepads/Package.StoreAssociation.xml | 371 ++++++++++++++++++++++ src/Notepads/Package.appxmanifest | 13 +- src/Notepads/Package.targets | 11 - 6 files changed, 398 insertions(+), 20 deletions(-) create mode 100644 src/Notepads/Package.StoreAssociation.xml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a6a24cfb2..460081c3b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -150,7 +150,7 @@ jobs: $FROM_BASE64_STR = [Convert]::FromBase64String($BASE64_STR) [IO.File]::WriteAllBytes($TARGET_FILE, $FROM_BASE64_STR) env: - BASE64_STR: ${{ secrets.PFX_TO_BASE64 }} + BASE64_STR: ${{ secrets.PACKAGE_CERTIFICATE_BASE64 }} DEFAULT_DIR: ${{ github.workspace }} - name: Restore the application @@ -246,4 +246,14 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Publish to Windows Store + id: publish_to_store + uses: isaacrlevin/windows-store-action@main + with: + tenant-id: ${{ secrets.AZURE_AD_TENANT_ID }} + client-id: ${{ secrets.AZURE_AD_APPLICATION_CLIENT_ID }} + client-secret: ${{ secrets.AZURE_AD_APPLICATION_SECRET }} + app-id: ${{ secrets.STORE_APP_ID }} + package-path: "${{ github.workspace }}/Artifacts/" + # Built with ❤ by [Pipeline Foundation](https://pipeline.foundation) \ No newline at end of file diff --git a/.gitignore b/.gitignore index d0ac7f165..a89b1c8b3 100644 --- a/.gitignore +++ b/.gitignore @@ -203,7 +203,6 @@ rcf/ # Windows Store app package directories and files AppPackages/ BundleArtifacts/ -Package.StoreAssociation.xml _pkginfo.txt *.appx diff --git a/src/Notepads/Notepads.csproj b/src/Notepads/Notepads.csproj index c8624d420..d6ee95105 100644 --- a/src/Notepads/Notepads.csproj +++ b/src/Notepads/Notepads.csproj @@ -455,6 +455,16 @@ + + + App.xaml.cs + + + From 679aa1540b4da083e99773b6920dde426a1d69fe Mon Sep 17 00:00:00 2001 From: AleksIvanovSinglet Date: Tue, 23 Mar 2021 14:39:44 +0200 Subject: [PATCH 194/194] update version in appxmanifest --- src/Notepads/Package.appxmanifest | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Notepads/Package.appxmanifest b/src/Notepads/Package.appxmanifest index 54a23d3f2..10ebaaf9a 100644 --- a/src/Notepads/Package.appxmanifest +++ b/src/Notepads/Package.appxmanifest @@ -11,7 +11,7 @@ xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities" IgnorableNamespaces="mp uap uap5 uap10 desktop4 iot2 rescap"> - +

^#mt7!ZtnZu|%o7*?vGxQh3qYx~9Euzm0R*{DfMsP5OY;`pkTxa;Il)NY$ z?`I5>ELtvptXV5zYkRkJE}orCFZFb$b)4UFRCCh=*Z|7?4S1&B1rvJE+H8}sa~Tb9 zo`Q9>dF|gql{_bjljk_+j4MQry_a%sgLlCkd@;&@+2)%|y;3H{P~Py2JW0ZhcD7{w59FL`}oj=z#c!h!YUjzMmQp$u__KJn`cr zHig20bLV+C=;sAW{jG9>6m`b#rNPeiEPTOZw$fmDp1X&Oc?0K8)bnmT4L95B-1@Z} zX+BH2lXFfyetCP=l#^++Q@IVjQgA46;J4#1wG4g6UPL_!vRRuS3n$R-y$-0QSuEy1 zdF=UXa`^X1TO7`HkBY4yzO$mJZ~>NC%B<*zLTRcQT5wga1Xf} z{*X<%guP@N5MhddeIarkw`f{OJtaivce1U^%eU!jkliBC`;VqBUBPETRpZ+#qA}~+ zK1!6kL0!rWRY#*&qAc@cUZ3Dc@DrCNpEsb2Rde<8_DSj@zkf5p2CKU34zydOc@DI| z_7o%<8B9%k-4lhE85Yw&xXaLL-uA&KS#ddzwoS8yGS5rcu(>Q$8^N7wC!9^Rq)M&X ztHE)Xt0X4%ibx7!Z{t1vFFlUY3gOr9>RYEx2m<)+%<|4GF2kzn-p1~w+Q(6hGBlxV zFyV%x(@dw_6PjUhhpG{poJP|!q(FL?30d&YuU8l@FTxRaL(iWzu>dlR3 z-(lQW3xx0`{Ez`N^kHi7W(zGw@9{43$SK8!y>`T7bu|CwehJX zC(f}1&eyOnaEC+uU&r&l{t}wn`03An-ob?t`7bfrKC~h^CQl)^7Ok32`+2<3{+m`> z_*GD*zRHx=@C|m^8NT7tOQ)`j^@rYVzZ|Nlv^sy*kUQu*tw`4X%x2eI4N&lVTFE!HgWzNkGr$E(e0=dWKpv>1HIe89s*0O zu(_}rR$tn=4n@1)sYlU)ghv~T)8zsy)71tA959hn>pBTS?!RyjHO)0H*HJ&$PF-`A z&st=wam@~w?VG5CWa0wp+-78~p;5?cg_?d&e{jT=Udj;e?467zXt6lI^!DJyyb9;T zW5Uy5fyYT#$HK92va@5bKRehOzw%knLjKJ7# zlb!zMY|}_JXn?mPm43+MO=kRjUhlOGCHMWm=~1@WKwgZ6f3o>Cc&j3ETaO;V-r8a@(n;MOClD{S=^q>#JLHG99E|HDD}e2|$0o^mpM+8$O4j~l39ybeaC+dXQ{iWBs;!90}RZ+yc^8nJpBXk;TL<)uDVeYFqZX|;cbdTKH!txIQAISoM~V2! znegv>wO7$J;em-@Sn=;mV__V`Jq>@+s{qr+681+3BjqqLmuSl|`UyTTV{9$RaC0={ ztRECAyemsCis#yZv6A}zwfH3DF1CIdjy{8(X!RcUNR9e9V@vSBFYeuP)Od3bZ7}&o z6#-7LKbdjYUqcI`*{8TzGT&?NKj}-d9)`}oYw>jn2$xxWccJOx&JU*sd=&FS_Puwz zFbm`X0ZKnxhdqB@ayrdM>Up&7!GGwdLFRDq#JB*GfCTIQ`whgz8<-T^_yM4OD=IJ;EO^{m7u$# z4L^@0!W{IcU2kE%g0=&#PdXW;y+QCT0Pj>2v-xRnZ2E4S+C%>bFg&2&fa8CR3@!j- zAqg!B*PC_WnR-)go>E8d&#m>tX@cpYg=Ohue{e0|CfmH)y|mv%da3`W_*CF<{K0W4 zf(1aJia8BNGeU zuYkMm%2}T9*r{stx+!Qx%Hmba?A8zI1^QT1Nm>Qowj{UDX#?xM`?kNZFG5O#w#Cxa L=1SQwH)H+_hl^KI literal 0 HcmV?d00001 diff --git a/ScreenShots/CI-CD_DOCUMENTATION/Dependabot_alerts_page.png b/ScreenShots/CI-CD_DOCUMENTATION/Dependabot_alerts_page.png new file mode 100644 index 0000000000000000000000000000000000000000..9d5a9e9e1e972620dd583a86134c7c65ae4f1b38 GIT binary patch literal 25137 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 OmBj^{^A%?9G5-UMqn^6} literal 0 HcmV?d00001 diff --git a/ScreenShots/CI-CD_DOCUMENTATION/Dependabot_dependency_graph.png b/ScreenShots/CI-CD_DOCUMENTATION/Dependabot_dependency_graph.png new file mode 100644 index 0000000000000000000000000000000000000000..b3a122b9800d142ac4c8a8ff4ad67d0535ea6e96 GIT binary patch literal 53551 zcmbTd2UJr__cx4+2%>_bpn^n1L1__?P5`A!l_Js+=~6<6P!cYpfCvHU5PI*@L7Irv z2%$;u0YVE%0)apXU+~`hf1l@F@3+?beP=BebIzH}?Afzt@8AB-oUj*~%9k(RzDPwy zb@{o9f({kcIRq8eSzlTj$`gfgjYG=6GwwRd!+14mG)V5DGo>Ea&!0AaA=PCDe zE-HrZR8&{mPyfzzfeWmts0MyKS9q%DW43whQ2(+cY5VfF2WDU)jQRTf6d@K3J+;9c=Ee@YqVaxQ28 zl;m0i=c)gc0-UEy0 zi1rTvd+vd*RF9%dvi`CD{^R*EM5@=p&9b{PgGY+ntj#bT;-AiGq~d5bn?$IZIZH08 z8R8N$*0njg}&jU4cP(ixQ!e6By$I(#r4IW(p{u#2zy#Qv! z;o0j1$FsZa&9Ge=)qk3?p)|8sno@|S8jze;KJ9HFjG~80sx8jbn^gshdYq{Cub$p` z+@sYD6b(G0J-v~9oUgK(pF=sHYMy*!rCmZ=omkFBrH3S?8k@;! z19EZugVh?~M7ny-?+$BZENkV_M3*)3*YJ{XSfxA*HRkpCQ|%7So^~Awy@~+0I8ocE z3rO>qZ^jt|B}DBlSO1!4EBP}+ldPvb4*-JP=kg?K)|543>C0Qpy;`mXW578MqFGFB z5L{5K2TTkrgG3Ab~;8ESB=CXyN+tyRo=_?btUYeiny=6EXPaXirj*%=@*gcls zZZ`>3w>vn#21Qo-DsKvI;YWdvqD=gpOBo~2ciOhJ7_mcV_r`EQAhO-t#HcPUO12zx zd7{~}#>7XDscqt21ueSO-7w3%{6s0u2$rqR6W1f5&js5czhS*B2`w&5d&t?k|H)&c zg2rr3cgw#m4&rY=1GPc;D6RhJvR6hoqG>g6PP6f~LArNCmLyUW6R3Z7Pq13;Z$O8fxsJ3z4X@IA zxo}`)zcCjx)+z`OHQdc%x_FcZd+PPJK}B4;&fYnKHrYxcmfzup#d2@`fdiPVG#bCP zq5gWhVy33qr1SSkDu%iDVaz9=$~PL1_U%#hl~Z}YF7~HIDspw|r(izE7eBJ>wAqND z6Z9#YKJZE72GGl<5&X?~Q%a-C_nT54)@`}2rL-og0-5+rMprIn8*XX-EX*?1tY$A{umR4AHCdK0jVS_qeq=4wV5|cO&Cy4 zb_-?{!w-aJMx3|3e-CR_D}J?_Db4Yk-Zg{;Ze!4V!L-HhT23sNHr0jjcUN^#tPf8O;@d18$yks)A9Ic8#O-;0#-Km)yCGAej?%%8gK-M9%L(kTX95(Ju z1bCM!uZ>=|2G$l=%niV^Gr zu}4E0K4IoSYTG_5DGM~?OnPtv(_|oJ-r=}sUDIG;Y{lKsb*+JzAP(Ao^A*2?w~1K% zO^y|6dB$@qEhU^rD>940Z%FM?e)_Q>tG_IlM{SX73(G1sW*rElg_)^S7jQ(Tr-z&q zt{ceMcuC0f9y}sJ)#%S3E_bayfLzGpV(Q1!=P;-?sDXP^TqDyp4`9c+6&Wo$CJ!ymN zp`CjyxFoau^68$pO{`u(L~%D_g1YTAOXo{~XWQYgc6crrYeABn{)(Mnn=uI9DX;Ur z=L!8@G2@-z>}M_X*KPV1uq4n438Yt@csQ)!BIBuyRZC^V^hQXTqy>KL!w@#(QlVNl zJBPdIx!(|kq;hiuJ4KtX@2W&$6|0_ED7N$cZ`kHVvYxrYw^Hs#&d6Tg0_^-=f24@w# z1?I{o&;~3(E><&c4QksNnGY-{(kJzN$)JjdfiZh47}`I<$?(#Zwl(hC6Tz7_ZpCXB z-z{X6V>qP*D_zAPj@H+%JRV@X-UcBYlNBX*uKlF9{)P7~slQP9Xd%tvV zr5nGNDSIs4fzDaMsWG{gqb(e@_4}ex*l-QHekHTjWB?!ADVPZ)*hJB4$|siaP=cId zQq;(BH=4wn@;t#l4#hdv)*`wVuKTx`($hr(`_#lVFfYY#fCE$PIa zu!?vuHaR+jPfD*!qwD{T&^V5Yno_^0>24-wp8Ay;$8s}nu0Q+~McIKTm0ZqVvZhgW ziDZKn{xofVMIfHYPuu=b?Mu-^w=xdOo&a-UD;veun5x_p?Vr^70@?m50zgv5$#XYi z{O<$+967D>B7#)Lq*~rg4&nozy#H|ZR!sSvKqKJM$JANcPrC8M)&rkr0#IyoE+zOR zgfBeD?2}?Sb^g_kg%dT0F4Qr9@5)gxX1Mi!cj!nT!Kop_>|^Zrk+qX|RSOcjzRL^# z#%W(UnGY0G?Az=Mh{lNrK%=*?fj@xoZ#7xvo<;|Ex39Q$knE8$SY@W z0-*3P;ZY6y+rOdAyLoE6bBBs9@!DtJa-F2SntO;zkhXg?;cqe|7}5w4!E)gC9Qlt z$)5ORzhNGg>fIlwt9oRm9NDTrDzn{`GJ`5B3y5)D{_mDY4LBG!QvB2RfggMWC?J`< zZSPnnJR;+P{Acq z#)6G%_srj!kjFir|1Vho|E(`QS3vG8l>W4jfmb^2DE&W!`2Uekyl8>v!8T*u=7D6L zrPgDyK=$mh{u;os&qDHP+9ZCHGW5wnT)^%Lsl)vKduq92(%1!=7xj6kU00`m9%=qVOddM#PI7CQ_8z1De%g^9WAU@?E`41U72!YF=8+f{SH$D6j0eC*@tt zYE22vzdmvg`#lw26f$EI&^2E6;I_lNnJEZNIV7OGh}KO~3Cmp{)!w3gEzcw~=4caf zxYrJ{ye#=0$1YAY4L$pu*1Qe?kBk4^FtdUg2%!=Vimf@~w-j7av{^DO*>QQ>oTn~8 zeOyu5XTUfq#4&5&^0sNTeWC==G7}wfI|Zq~WIu5Au6QO-y%$BojMSUbLBdJg%>I2H z<~lC%PRx-H9BCMGZWJ~%A~cS!PVL(z1+iS0yiColcYf>&mf zh9}la=N)I^!Si}0t9oDuC%@Of-^~XX{j2*@v)g){m2Y$w2jc0^I%ZJYq7iprC?pI`@^qYvM{tXse&MJ7>oLX8(EMRXXgE*T4n>H*KauX+>pwn(VidRj5G6N1oi02oYVIfJ+UQ<@ z(#3Hu5^pAZ+@@tUV`Ij&;!)00uVjw8A)xly!OFMtPKAAXrc_k&|GHKi%CC!-SCO&~ z9gBi<5*jkc-d#v;xP;CXq8@N|*QwXeuqLy1ByUo4OTAO3af+ZYi8mnbfLPWwy&(i~pDv}ENQXLrYlC5wsbgXDjV zYWL2b5+2?r$|@fLB{oP1loEH?*oX2_9#^y`W(@ zB^vaD+$YQ+*ivuRCJxht2e?}L1gC@mFg8xHu)64rCtH(ifu2j`aV_7>7mY36ozzER zO-}6{xYWxIRx9IrlZ>x>hm!H0=2LLx4b0{Na;!UmUO+SNS8o$7|J2;K%K9%Z&G^>%PGDmE3^kz>+O2!lJ@my z>xeDRM`DjCygZyMEn?Tg-HH67XLP69*-4(F&WzzdKL6b_7pPmLM>8&R(?tK1Ez;S$ zv>Q*uIxGCP5G~^QL+zzJh}X(i$TVzNeOAM|ZKBC3T(mh_lL7K9xoyvIgRj=o$T9l` ztRmp0&xZ?2E~A>0rHtM2E=txxR38(3M``cfV9Rv;UUv1SkvY#XCFhGu^6s#oE4vEx zoMH~{zrI})G5n5OjB(OLa@GqOzCoucs|oQ7N9!}X21wdwrinN6aiyeIWnt^LTtL_R z?F|Dvu>v^>hX}@o!`kr?x5=P+($b*NdKlhnWa&-XZC?)Yn*Sc3yh~)1Vq=hxTaW;Y z&I7^Q)W-LhsvVi@)}rNjM{fOilje-HS=0Ra>*8EgYfY{7+NhL~CVbLnsPS6R@W(zo zgyZx+5WuaG!Wka_9@T71@qdX2w&_e+-&QWioTywk*h%b2t?zyx#qyUKEwx2-uCX7- z3|*)}prnNnk9oP%({Zacv#9GsmfF{T=!LR!NZV1{k~p72rd5yEhb8cqH%-NA9qm7{ zrV5v~+DVo3nlLQa+U|Vci&ha^LNnr)R@r;yW%kyR(dXMBzmjm?teT-iF9YM_r;LDh zYl-p5$X{1W@|>qW;9RK!IjByZ&P|UX;hNx=$c~^&M@}By>sB8>e!sh-dbUEZHVHdh z%@5Yf+WKVRl83YRoozL6eAV`izW=j9MS;riWu3DRYg1HSO+972em?8kuLMW)(u2aO z+Gl23nV{ueqn#nIoX)8jy3&z)`-aE;lnDwGgd;^kwlzP_RuFt2D`200?9uV_;}su% zQ?ZGaeyVv1>BI^VcTgz4KuO5tZ=M3T$Kuqs_bZ>keIFx(-JY{PjgpWm#A$vLVMbJN z3&zc+)Gh~At#llQ1aQkBaz*vD(UW-1#WhL>@Td|92Z|?(?1tHlm_u@LWKJ^IGV-aF% zMmIN!XI=H|gRIQ?U2Dso*NU(2Ut_H;?Ft(HkzISg1J#x{01a`n%>*pFzsS`vD7I{;(4DyE9?E6Be%leePjtg|2eB(+*$Q$_1+;ugwh4tJwBqry6`IT zL0iMOYJN!uk;RH9G$Lz;Q)-ym-(j2#b$$<#$hW0(pW^$N&)e7=I`tG6cIhEHMKxz! zY$8H*H%7kJTyAip3d}tB2eI|H?TiTUqJMHVS?9!!|%`z z7JB}Pgm);Bkg~~PcTQ5%<=Jv|>OA$$oB}Gn@@xT5jpLW9=GrN5jW^^R&r(q^Z3$#Y z31D6uJwXqA)MNG-_rard1l7R;qhfRXCkoe4LTEq|{G&%TaLUDG;IXNRNdcQri-p62iR{{iI3_exmz8h+Ln-rmg+WXD;8V z{v!Ojm^d1BAVEd0r|N&!0b2Q^&xr z8N!rWgLFSbbCEJuc@&uU$CxJ1DWJ^A&spIr9kK~xdTmERqHhKn0T=9O{=wq^O!vQu z3-v$g&lz7ee~r_OknPf+4H=@$VL5~U-A8w+e4qVqFTSG7W#g|iQkCMe;Uv%h%)I`u zH--KqQCwX*TJ6@lln{P}m~&ZojUoZnK*JyO(FO&a*M?w~Wd-(0zm%;}Au{*M{eQPl zu<8Ox-E;SmfAUw`KYoe^8Q`(S(Y}<|>Y9aP0UUlIZM_5VkZve{?0~te3^AX!>LGJF z^w(dem8E1zW6!md7F%V0pJ`an4&lO{zW+9maji|_FxZu9-~vtfyz~(|UG*bUX!}-0 zp_-$v=xLSLtAQb>A&+l=&^3fy%61Ums{Zk3U>>ZWc32N`TH~hCAJM&9;d*kll?Xy< zD=Fhf?jzRIcaL}fhT3z=`KdmMCOD#n5T;41SFHae$HZb)!v}@A5)C_^S^?7NKu-!8 zdPFe(Sq~b6|Gls*X3i^-=7R1jscLyEiOrP#MoLED2?#hGZpX?mW(mtau!I8yy8Ktb z%fiZ6>OM)nRUkANk`65Z39yra3o+kueGD)aQFffzdrPf=-Eu2+t71pExa;DNFeYwI zgwIhI{Emo;ro+Cb5gW6v@1Fov98L8JIj1b4`eUdl!QM z#EOV%edSk9a!lEcnUg*W#F*}c!6%k$K&E&t#J`$os#@e`6P|7f782Qa{F9=*=m^LG zGlv5hty_)@<(I_(L>C>qb^0I=h+`4kX!`b{=Gt+L+7bisfq|Lky0eE^BYWaUofq)MiwM5|Q3egKV=aqi_fhP?MHC;RfSo)fEoHGPfn zXj8nc!EQ_nH)(veQU5;vvNW$%zCEhny6{P0%i!?Q>LeU$GJA+*;Ci3e5=LMRX<#{X zI^$Hk@2^lcX$IoXuVk6}S!-Vh1FD-(xf06n(gu42JeIgWAQxLD6t0jI4IrxBXc;BVl)OEo+;!)$u98qL!?XRsjC$96 zW&9n0$SScs(7xGz7bKO^E#_Eodkvuif+ss0m7AaW#L&HJpV029Xho;RlQ z;f(LA8P^0^=2(taqT>`R?xxv%~(vglBw1L&mWT?D35!fLI)cF?tt)4x4$rr%HB#fVa{V1!x&-!jH? zfM`)BR+Gm$6W8WcTx^J(PmP%Sl)CSUXTDrKTFsJ|dE_Uv8+|*vaMjIdrj=M1J#cA$ z;nY6{7TuEkL$m}uIAg&1xLK~0_b&46@QZ?~8*R777zQML0j7I{^2^=;(hG_;?!XSl zxj$QpO>l~Gpua$fzunpCvM7%9PNdj7->#zU zY2emp zy12QGq5It|pZ^4hj4Db1V6)m)lw*J{fj8A)z4vtCrA`ZqaxZ}U`T&uBBf7m z!l;Q}NDsl`8wG&pk7Wv!ey3>O@01QZK15l<{;ZI|IvT5(S11(vPc7RIRwAHNSr z#@lAwj(*lh-udaG3XL@Gl^s~1ssZcQ*P@*HWjPjJU!l0YbHNv%--vybS$J0Oy9QTQLZ|hvlX*oaKFqNaLJ&b?C!TzdhTNx5={X zEq3PtzB3=cE34R+)Gr*x_CQOnzTdw9o7gm| zMw8x$>2E9-gHdun&<@2H{YtwSa6Z41n)XFo8@;%Cwt!=gWPdD9c)pBoJ`={>@0v?E zx((hZT;-ObMN>j8RL&fi4LmB`zjrs_c~lGE!I8Vgkv?Ll1gu>&nr@c6yrfICJfmD$$%-NFlYkV=Ov zl6_sBZD+yJdb{b7Ke0qWeqZ`k8M$6`t19KL@;LN^P#e8>y`xdU2hz?haO-260GaMLs{Z^UJ1`k&yy(WLvIZ5G8RBM_fyCg&*k&gfJuxyLogcA?^N& zO}V-IWoJn<<|#~!kj|E|S8{8uDe>!mc_ta3PZs7ye~#IdIIQak!F2VrbDl8YaX9dI z*qfYm`7BM854aM7F}vyqIvyX(L^t|4F0k=>ZujMl!G~U}8;f`KO^t~i?WOT|Y+uZU zf+Er!sNPXFo#fsZgzA+q!yW|Zwa}`Z5ORL8oY^~F1*Ih&;0Kpx`_?cGJ*n)k{%Yu= z*NlMeO%IB~S4wTU>GRXyaBHO=&9RWIh8IFYr%d_*Ppk8%l9S$Ow=oSgc4-kM zOYqCh>T&&2^+W5P7t9cyz5KEdJh|U!oo&^oCv1OEp~!bS-IY&ET*{cwyU#LvXsJs@IfYB42sG zFuK5RvKpiX(@aZ&RXfeOGc*vId~@^QQM@S0S$^Bu*VOP^2{7@@iTcCm1>5-VTwDIc zZ0qnzz>I`htp-SEtA+T)&wQ=f3Yl($lXY5@l~Ei`m(p=I&sf8B8_&6)eGu9r>v@M0 z|0%Q*OE;F&Aj90>Q~uoV_`?ol(&Sw-rYU>*Iqb4mio=%`|9FB+=l*c)&R~u3@F(;d z=Tga+X(;yL(YxS{*0nh_cMn#^89VvKBlZ1}Wu3$}9{%~faA)^+^)||1e~UL3zd)^P zHVgm&wfYB1UC3g1qr>pbwuS$vy9b#K(0-7rC?tA!bRR+GdQ8kBIk#yGZJWTHWS!Qf z@@iXbQ0X|&y@(h!EC^Sy84|H^?E31&zS7Br9wi2IDxAOMRpo%}Y{&OW1IunDMZhuv zU7tP&NZK5JYFK}0c(8}gor*LJN3FRW2iuOnQtGLCzrjr_R#zhKXSSNSzIUrP#eLeT zf9HF-GN!(Ru-DVF)w7R^cMhmc+?bOw7HV8*7%fOUMAbMV=;)@T6<#jsw9l%_3A%ugot~l=RqyHX4P{y7cO-@0gq1^CVa8gY9p;CB=`Igr@9)sL|I`|PH{*MK%H*DU!LijeJ3Z5`r%llIej|D7s~r(( zw+$M$?j;y#Gd=-~*#ro{qjk!%6`t%kA;gjsHSTce?j|N(Pn#&|BYY)(CQWHXzq-fK|x2wKC}i~Y4st(h%CJv)Wom*cyNJhbA<<0c(!>r2d8BSK*8*PDEA zt$kgr=P?=%Sg7SV@UZcxiYlchf-#5S}jqcJdQchAE^bj6o3v$rS+Jqo~7-cY7m zPs#+5O{NZwzs#-Iy!_pgpaQZa!9%v##2Unmo1yCw_EqlF)d2z3bMq5AP4TS1bhjH; z@MkWarI0HD^8gtF9dYJ@Z0z;qQ(P(vdRg|iXxD}2u+m00RAujV-Voa7w;S2fNjr3O z<)qq=w^Ts6l8FPqETuV2ntEH8dUt;U=puIOw&#f87QOUen)h|EVcfcg5Lt;n+|l#I zJw~M%bQC++RcCloy24G?9vo&g9(7*MmjRQ+1dr!_mCgn8$I;`s8+Uu_BzOVKTGc@C zupsm-mP>kX1BGYl<$kC>un2mW8&=Gk?ZaTZ1*zN_YO zKa!VSZ7Sm-FPQ97X2eG(bZ@5v)8nt{m2GGG7s@UR(KM&kISFAy>;N=B4f(`=;!j?TSh(LrZ8B~ok6KOUDb zWjqCacVkIYp;64J7$dGKR=;z}lXz6Ic5KYoYM)Bz+vAm$?I4UrYQ=7C6yGwI_b123 zr^#}qNdn%J%n;2rOSI;cqpo#t=3t{o0y!)jyb<~F`@udwo!2|7Tq2tzs70GSK;l^& z`E7}l7{x4q63KqDh5Q9PutPVN96*K=b3W`LM2O=_U8owXJsC47N?`wTL{}yGpM%TZhPy<+=(v4MA|`7M-*_w64d0 zr}O9uHsR17Cv_t&$+rK*jXZGE(0@gxk?l!_8mhN8&QZu39U)Cceq|55`OaJZk*^Al z&QJx;?OL(VnIcWiU^&#jme7qQm6$pgsa>qQF=_H$>%$`9Jp9vMw+PO~#))U25-CL2 zs=~UM_!IICI{7(7Vv33*E4^C1JWXUQWZPn^+I37!WyW**3SDW(tEU?a9IKEwj}y7M z5QU=5<@_O24n7~GA-NaxK4VIP8@JTWSL~Cz-;I_8d^4`ilpW;2w~f>9Pkxf{skjw!kr5WDZ5jH2^ePZPhVkoQa}%q z>l>lu-RfKJtvO%D(;x04yHDzeO#ocr@tCpdfF2NH;c#R(YyQ$PaabP8P+|viD4~lrgw#tf!$G21Ra7RQXLiOHN|f0u;Kw)72&84R52|{8&CX*oHNDm9g{F z2S~LXgWSty@Et#gli0h4AYnhAb-$95(e@$i;Ns&^1Q+(0Z7qVI>qaCTJ4fq&XZ6^+ ztm^y(+D~;b4h#nX%!o01jPzg-aYJqjNY*M%sk6ekG((P>MavCKxZhOR2$nA za2P+n37<+&x<6xc?GAll3Bq>gnebW_SV~%%Y;}mUYD2%EgywA-v$UxdE^VTaZh~@x zyv?2iV7D}-3g=;60pql9*)JcguN|^=Z`ouu)o5|DESdj=L_h|2a8gG!FWoo8bgjD< zf3%E^LpxO_YRg6vHZNyIl%EfvUveLuQa;)34okx1FC=nHvlWW21PCb{fl|flX4Bde zf1?#j>vDEPv>nw3i?gnu&u35Zw3k`)vUDwS#1nP*Rn*Y#M}jyjhr<&{E3Mexc#z= zbBaWakp$HE06i?gW!Xu`X(q;dU&eF^N>;*Vuf8s46YIt5#f*JEh_DSa_qz@g_6DKN zwrYJf`gNy}>aKWWGlgJ&MG4ZL11DW0%N5ptcsW!3sdV7kb-GiUrcmUdZxKG@`Sn;w zdifw4Bmi3}RGzGS%NeKH#Ij>2q!$KSjO*GqDr9=Tr>|!T?(Wob55jBle(w$Wh-Fwg zumg%`=XS>Lwv{v&(jTGmt(gbI&4VeAGHpMxbIf(ee{5_WQdwcm`Z=_`u;F1&WKk=A zMnfmvP9=GknmZ6fA#A6~@1IlJHcwkMPtWPCIY$|av0=D5P!F|&_D&ao`3v!NIo#pT z4)WZjBeJW1m-%p>!Iqv#cj4hKICn;Pg5QE|=B>o{f-_%dKbSz0K8S9O-oHj+04*J+<|!mzrYeJN#z&E(|Hb5mc(Jw7$zP<<-hZgC zL6$T8X5 zj?S3wDq>);AWH8kg=yiDnC194l z*E#~t@&j*{=F=C zEkbDfC5HBTr7FS02n8d+YWVzSvG;YMUZm|y|5=Jt#2%cc^@Lp)_D85K(q~eGgU7wn zTiLmOsQVBvRUYhoRpEvjjzSJ{4NnF=;_e0Pe@f6OtiF!#M5ga2y60LuPLNrTlq~Cf zChimQ{Y=)b_exL1<+n)r-b*zwqX+4-ZtqF=%{a12hvz3qGww{wI&7S;oO}(<0*F@| zpr1OMo72l4E{7XbbdBO;ZiH2{yO%m1?@8f?ILEk#cotdV-D-KwK&PY_O@JMbBMQL} zPITY-;7C@IZ2m@Enf7Y6=r=ANQ+j#nTa|YDg>z8A6|dbU|L0#ZxkEHj@4U9A_XD!Y z8&$ID3_r$P@fE!B@7q*tY5U_lQul*wVv*N}y`6ccJim+bnu8mhYhy+GF`%>*f1`)S z-NuAa(YIRP-xbxKZc9|+_NJtqVu)`0ueBJb1|P!5E>@N$PH;yu^z`L@f-$YQ^KKJ_AB{T3Md(V$-Lu}l|JP!$xq z-_d%61bvwc@wwSpw7DlCV;L?DP6MM#lI<4F?r!<1Z#6m8OgF3uPT;@FoR~#PwGMo2 z7Pgug1|uEHx1*;V$tEtNrE~QC-1;NWx1W-h9yBh!#5aH0OP-AbKVqkzl~?@h6~zU2 z@;YkqiKncz;yCYa5BEmgqyrq zb-ZetP7{^pBks3;8OwarlG0b38_1eYIbZSSe6KlX;#;BS zd%r1%?P%sFLPM&~UK#Q>VD%FZfAUAxkXb0k= z1eihZcrF?{Y6-VZ55{^0;8AeWKThw311FwgyU>0G37I0FN3y ziKV8ag+WUSy0ZZb!TxF<4Y^u%YO+4SZ{)p)tUyvg>#leX>k%pen=()feCsVZ;_JpbV?zoG z^;q*fG`I5>XYUjSj)8!+=F&hBteEH`;YNST+LZHLU6cQHrI_53JIfVnaT}gK*^bAh zS9#$k8))7oIv}G66qhvCyON+mdVg7HCJz0u3>0t=@V;skdYmk%!Oq4o0u4^7MqK*{kqcosBJb_ z!j19?NAxTC!*W2(dEcgyIUs8rsVGeLWWYpXB6N16(JTs6`f7ZKgjTcuSc)3I<6c;k zlnbg=tc~x)$0ijoaRXbixF(`kg+C8pjWUQ^czg1J-}jpild_4v5bIxN=j)TUv=^7|umG9HAIU<= zb%*|=UkJqF<5900>AE}ag4M&)C`Uuk)@D;t5Rx4Fs=DC^+}NVYsc{kGG0X12EtLj0 zmXYzqv8>xKALY;1LmCNV_<3Y^1jmyex}K_n7t1>pUT34W09$&#>3k~ z5)rN2;bX9d*5C`gY?PhD;qMPw^m}&4%RY*nSZimb4LI?Lo6bB+;jhV0ns*$U?F>ihlfpaL!&|x?u#G+k z4@CVX-q-UQw{AU#^laW($L;X7f{mH?%{vXJm;%Jie}~hH2BrF1uC8}a0@m#+PHHHp zz{@K6Va}?@_Tse>on`9q&a&JgZWebP?3%dr(|M_~*IJvo z2!vzLGhjYl*1z6D*Z@_oAF3@EO|^eE-Ckf59;2HcGmmyvJ>?g5PlyzbV&WF;03 zVs1!6ySjt8pO9-eAy)6}){dAub@vtDvYLx7dX3H@Upkn5dE=!u_GBvme(p~C;`!fd zTHvVjc!9W$vCWFL^5&+FU#_*~=)DB%4UkyxPlyd0yD6`*hLM0cJi55H;4!q3%-;8` zIebaGW&%42!mlV>p)9u$Vovb7?4T3w{hx73W8mKy`-B?@B73zsb-`y3r`_NCec3fJ zlm>ec8suWjeOiyI57-HdMYH%S(kDB@=I9}!G;QYO>D{jf(Um>4fTM}p{8@a%xTu42 zdh2cG%||=#gZrF=D3XN9PjgnSUkeW-qdDHXYZx`mK08T{$W+s+o51w-N{V{Mbyn_z zbZ;{GIW6r>x|^32lgHzFMJ4l>w}ss!Y||GqhHeE_Wh(bGg;#u1d7L{`YKK3o)nNv5 zP0A{q_n@!?DJlPBgjGF0AAEf!xdy-#JaTCl+ShV~^YJuGOFMkihYJCQ27!*PMK>1; zYA{3X2_KK#c(&|&VS*ZyW55Cd?t9-^48I-|SuCdK>SY()EBx)W$Q?$qG4-X%PEA`a7|oK^Lb##j1E=ZrNLsrjN0R53$Uep{UvEAqE zj;kzH{cdYQ4bbk6v6W443sm6KNv`I@lS9D?iJcWxMSFGJF6@oT|bO6M}Jv6QSruyij$y?SAWMN_diV^8&sh zta*StcRK9>vY+qQE9mU6T3Kd|9&*yaHP9;&_PX4i{kSleel1ihY@~&?d>1b@zgTg+ zf;u`p1_sRCYNW6kJ3a}h2;Ob{R0Z!0;Dg6e7=u-lJavBC#|qrFUk6}qy^I^frK=y$ zCqG9i#xt2Vd~@HaJpNjJS3LY|r2>2keV7nF(usBA6A$p679D1vX-~ogw1@W5WL>9; zt;M-aUT7f?8FHPRPO~Ugkam z;9lqqP8;U1(H}Nk*%FI;_?&eoIQRJpGA89sN_b3Y+Jv*HR|h)&d(D8)=EY^-_E(6y zog}~MYkJB8j8&H8+-I5wyM65qn``2IOxT5=(upGVLJb!Lc*+g_S`Bs-kN?TK&2k67 zUpe1qiu;KKBa3+s{Y{gZgIzU1s*EbFp0mBmEHvBYZdpGYFoKYk_hSBEtL(dM^ra&? zV6M_L;}2BwjtDn8WnIa!1#>;_^K?P8kzHW#p0nHhnmUr(x-G^gJTsnsVJkj(LM-;7 zC#ov<{ZZCR%crevzEZ;M&u-lPw23gkFC^&_i2jWmu+oRzs8Z0%Dr&-f$G`sH$~Xx9e4#r`=QzHw=fKZ zVPcj0hAhSjJ~isUiK`RXiZ6WX6_+`y;MNzb#(9#UEmwxWucZ4JY1AIZ!`h)1xr%wUx}R+6IkX z3hj1qr3S=Il|{=7G@3x)9zfa3(%fS~>NN0qm}_?I7Rc0qTV8KqIh>lfxqdk(u(v3* z|HyD0dkBuqLjjNC=slm6uZ zvtVm?wbkk>6K$oVM@Ng7M|2j4EbM-v-urRjgH1zfKXvhCm^`;$afr2a3s7n8rKj0m zaHP05fBby13RcTT2x*BAIP%Es|`c1FlF~KRE!&Hm!(q9b|89)vS9_3RpLv?2s)L zLkNC#&Pg>RzGtTuR?MW)9^2X9LG~YO0++6zw%d$YT(g{A&L67fEzM!nulku9ld|D; z);yY)v8(Wew0C8)5%>{>e}X{jI+YVBjN&3k%anc+|r^Y9ruO0|BmGxBKA21fePNahJ zNaE4{-O(h~(XzIc0|wCSDekZD;j+bET_K@Z({Wx8Q)T_41_)x=Ys~Af!Ybiq&<0!q z$~m+gl~&+_j7}{sPx&b9{Yur;G9Ml}Dz~~y-pkNCNe@mtZz_}Io#7|Dnrn9LEA2Gr z@>JKR@uF-R&#_GQB)9v`iQ;y9+}bkI`=YgcdkI=Cb11bwLcc`hnoM$a70uesaY28s zqf8XkHisws4L)8!=Qk*pAhlKk=?g2xbzyvmAJFjk;j-j zj$uxBEstI?yD~-#uUi^azN=8~?B5_}Dy<}hC}9@Bho&(F!+$E}epf79psx#tysI=% zwKJ5LiVWuDK!S9tnqne13t87kHk*5@E)`}DBY*9R`UP!43sRz_2ONv3KiY$Bw7<1ff_9R4K(-UJdPTEqaW6S@l}I zlXPR}$O%S36eh#uST6KIVHN9H?!#PQ{qu4j-}3`m{@XWbq25~;1as=lu2Dk!eZ5|x zs)GO{^5C7~hy705ssv5KLJlM2vaorN#@4k?{0us)1OB+YjL*?LfW`hElA=+Sttg2^ z(fT4uOKUy~8U)3_YPJ;2`*z2PN0faUJDP&i6H1NSriu-2|g0y*2XJmk?Iu?nPV818^2OZg3xLcOK(`-cDr98#D`W82Vkf@vb;q%&RYyAI;ltZ_LUroJN^qKl4KLJ_!`I7;Fzy{q<1UPh_@ z-m%6?S3%1AiIwhx&R=G-(~6?n@+5&t;+7O@En!;Vt*I5AQd3~ zHFwjmM-e;~U)VH(=U83XGxNm6q#jVxdJ;`nx0mQ+l=l}=7VyN?sSP-5rB4R>yXW>U z!Bc_H*?UxW7S3?$DK#lD|V4qQFUJ6lWw^9iY%(vdc)bdE{@|@luJ`J`}dca z4_royKHGX=yUlBUInEwEK-?BZ@L%rxOwo4#0l#_bRM35cn#o=N{b^8CwDA!ep8X{{ z9)Z!S)7+TNt0D)a zF6;Tus-?i-&DBSQ012rY`q!J8KC60E<$r^C2G@BuoW{VOpWXx@bSZkPnfIy0Ny=|| zE|off+YW%M&n3V0VB-H*cCzk0kZnJEieT^nqwR2 zmLyynEMwQX$8#h`lSgz6eh8|oGM!LqZHmWg6iafqd=-NKPJNHQKRVqkb>?!IC-B|} z&z&o+w$8U6Q31`rWP&`}m25ioy|=wW$mW&uRauwhNgp6{TBtbR9#5Uyy=Wt=2Mp@w zFn}y{J@O~nul&(`Wy)T(;eF{9dtQHVQ_kk~^UspF6_SHt&ZY}(%WlK1e`g4Jq#H*>5n^7Dy81N}DajQ693 z(sb9$zcae7J^2Vz`v=rAJ%wcFgtFHDLAGU&aY#q+`PPo%qD(q_Ev{p^Tc87GB5B=@erikSca&NkeFb#})f4?TQ++)QoE&RM9P zkF8QZStKxqEEbsU2mn>Bp4@~nS=uX4T<2)Xum?3mYuU-XpM50fq?G_|lhbeaQ1)Xx zs%F!k)(xJD7h8m8sk3`m|3>68&B-1LlZI=xaZ@P$5*bZ6H&=pcm5=vJ6j`3|LeyT1*R14pV^eqh607!e*?ZOQwH zC4XHoB2_1TRQwy!&c$_2_UP@`n`=%(-dz@J7Z@UNyMm5M@~j;)-*KB61w_iFYaol6 z_3VupEGDEy$y2s-ljB@uai&cJ67;^HJFnEKHK4m}udE(c+hW%u{d1-iU@yFG1e7b% z>3|d``}|nqp7HXmGyg+L?obv)Dg$?TzCpX97vEUOCzMaAk}gu14b-Tb=d2HoR*a|r zq&wPV$a+W2KhLMcu|A=GxQV^82Z#5HTGi0`MgNMnI$dOsKG7fXnc{SRK}TVL2gli> zP#;w8=~sqMaJjU|6d++|cB$?hb=Xx|Piph7UlO;Oa`yV)Ri(8%Y!41M2We)i>qmkm z$`yVmDw_obtw}%Cn*3rt9(CvEtkvSIC_^(Je=Je|wP)YxXT0nR4_oHxMce)GLSt1?kDqfQPXKARg*lh;$ z04i3=&ql8QgAZR-|9@k#%v(=lc$IwtHNO0N)U!2`pQ=o%T{}6~ao|;Tz(HC0)H>m< z%8j}fd;Gs@Ph7mRX1MjjM9bpJ()2q{*JSfE{)4?lWzy&NVKUA(0yMzW|0*P*CNKN_ zIP0}gnARD!93PVGGXgc{JE_9?UV-SmC5>qh6L^LE+tu4OV;{z@+x7 zWl2g9?QUoqAmBdYMXG8Z*7)DK!gdVuIef*Sw3{H!ihpJgiN5tVuJLc1-}duDve4_( z+|vAIrvu7F+{?r(r@KeaUMmwg7i!f{5+17lE+_w@Df-J~V{*yq(ci{`kg%yRVlV^Ox`^LDn z)3Dys;luV<9uw|(VYeAEr^Nkfek8xvYBX*D+aELpaXq&4@g zxjXNsg{Au{d{RaYN)Mm0I-fkK^B?AS{8m8u=~rqdxsO?M3;Xae?&g`-y%F4)Tl}d4 zGklujP+9<#=iB5g!{+UwB{{bgK;T8i@?7%y6d_q?gZI_lWNO)(_~`p9vM0{eM?RtI zC)}q(p21}!+1=iyq^H3a@5$}Yo)SMK629fAkDz!DEj=$@)mx#v`{!c2CVL&=(pqb{ z8Zn1!zqsFNM!O~r?Veyn&Wul=?Pe>%3xlvrP*{Na$n2XK8Z{V{3NQ%_f!I&D5j_bzcB3Vf<80kp*1 zum3=wirE$!^qxe!zSh25Ox9aD@%OlZ4|woXj9VM};8nocpX&2&skQrnl}cy*{mH=C zESUI#!v0_0Db%_BD}T&Rki~DK1L%^h0W6yLro_A@9$@Xg`r~z+#Jt)B%*AJN?-DAO z_U6wTItRE?=l^g2!F{A@JCL^7Zs%Bk9X@1g5RLqmryO75P;;;Z=@<>FB@CJ=ipgjS z%;m+=W>59ALcuK!XhC@DumIMF)OBy)eM-Kp247K0bFNWH;GUsX)6n;DD!pf+HeB@> zxQqX}KYSY1TM>V|hR~TQ1;=`Y%;}l!@b$pEIGERlS<@N=po$Q-wTtzS!(&3pPs7>n zf)qtPicB4c1(MRdv`hyr9npMD#{ESZE|c^`siZmruOd%y#ax9d=ko`}lPpXpSVfUk>(0N6_y-r>5^IF8?=#bSL(QEy(+#jKE6e(;dtb17CqtY>M>Z1*9W zmCKRmxT#aEi@Os&WC929yi%%Q%IE%I1(3m$np`Jd59Qr;LWT$R-`rgBM|SF4Ixoca z&t0pyZ>(t|l;ppkBbtlaAoH}3o|>6uu&dMBWh!&~+(V`Cv~zy-88;*I$BgE^krZT^){3_jyOhvbV7N)^awQUL^#)4AW+1HnID+7{pFn{b zB8|5-YwRi9Bg{Al&jn&+C!?-Zcc_v7Xw=1s!iuXPtd9bmFh#b%$!lNb<+ycZN$) zj&B7UAWN{CWqE3QCQiQ&@eB{kVQb*q>!rP1iPf;8NSJy;0?0}uJG=d`B=)2{eKABK z66FXlIViqAplErI6f47SKHqG2shnYDAHu(!y8TIH7o$)!b>ct-WSd~NH$1GYi*{hc>^5=6F^gHN42`Kl~T%#h| zE+#j;ZNs89j&ZtBQ~jh`a{#$4=xKUAA5+)ag>u5aSv>6iM-%JmqC)2#*&6d)WY6Wg zGDEM4_Xxja(Fv|PT)n|UaGlgj|Mgo+JMXf~C{iv3<5AC7?})`jE<*^=y>YtTrCdT{ zTMJg&F3F|GdCI5a?pH>?WFyWVoQs}=s)%fZYaF+{Zj0WpD8YJ+E>;;>0R#U;cBD<^ zWJ^cgPYd_5SRe!ok*Ao^=ta<#h zO-j0z?6|0J4Cu0RPb?a7)jk=Fr3Q8DtwTl}s811n+?Z44R#S6|K&g8FO7Yi^8=JZo z#Ymr&TLLFrTzMEa(i!X7dr-!%DC@j6#qsMnnT^|y1ivc)`U$uINWSZ_XD2b6>rO%r z?4*3KqC-8jSji1+9%*&Q_!twhV?_KJLf6{(8ndMDRKGULL2Akl+{ri>PkFtv|4HFj zXqiE%dT8M(tTGf4gRXGNgGQ6v+&byVk0@ra&srYPZYq3^+nAVbXN(4f#3m;e?fS~s zPH9BdtJKZu@H_CB7F=9cvsWU@fm zYD$}5A>VT$=6|u=NLXE=5YErlXoQ0GDpSgn8v1-)TOdvYzwF_kQi-eG8Xu(l-A z4mASydaT%3Sa^YwTFRuO%feD@;^<~FH$x`M)oJ8Nn{ zPx{*1Dga=Yf%ly<2jy(lz^+^Cu42dK`BB_t|(1Li3Vk9FnlT_m29g z#n!4<$1^`~eaT_O$8KA+s#ghoP?jD;O1{zpGbOFWJy@khkdyBlm&~v2GFBu4S*BS` z0M#)~p=9W!)W_FZ|gW1scp|SbN?LU z41d8OJstx=igk~lmfv{?>L5_}$`y*Q4dpBWc;rrk4y`gm(L8Tim-@1GW@8T8MjQ4~ zu%n06FzV_PXH4+9feX(XKRc; z81$5F_?Vnd=X&9P*mP%}XQe?dqwmyVyY0+Thdzo*vEzR?Wq|wU(ktdG*m?*_lY<5> zYjQiDz|}x+#@nzl5#yP`F}m6*@yTE4T>tX+UHZq1iHo?9Of&UTHN{tE#0*L3KuGq9 z(VF?(fJ&X}-_iEz))Z-V?aLnCu(Go^<9q*y*XABKIa)DxvfAS%u}qe+@l*;JfHB7Q zW=51~oE>CtUVlD+Yyn{! zQ2YA(Eq@<^`-r}!Fl$ATCb!2zP53=|>FwG=e&m4kL{Y|z<2KsBz*Nkz%S&adDd|fL zdKJD$-bRClm#R@=$YSb=KNN4Jr_(9?vU@}yTj-+!wY!gJ4mHe`OgEh3j#-`iN{?@h zV@@jdaK+`wT*HgiSI^44N~+|lWKKT;JfCNT-yG;8CtU%IQb^a9i(FbpMwwr2NXt2F zkGu?^Vs_`=*N12RD!XCKMZxPlG|NdHfN}hOw9hJoqW=jBKHhxCB_wOPY9X@G(P`}x zz*c_$qxIb4s%R}1-NLn(9{$Nv=_7EGS8=&64wz~){0P*cZ_ zfBmlaodr~?u=tcMnO8BnMi#m7>g7SSM0sSx3%+%*=EPJDH z2C~Q-PwakJ`6vL1`pJRn!q%94!$gLk@qgT9{y$b7_-W6(e5vu&&6t0pze7>Y-+7Jy zIkw+U_#cpKI@iBt;K2W|#~%(q`YrtM&w&0MXF$U1t3mmH2~qgiv>s;Pj&T3(MPT#b zpZFhOZObs`CJXqFl6kjXUJ!%JvSMKmBI5K9QIcBZK_(eDUjT|&nd<*Dh};6PL{*#b z_x2T9COxVm<~z=ePfSHwMbGw_WEx?VpQ>`@DvQaBClpcN=VW)B|LtaO>i-@c4j_2^ z=sZMZx^{(J{RO`7Sgv+xi*@a5P=|j=qa$pRxYSD$}N7e z1SrWKluGr{kb*;Y@)O!y!4-Pq1suvRNc7b3m2lb-sA* zMH%@kfYKPSk4^deyp)1)!3fgVBYBSa7xl%THGLh;Ivhr#v%FwOp^HnZd&n+vMBIjU zpjCO?m1|>{0%v}}en?`ED+76Zd!HHf4>z^FZfEz@L9$M+Xk!txa%N`5bUc5np?bwt z@+eEo&Eou2QT>&B9!j;^;^xZ~(X`eN1F|=IR5Q}roh1f1@!qXTCdI*}HUq34(Au6v zP>k?|KC8c${psz3lvERJ-t8#L5Ic6-%_;&Uv7O;PX{|^l9|V z^Kn&}ke{bFDzU>wkC2hxMh&96j-$&j6^6;~WuAM^r+`9U5eL#Y=ny521os_f8+ggyP!Y0t~| ziN(WU{wPz*cQFuRMSuHt7Y;j3d5$6Oa4z(+!zLd*Q5S`7_@4D zP15sPQ^ss~rjAhvR*MV%=DmBSUA}|7uG>Jqj8u^h*HxgU#G`FR%F0zhc(xjd_5K!% z{9PC{DqrObxV`4mRnw)`~R5k$`C&O?ccDGs7hjDd>Z0ykM(CqBXZ?sA6AJvsi6A3kwnz2l41re6(8(+qMb+xs~FM%z3oTd46_MB@EG=J+=;DsZA zv!Bj}hbi|Cf8cl%OT9v|C20kXxC3 z@tYzJI0&u}ihIdF?GCf&+tAq`A21Ws{T2bS)hzSWdCDr78`~lsf%lu8zGkBI7&&uH z)$oO&`|`EAH3MmGqRRMjt)4}J%BoL=cWYj=>(&*Q=k$1a7b5g&DUm^iO$ZS7Q$e|k zB(lBs3}X@EuWVq4#%;LiDW#(W56*DLBS;d9D62w`+~G}~^^8Ko^JajSStm+eQndhHUp z##gP*N}j_z(&k&5qwtg3uxep055i)&%UU(^4w;Q=I!AJy(X;n32A3L_)~|U91v!9T z_L}-|+c!-6?YO_%hK&X;_yz7xRrleSo^{63I9tg}1)k`rnUBMqiFi>Hk9PM(wC)WEZn%~X=VKi$N3 zVhJdFar~AOI;_+H2iF9#+FRTGc#l5)<_9Jl)civJxS!+9P$uiDphz~eV{7%wLYKeK z*Ks9hM!G}a+tliJ^2jwcNJ0eB#2^)Ks~j0)Hn-s4{E+y@y>b8MN6`c~4JTco$4z?u z|I;aYyXQ|jHsw(5?*FF)`M)Kf!zPU@mbd^(*lY5LY_c>25HspStRJCc_~#_Q{m5wr zFUg-UShYS-&;@2f7R3>$_S=XeS{T!XFCUb~d~i@o93yLV`K1bCY#l+X(qrjj=V^Kr}0_J|O7gZOGmpt7rXtNz2x0g zlSX@*R-g1o^a~J;+Q<#+8h+JQ8$58pp^9e!=pWh~$rq3>+h~rmp%IO{^Ku0ydm*7={7FcJN|Mw)GSlUeFEqwOYc6Ex77oOi!r?f z^Q-u7?Ej?QTV<_$rHhlja7rmelJQZmd-L!jYY$<;-3uk^wr@qq=e3N7IQt zEiT0(LbHYOoybllqsRzwDVJh>1e5gJy!s$hFBNMgca;bppmC7{u#F5bT|pDk!R3e> zom@{baFZORO>~&DrUW5F;IW z`N2_0cd;tVG{t`uXqmvqFgtr9tOVtOxV)ndlC4@nL>CY9wwkVGBv-1bB{RD(teaQQL?wlI1o=1L#NjXj(()yf{VX-eS|O7Ub+FvG12q(!8f_% zTJXZ$$1kThBs2l8Q1_VlwX7bTWBq$b_lJ(l_V-t#+H<{4lTQGwnrb@er>ntma=(yac@W zp5)27>Ts#QYE6v-Jg#elz)G}n$z}P$||IOsnjX50=93ld#QR&UQc^_$lVLm z>@lG%+9|OfHMstZ{HfmG>rU-lS`uD%@yTIJjh72OB+rM^OI{2!I$xTmT7IVWWQxUb zdH}?viH%J&|2uKucJgr!6R_OvBI^PK0sDos$`hqw#elt|fa%6qx^^S%XDv++6moZ> zQAi&@jfHU+OJfxEH1=&a1lrb_tv+6Ns?-D@(YLqU`QE2=%o|&qy|TS%;{V)gcA6>y zHV>av@Og6?UZw88MTNN{6)0!q>^D~lqoVhJvg_npxGvU@!R}Q^x(ut0iF@U1B-Kz} zhZ%Z)3m!5|Og&c#aqFb#+Y3mFtJ@O9&u*L;?^y<$)$6|xM7>ufepNL2Yk69&(F=Xq z{fA$|{xD5^?E*_LdepXVcEfG8{fwhaOB|i}X2wY1Mlh#Inze&JSi50`8YmrJYt%_X z=v-}Jt1MsH%y8fGVXxd!Oh7k{q-~ejPE>!Cnf}EKTV5BK7{U@h+$S^*i;UXzLuno; zP_!d1K0MeCf0W&ya!S^F>?&C365Yf$<6ZUV58YuPIl& z3b7-m5Ab9^)-QJ%2q0CDp^Mk#!WVkCg=fe_lxSU5(MNLR`T`^gS?>^W&}nK&8LNR! z4N^NX{=Gg8pDK~{tsRw-4Jolna(nj;_p@vxai@KMxiv$buvwgG?bL?ljtLokK5&9v z^Af|j`#aJDABS+2;C_kGVQaS_a$>C37*DAQ)b5t!9@zjjXNMb}SCE+pcUL}BUGo;K z$}~WGK)-}WfL)>1R0pkzPSV3L8Xu%}E);Lmb7!>Snp=;)<4(U&Q&oF2sV4U(^IM_E z3PN2i$u53+_o@3@GOeKJ+ZmUAF&E@4#{FvAnjsDwf5CP`VMQ%f%ZOWSBA-4X&|*Z- z-u}eNWRT@h(gx}Ist>z6MoiAmEd~oZnp*0U6nSDTrphbsd>F)xOEg!p@q=pracF-# zq9E!#+cHHXuzr#Qt;6?jkL7gkc#b-uzVozU@0B6O!C1@=V{Pz460dS9QtA-650<$W>bJw^2IM2hta;(Gk^PT#gfCbAU?#W&g79^|zCZ z!)y7VyRd0H6XzLrYQx+piw&&!;!5!o@9l9r*Hq4pTxVL0E03ytq6t%B#b>ciW4@I! z*aTxY?o$^;eS*$5qjX-&|9Nx0$h?W1myhh+j~B=wm*Oz9%+wYtp@3b;Ax^e2#_Jwe zkV&q^f^WjjA3o?iftt=ex#WkN_W`u~?5{RmLxaDTBjna%08UnUo7YZ2^`lDlz_p9f z#Hb%jvme=Mg%FqZSnY3yIVf%~1~{KAlcI6I7Oev$T02V}QuV^1+R7L6jFe7d9=_la z_bxVhayjly9kO27Qatjj*%Nyz;k~8bL_YP*b=l8n4$mHSZS;j`gwGQapYZKQ(P*s~ z%USA?glJ|XuwVnP)S8BN>a=>gpZ4(S1-H(+Q${mL$%JE6ReXnKQtHVTTdl>PyTL9W zzn_Z!P|G~bih&C{ZhQI^O4V_{D(buo=Sa(JLC(0u_CJ(l#r6H#CA5m~dVRoq?|bu$ zS2BjC4j^Oc-zzsfC%W=0g>LTEoFqLQn8M^&8I|Ag$kP;K(Ebtexl-J;Y z4rB5Xd%i!Ero3-6lOZg zSZM@Q=_$}V6L6pGbqCn^A8JhJ59C+_y&9(+^6U-D;EjFIaeRDq0srG-A1`~6AGLNk zX~AbXvf3xL57px5Ric<<`JxxskCltL!>0L#UzKCteRsiyHDJJ;-sx7+QPdx&D)d7Y+2A=?C^u@KN=bczcltfmptAw)YdZVP$yC) z^6@NtgBIT~?-#!Y>+TCL9sm^IwkF%9WG;o0UIR^!@itAT=e>!moQf~E#N_Z<*bl2s zY;C=vV@5CrZe3o2x~Q($Dt#`c`Mm;~B;hb&Gec>1!Zq2hvtJGUFQf8GIu98=KRwHT z6WTv+1G@m$^A^A3>@}l~ViE3bZbjB%j&)XoitGEJXv`2qb246fa7cN-AdrK^ktlxt7 zdqoKp_u2_B`%;m$`7u(@AL=Yyw5YtL<1m)FRz=8TldQlZv3hByHSUpC9lC;o7sPw?b^;`lGl0wV-WgJ3vV%1VaMb->)y`>xR z2@!)B;8=5~)ajkE0tgdMAZ$X-zM7mSbc?rGLT2AIqW(p!R@$`LyP0FT)F&KC#L)_^ z`^n|H+Ep3iALh`;FRUu(R=Q%TwbQ0Csu5WMXxYE#EoLhmwW6A)E>m@mH_A=d?!k7lYY+Ou@Pj7` z44yR_$TFE1&qq*STG%o{>euf$VI-|EwcoRn);JopmoW6Mg_Dxg>+T5t{mXai;-erd1NyCkm*?w0!?aJX{9JK}l*%N%>$6X5Qt zL9p?m2*BpukGue3AGc~ z)+D!m76gNC%gp9!$#i7BkblfkT)QXu;Y!e^vJ%@57b50a2@NN9{dw6s;Nl9_`$Uvm ze%gCcXYRjFlks(op&8ge=&l^;m!6k8kBAgB0R?XUu+5|8Z5W@nl_F_{!v#gF&ZiW= zx8&#znH-&>kE323+6QN|B@1OKNbpEc+iXS&^lXbyhv2HxB1&jyS$soDel;rf8GK{t zMt9SN;%C~!*7RwoYZLGjv1{aMneP~crGCyhALoIY&6m!p=4i*rC*Ifdt@^|gE;Vd# zzS)B`iim*h|_!ueu-C8H$WxOqdr{&MtQ66iCC*H-u#!tS#Gd`1Nn#qyO4wI5#2tG z*ZCGT$v#v+x$QnTaSOl^^G4J1*^JBN!Se}JeU-Ns9V*Ms?#Ghp zh4$W3*kQZ%Io;HiDAnkNXC=CrzS0^vMnlorOOL?;{Al`v0?A6*I{xH^kr{PA+W!=>it5Wi2=uZ z1M^S4mHR*eE^m@|RjMQQyl}N<+S1q`rTQoV2=vyP6Vr`Ogn$Vrosev6gMe;WVY@!& zVXppP0sT+>QjZ={i3D<9XS|ZDUJlWLI?Oq!0ptS1t7Bk{jCvR+)nNJoT%VQ;EVqhbbz_93~D!L^Vz9g)l0k-M`kj+)+*)? zwzlC`L~p3c)hlcRs2)w9N#CXLiq01ZhiG%9Zmngewyk`oHr`T`rq3=+!xc024~mA1 z$b=H%&CZS1aYQiU%lysOSIutfvN1T*>#|9kgu^J@FJZkz18bF(3r-^~tc@EL@HyUc-(AZKmBH4|MW?q_-R zc>I$X@OE)IuaBp;VBNI*>fg)Mx=6Xy$*p4d(4IV!wbF|zpw8O~FEGw?*-Tz+4lz0! zdo_~OuGu8%9k})TFx2hh2Q^n}(>BnT%vVB1#$r;OK5>I69%cEE+F-j8)m-3-2f+t! zT4u7>*^lhm%T4FdiMs`9Bzdofiu+aiMeI0#zt0YL^ds4(wrErVSf6%^QI%u1i%gfo z30IZ}yCUs^gYrITF5&{(5wPt&NzO`+O`FH$;e-!rt8>JK#iuDpj-&wn^Im*#8FpJ` zt>-m;M?isyVz`7=xQNzJ%n&`19kxNTws5phwX}~&uF!7TvML&xJvgR2u6YjP;A0Yz zDrt5fBmaW`?VVq>!S&ic9_=OHj}3|@B$xUaxp!3xZ#2E&+y5P{lA?j$hY0&?b)HFK zm#QAMjOK4o#NL{zMDg(J?iY-Z%XdVZAZ;biD?zUf^QnnFE`*;`e!(Pbm!hufu<9%$ zjNxL7EN8S^1Huwy!27^>s#!}q2hD@qTq7p0E}oo0Sv4g4vv9~h7ERRphW41K zKV(~a8bUcM;oHBKWS@Hdc4}*p!sMbIj@$7;8rz&gxGW?$xyUk|sBlv6$m_EJZuDlB zGl(HX?fE%#K$fADOzl*Y-+iguufYt>c57Vd3!&XfY32Kn+0=DIhu?hU-A**ws>?fi z1+h^Z>}wIFXCS^1QR7a4%eIQZOndE>_0o<(%F!au(TgQd4cVy~$@!ZOKN0;~&d(1l zG?>Ti!MUd~{U{ml>Lt5N(LPLx=v$%)Jpa-_wbr;rKs3m5VAB}ID+Eg{<3@vLJzx~_*Cm2w)7fr`&L1#l1ThNXP zGKRNErj`-0E&OQxNVMW3@RQ32b6Cf>=)hYB)fz2H?yYxg<1Fe+CtYb@wRki~=16Pq z(=IYb`Y$i00SL^)hO#dNT+}zp(w#)EelK8?JXzRx&&bx$N&Bm)QF6iiV0ge?Z&LGs zwgE%*D6H<{!IRIA(V&2GTeDr+8%|b_W}d1-y?2Lj2}Vq9?c=mqj_A8a%tZTv4xBjQ z_ENap1(t~3vf)wH5d){^jy7|oji*AgV@#|+c#el)lNIOc(AR zF=sH@YAvJU%FAf48RTMFAC|BTWDt3c$h;-e{_7lKBR8#{3Z%i^+8LB>5t;^jMaD1t zn%4WiyYZM*JyK9w!EIQb&gviAGpxXG>_7)(l&$+oo+wZ*xI55MG<$zQBy+-A|G8vC z+J%`Y&wZf1%rzj{b2XIBYz?&XNCIg54Qph`2{X6^F417l_q?m%gGh!d1!a50-Rz}C zA9Mk*_HA){N3dQe*y?|9kS>yN$k==oiJdW~f}qSg8Am`DajC z?>-&sv`JM6AW6C41B--uX zuG*#ibg{s%aA-8VxozwZ*P2MK^064UTr|T-S$2oQns4+2=0k0!X4IRJ!Ey;v$F^EW zwVKY(Mn{r2l_jd2M!hbCQdP-IRd*)7Z;6c(FilN!N(shb*P$9FCbKIKK<*muloPM@ z@VbZGzSma)w=(^$>~tK}YA%8fR*-TdNxd>b(@Mjb49zlZTObkphzACP|f#nD_B`e^iQwG7D%pvP7lxdI>Xy`xxpz4 zY2~^tMbdju@RSxoT0_J7F}GYz0}}sMG_nTKei3LA&Sh6im{)fw#;Nh8Y9TfDO5)p{ z=Iih-NZ|?HIYcUJ%Wd8>idLX(_?yR}K#Q+_?&Yb=Rr;7)*cmm3G1F1iaL-=0JAv6H z4qarWVVT-Eg^8L;;QY8rw3_9u1iAzEwTJ4hl+j$kn{b|fteb7YZhbcVVryb4mzR2# z?})CLEU?h?$Seo?4(=j7@-D4#*bqy8LCV@vMWObt?A4bmkTI7_l%|ohw2xZK2pNDe z2hjH`i@$dr%u8B!oAz(cqt~$YTrP!{3u1E9$!@UaCsnx;JUmp9KD!>0=%BYhh?)3f zPgJ*-C(*QlafdascmkdPVi!B$dR%HcR_6@_tN#7QGWt9v!~rGMBxLS@U-lK*F}DUl z=}&>{NV+P};>7h_;Yo}}-0j8%R9xjXQOy90oN>J9gL|~9_gXU7bOU46lS=p9*j+S4 znjbOeug{L4Q~E?n{Z$^?$@PUT*DVkciS3n1SsZV+zWK?G!vz7f>+V6wRD32%vIo89 zzFo9S|Iqr$?eCf#!PZCj0%hJtoH-aXR66lSy%+!bZMXUY8}ZAB0%dl0(EcevR*i(i*9PgXW%S3& zc#$}vv@5b6Tk2@)^P&A!puZ}5A_UFrK5ai{v_!u2DH}9gYH5kV1K}G`&$j)5P{zv~ z?-59QdmMXz(dWlOEN8?IFUMOMhKRFCJ)4Eq61x|MnURK5GZ78KGvOt|!$Va?V%{=# zK@m*`Mh_Ntgin@_z+64A7fp?-!9yJ(5r~wi zoY6Ww1BD}t{hdGJI{`C!w(k3=Wn-$Zj;<$X$!Bx;1rh*5{B{oL9Ch~=-4q1Wx_6UcVmlhxLD?iO43!=$t*5nS(Za7YvS<->eq1Pt5Ta30h}*e&mQRa4sLY z*_Nm0B=#wq;%L)#qYf3rf&1uwF`4Mrd2uY$7MG3fJ!4YjqgG+;b@S$enw&l&m&V(; z&>;5Lk=J^_lKUOisWbo%`R`Y+{eZ9i`_+-X!w~lO_5X40_|J#Tv;A+xm_OenJ9XHK zuehWkbou?xAHGAnmFw9&m-d0ni*SVHAt&Ek&#n?Bxic|nIf(<3V2-Wn^j`oq3yXYa^(l|z2d-`BguxZA&B z7>DeetMg4)DCviPePmt~XaQXU3>J8u{^~Fw2BI(EwaOrH?;C(@1zx}Y3fy~r_?Us~ z8E^y~Vfgb@z8(ke0SvRl`%f8xdm_L4Ngw$F@ZF9W{F%zfQvWAD;9DbPV9k=y?3~+K z-Qzp1grMWV&LpM^ojCFnXfSs4TVGlL*#+XOUW9foRa4Gg2e{Z)PanpqSu0BNd_$JtS3;w|$6K>sGIB1wb2H|@lXRig z7D1?up&l!Bp+X^hF2}aF`ZxN7?zJ9di%vYs8C(art@xBo1akRftJc=m`cw328_5W57M6H)j$qS!R=$dm$JAoC|WJsLfXsf zR;yCGgo|qg7up9b6LY*Ii{k`|wy`mj&evQg>D4;Vyqmmy#rv9UVcX7vVtYl0ZQU)j z<`78&OBk10mt*z_AVa;pn>cEG2^=+4TYeQY@7cQGvJ;`s>-GHOaabT}Xq@c~l0Deg z!OqojZ^ydk|Jv|s>qsW@M z7T$z;&FreXij5NK(>b|kbQ(vZQNB52EyLcYC*nvNEhE*;$!n3ys4+{3Wr&Wra{ptafmS9R|l4OiH{ z3rmqiBoPrr1PMVf2!hcQ2_jnbPV{c{HcCPeJqcza1_@E4cSZ@(hY`IDMjO3E8+FXt z<9*-XI=^?Fb=LX5^?hr-$6vGTS$m%S>}NmwzOMVaue%sg47#oCUo%YKkCJVVqUfD7 z^qUe{w|QB#46)12pt;y!tS_-TGSil4B&}i=UF+Qug45KAWUm z$Q-)^-&w#J-kp&f_({b#yOpnS&Ntxrk@?o9h53UOb1b5>VZnn&i?b1L`Y-7a8NB*P{W$& zS6prbFx}&D%AzrGL$sbSVw!-=TJUw3=7fJ0AS{jqGyv9};dEc-_PUOt)0qWTYrl1i=AA!8=@+ab>Dn@DrP|-%VXx#`xy>Z^o%mT1@Dw zK5j-|`P{8(d&Sc_r&?dswC!NGGwZs}pk%#%A#s@2t>z}HbxU+)J4d8rzpeo6NHwl3{0_y?g=}UCu^Ue z^Xc~sJsQ(1mq%paQ2JJI(MJBo38$5sJV^+tH4z?Sk04Fk_pBn;l zEUCKS*ymR+<1qhKf5$4q)Ov!jE9IQzdZ8&d$n_Rwo1gzFIt}%+OD=_67t(+kKSHUm00G9ph_9_Q@7&t(5a$7G`^y*5)9P*2^o!nMnK@Kb00kp5bzps73b4wA*#a<<{LIki`A z`wyh2z~f8V@#A$T?B==e`;D+5G!P!$qko zhkfyrStavCXFQMwQ8N8Ee)R6iLs2epMV$(OjRn@BL4WA~ zI!Ns}Zh@<`{;}HC-Z%zM?A2Brl(QJt#Hh4ahnbt+jdL~KYA)P0XEL-glMH#?C*p9d zoaB~v;ydU??y3uBVRxOos3Cbt4k@hU23PHEf$hD3U4$3~ffrsBJG6h!M(uH_r<5TM zKvPAh6JhRYIT?TAzOvWw)Kv+v>c?f99QKcjMb2pprFyP#AuvCT6+mSwAjbP2b%<@-^`jp7&Q zUpfuZv&e0kN3?35h^bQ1j4)U6(mjuPuRd7F;n^~(=;;dr<9ah_w8sGkUWJC(5*en21SMJ3cXlADp81=<3Jx$K09{hu$=u!FTM{>-5ae z&2u6SA5K>BmyO6`?tXYMf+zK6Ux0!wlp8t%odU$XnwjE$(%(;-44c!E)@=>E-3Cf* z{Is5BVU*>A{u<*-&4%`%SaRkUd=&)U5@Y)^3nv=weJC-;-@e-{y#MF?q>QhFonisC zo7Zyoa?ogqPj6Xe>WIlGh(7l^@sfVPa!;+?jukrHX}i2q33VXgj#3zEyNfj4HbHXs z&6flaVEND^ef{)f(QGsvnl|u+6Ff(xjKSPP?+-XAGgv?r?G)Gl7CCt-y#{D62TLSv zY2#<;y4!4HJZ9hiWW8Tn(H(?1&aH{TRA5(4%ja&PahZ&Pd>F_80X|@b78kYVzVo|U zCNMd&w^;YdU75!4GLu7>>&qtN?VAG2*jfcZyNy8osqwxFBSg-n^aoH9`M-Fv5DXKNA@2MaBjd6!W(Smf?EGmpJ15no zaz5%uXfVyETz^%UJKwG4A~PhPd7OX1ofeV75v)lOuOHRvfVE{*GfJ)~D7nL3$y=T| zQRwG+(RG09QU{ETE!CVfq%|0&&A`t%d8U8i#S78_qvVu7UXdyD$*q{sf{O3eMInB7@H z3-5J!A(v+Fp5ZoLJh^HC<?3elYU z7+%P7|D9o69(ndMrdH03!JWXuWZQ;Ce;+s3ID^rFJ_w z8<|Tb3HX70q%lCN#B0(MpGP+wxfU^AzN>rm%$7657m+`NK{O&B-i?o__&VSP%un*@ z5K3u#i*oSmrs`Ee*Xt2dWSbmhApyIr|Vu&mmT@msAjo; z7a!SE_L_aJ_dwR|zaYVt+_|&= z*Jl>FD+3@MD9HE^LB+tZ{@=lF!7mpVId4c9$uoN*qQy6EivhlyU9Oz5kPkpuZ6J@z zay;Vz07Ig4zXbIzF8=+kpnuMnfa~oz$qo9bq(<;g3hZLJn@+-teL(jdD@M``<&h`? zSkry5_M_C}Oo-mrms_xcZ&pK>(n%b|HzJ8e$ebk4<_p!{v@~t8e(IFN3mYN*(k?%V zBq&Et4-(+D4@KDTLqomv~`8#CwbkPR8aAD zPVM;w!PSkFsV@mnJa@#+HEo%8>s7u?4HaSIMx%a=6F zU3;-Ik^W*ud)uv=ax4;d**WKobU4}i!rt)v1is(Loch1 zL0Exi=VcttExXH zQRXU%3Jb6fUGqOHNfQ0BTB_w23DhG*!j|=G^@z)Kn5xqZD)%UDSIBOPSu2 z^H{+q|9Ed<`Wl$VuL8Cgv#%DC1ow#|FCSe&r}kSk*$%bxeVN+41D2 zh%mEcytj3F+66Qjg(`-)9Y>M1F<2w-a{j5|zf=mAayGs1=NeSpjU>y|lliTI()9TX zV;=uHn>}Hm6p0LWdK=LN%u|C}x)3|Kh_D^hktJ~|6ovI32xOG5#lKw}-{m}PN+*82 z3}1(*IUhF8kFgN49jo_JKt=s|)Aw8lpz^ype+BNG6RiXtc#PS<)GcMtNB{nkUC(LJ zyL}jwqFyrDUpgY2k~E!X!Ou;fA+i!#pjp|uOjXA(R9~?CbHD3xvRBwWk>h>04Z6<$ zGx{1ajbeX+aB!HS&^Gdp7JsnG&t|^^QW>Ypf(0ujylNFCn#u=0{7GUog=cUAvc8=gqes2< zgR5=NP9~A%;y%aXpq#HtCQV3rKZt6ZkO3YT^=m-7J;vq7sNZ_-SW9Tiob8 zDr6c&LCFJVRnxu6y5OF}hFayq@cCg4_FZagqX<`@MJABNX{77f}XcKyZ@)%3kuS)A(jgN5oZ3)1;3Ze<4x-ij9XeYM;wnJca>xqx~V z?+NP@Ujh1V(;>byuA6GsgHXGxsX?sk_Mm|&a z7_|&CQ?Wjvf8^`em%8s_-9FH)us&*G^~r(@^Lq9Oxa7q9{#Qj9NBWFjCax4MhkVb1 zsIwT*B3x5*OyGDYiAuY3y3jyJ28kQKNm;=Ii~KZQyS9jg`NK~dgf@7{AL!e zw#Bm9@18n70#~Tg>RUwy7rxV7#AKlAf$z_4BYm7Z}jkkx%wx{gwIQ; zN0c=NGZ`%+LJtxsK9#R4|9}l>Hgkmb=(dM(4)(D<&{mKfrg2RAvynR;J#HjnZRIiX z+%&2sz=0dQS}q{%%^RmF2IS4yf!T7J@=hmw*&vtgfe(HaG;v%hX_o#YO^OvzPp_c; z71#GVcjXhv7f&cpzfh>gK!;Z50{2tn2G>fIVL|u+6Je*HQ=C60M{9C7TovDK+IXt73`(Er>w;Y6Lp{zQ_65*_M*hr(Be%r-wcU z2lKN63ahT?IjxYfk99PfvzU`U*c&Otz1PyuX$AUC6{s6XUux}*t;0T0X)iHhs=)2c zRV)ttNIdTQ7V{k_l;{U;yu8JEvX4Jfr$JFl3QZY6bJI5d>u!(?US=MjC+o~;9dc*D zhmY*dGNfsYz9biziOG=-_)iWZvYU8JEZ$<6JH5X@wPbR&+-rvTk)`k;eqw);7#D-_ zr?2)G=poOhmn;GAPBke19rGzziXb;S&R_@=eLs5Yn~QRr==5t5@pGrtsZ2eB71wc?pt(3-N(I)HYG*{ zF3J?>S<~DnJ0B_mOI9)vfeXCTD7Tz4s?`NJA{tO5B59;jk>0~srTJwq2%Gm(rYYYO zrbawq#(+TXyco)M-X5tRwQAd=iKNmj=viqNYa?7}OJs}-<=y$=_s;h3EXGf{>6)m* zAmg@){_fv)cce|_dHr;=j@$t8)nV@ro^J)#*=OjQEmLe7t2VY01sJXbxxV(}w^4Mt ztM$Gm{afMFEmvf@5RC{ocUS6j{*ST^FY|{a3U52M%Rahgf~%`^D!J0%n-uU|@##>} z?>m#Ao581&VxrfstB-BI#O+1DM)t%wbFwX72s{~FFBQqTZ>3b1j5w)A1-Ux?UkIe zR_+cyYykn$R&oVgbGmKw zdA39}hqodrkCJpaj}(=`yyy{W;58TI#mcMv+2dz%DLv_^7NF%O1FZuT*i3lbXZOb4 z80iRA-k&0aI(aup$8$(ZU%g8q(^^`O^1Lh$?7qnRaIbeXvIYiQFU1K);&^NTZS>o5He5ZZHhXCdI<)B+iOat+f$dFn0t~- z&$7V;peC0L6r$)7xDAQ>*n7{rbi!2)F1bC=Z@H?L3TKhoOP4%p;h#6#@m-y}!3elO zb}Q*50IMyz^lb4Ak&?QoH`EC3JDxRb7pSBjtg`sY*H)fti8x`|482a`C69LbEwicN zhAcs<%svM;+XrR*D2v|H{=cQvDUAtEaqA^k)PNR~jO@bM>JO1~$%DI1X0^|!?nzkT z2ojdsBXgzBsDbTY!!`wfCQj!mxBsAnKJVB}@_C<5a}Mv+O#YqA-tYAK9p`n@J^pfx zRM!5MXVMdlRfl&%9GpDM}w84eZq?$VDVA&FO++MOiCW;txZNy|@Nf*EeyB@6azZ@&}aNo%u-bqw>?I7}(vAx}JAH!9aYcs8fPjsDJ%*zH`m5 z(SeeeSyazB_(wUE_|rZruX=>JVb8tEDUh51%#Ol#+WiQ05lp6)L#dfwo$f zlsd!7!0vIBr5|t@ceNYS*r)<480SW9LSJlD@0;nDZikot#mAI-48_eiTn;in?9Z&~ zN*Jp`jrXXHWmc`S9OZgA1?UVj1|H1S59_Q#ikR*+>C?pkK3*kO1C;4P*`mQ^3Rc$Z zaQ$SY)eDuc^a#U!RHyEl^qXgHq#hEwD7Lcz-^PDDcN_7Wk5I4ddobD6yR`)``gAPf z7^TN1)Sk6dDH{}7cv@T_vWZ;9xcRddWCLLM%}cj`3f3*jEq^w<0`?fUDC8@)y1bHf z;)^=URUjP>NSy;8wG{`TTJLNh+}l*4<27bi+Bo?>;Wk276R@YlBe{wBTRq`PjKiUY z<2v?{%<(LazOROz{bbRpm3ruU$E1m>Ek(AcX^-1eKYJQ_brO=(U{DqRv99BS9xdaF zYthpn%5Jy126zdPJiC(JM>EQ&i6N?Q208Dz=Y=np62A5gFwST=a?cMgyZ<>0v>s2! zs1@wKR%Nwptb~*B-czx>3~aKG%aMS*|9gFmE;a0`|MM@9{ z>sC({=2>(dVaaev=}dvV&lGTrw(BKCy85BapCvY-Eqqn=2a!0pVRqsp(=QD#HVmqM z`^o9b0M}T5Dp0d}S;FdYT)}FRDy>{Z({o6J2b}V>6aI-#?vvrhS7l8#GZ>vC44zp# zR}n1a9L}R@qVdxzIHfvYX%oL!#~HuTyTfHC!0^X!Aa&@+^u2mr4#s4l)@*5~`=8a% z_`UzK6WBit?}e)?VdIx2jE=g)sXDgiy0`RPQuk|>h10T)s(xXfLmEITiXB}{+mEMIX4>o;T=!+R^pnU(XpdmrEU`9w zzJ@{p08Mc#b_jMEaBAAsa*_9iuREFPJ3Z8JI<4=oSSGQLS_()?)d1uguea305p1c6 zb6tf}gM*$A=F;H?P{tFqL(qA9Iv1(p*0g5jw!kimf;R+4(IS)p$Igiwe7la%lq=Rt zzh*<7M%ug{K_ZxVfmp9ag+NG<`(AA%-?N=oFdE&J2+M_$TZ=ib_H1)rv>Cjlt6S6K zD=9G?Oke6M%@0N?*?R*r$2Nx}hRTy}K>7baRT?KQXB7Y(@ zie}uo5p;04dtx-!e8qQKPON)m{m8Oqd8v*lB)SQ==+$Rc=$3i2+99{8npC{t$>53h zXArSVRvyhU?~7}9-NAimb@t}~1hHxevlqq7@CDxkV}_tsaRyhkYNOUcfS5y=qNqs7 z>y*HKJ_foL_lVL_x8{xr1)jSW&uA!f#Z&(%d+5*T(S0s-yy>VT8R}DPwH7v4*f1gQ zETOI%F+RUyJ71$ky*hw8FL0&y@r_U~z%{lbOuXPFD9VZdV_9H}=b;-;GSoG0z~68? z5Z+Ep_RV-HV)}_*-_pLt#`sil_yDCU?;;$#a?6l(ujGMyHR+x!>s~?)tF_swZC$n6 z@ZJ=jp<0th1J4(%sK=Pg^kBvO@K~&>b5>fAtE04?^NVjWGD(anHg8qZgH*KxXEj!{^AG3qC|5&z|v?NS}2FE~B0r@a<#)0Kl zFSH((mrce!OwHTeAHYlb)gJBWj~Q?W6HYn{fd8A}Biy8Q$z-npN}dm=65|U#dhVh1 z8hWzGo5WoGa=dGzN4#j;K+VvvQNdCxi_rx6hsh$w%PpB!2O>#1%>BYpC)0^Tfo6mH zk_T!L_fOB)6mvy!gh%EXT^aHlF<1YB8+t+;V)B}{HSv3FLFwx#r|eMO)W)n>LGmV} z6$ce)zlB-E5p9*)YVUX+{?%;VXv27eB@Wt8NA@=46;J{Dt^=x1U$rUpK}9Ny|E4TJ z&RJap8jYuRGs5!WR{M^Lo8IdQKj{nNc>v5iQSK1}(yM%iPW38NPJ?C}L3hNF-S`s} ztV`6{i0vnmxeR3wIX-1``^j}2$5Yj@zVE#G9S}EnrdJ8E%@mZM&!7KP-u~)hU;HhE z+`GF2%CAL~AnGo8OFucsK@FxNy$pgtDa)#U_qY^SJyqHLzhV5JEZ~itLMJ{(#U9B! zcVPQ2u~Sy?m2s;IY2GW{cboKV;ll!^vDF*GuY*Ol3~ood~U zAh{(O_oKBWt!A?x;a3*<`Bp(6nm^y6WX*k4nJ{t8a8a8tn2`dl_W|cyo;ogWzk{p1 zrf#Tt9_$=61yLJp@3wv@NNJ(-%Dugu|5N>_b2_hU;CoK8a;m+H+0459);?ouyj(L& zQ}TwlzmvyhP5vG;d}j!Bi8%}DYfttTXp?am%8`y{jA-YcybqsX`gSt5UhQ<|D-ySg zt<^+V+rB%Qi)88Ahe2S6Q6s2OcV{@IHI|R)lTG~v8#HU=h)8=%HLzJ z(3!YsrheOvfg4OS+jBMP<+s6vC|iZ5vFhuu6h|5Q#N0{@{lv{8BbxwJFO;>VF?d#E z4D=A*2f@f~9#x&nF;sL6mf$=YmQgTriyC7#;YP(YpIkmn3Qzc5vx%23BHJ$LU5jCW z*zJ(h9FNzzX>yMCjmcBmP{jD_60O_edw}aKI(>>c zrUBri70SSkgHs*0CqZva?|KZBUUzHt{5hY>BFXIzG2qeULuxl147IxT^sFj3gj?ap z*M~3oE$BMK7~#^7u*m18Pj;W{m*CY=^^D98hndf;%obV{K~E4lZnLddQjj4Bf-R|P z$mp_$r*<+;3{bCCbvi^?UlyX_{>!-QqO4n9oKJrM(n;*KsCm?ZY6siA=|BZyFggVL zIji-BErVw^FU<8%WE`%Y+LyC)u^PB(%71~S}ZOM2q@39*+bCkUAl zui1d{>Az{|_J(~ z8>Sk+EG5LqTP`RC*f@&ax5!=~@{UV1Ez4bdJw{H+_wje=yg)ws5+f5V_Jd&O)=oHD0jk z}@LGUq_~dq(ncL5$@lpF{<=SHu9a@$E|D@RPf*ECnVKs;mawVKX;lM zvciqs}Vui*!t)&M_7VoaAMkhas!h)M%Wcqyjl(!JV(#fTh%5IZ;o-G zHcr1+d@8-}6m4qqQ^}bVZSol{lyF7KLi6~RL`t!TSBIb1IkHRiX9NRX(_v?$RC9wd zo&^s1$OEa?Ei~+BH$6Jybz4c;>?-Hc?Klcg{j?`@lsoaJWg$}+>l8c5m4^Habvw1H z>U8>9Ir{G@LRK&>ZS+cJ-9i@5jR4GkbQE2eooRz&ma%7ccfDPVR2C$Ca<_vSIgbw> z^X`!8Mz+G9o#iC|i}Yal6Y%9|J1yv7_*N1jWfMg^g5|{4ZAsV6hCy*{nT%G;QZk?A zlo}yB#b*-eH`D(_*MQ>c$wSCwb-j=Tq*wZT=>w2Qvju{Gh%u+kJcyH$X@#~F3zelU}f|F#Yw?*NuhrXw@^ z6satOqq^QF`BfKXt4~`0r1=^mJ=CZ-Hxb;odkOub`98`ND4jp0_80m{)W{#=S^jq; zSQFly=UvKgF7!=gkPhWQ`lTa!66HpE37#q$-%7sqvHqD;E`Uu*XMKJBU*Hjbsx>ot z?TkD8$&j%@S2LZ3>nyLd7!FMG+(&zizrg`a!gNVPN{E@Y5#M;7X)H_8R*D;}WW)vG zaZe?+%$mJlJTeL=!8qK}U6NbQ8c**Sp9xocnI+81mz}n0=;Er9I^}Yf&_*`!wsZE2 zzf;|0A@krPjbJx>+Q@5!;C5J5sFYO^$@k6)NB*oJy>iexuh1F*Q#!n_4XdgEzq*a5 zpS0cq+1KAt!JU$Q%QgMGMNeH~36-G9H!YgqbXo0#yXzd1{cV6Qbq4u=qA*CaT;)o; z3q0WCmV`_K=-0&IqiD_eBkom3vZvSGf2<~Y&sS98yV5QFKG`KtJ@yrD+z#_FhM{!< zLxa}~Ok*{mlxz~6a30=|mFg0!rp4Bm@*GBp zZ~?U)X5k*lT6E+(tVQ)Z8qgx-$m7%91ne^kA4ymxBTj!E3l3nuHux1?E3>odFe?k< zUv&Niaw55~wNNw|$*$E@E;y+_lUyyiAb7fR!A%ji@6X^0xT|d!Lylwjt(xVg7VMCg z=C)B{(pJkNSeW>G5zxe=3|IrFkbe!pP3_`Nz^&%U!430d2lB<@s9LLS9rx~gY5(+f z3oPUTYc_K}_~7;|y_wGktu@%<`dp_F(Tgc%9r^IW*qR}8%nFXHqwXPB*LQ)9(^6>L ztj=~&>g8(!6jmR&#i>IYF4dx*RHqiX(?S;~_Q^S}RkqerXtQc_F5!{X@~1*JFiPg} zlJAsDwvq1NuuE~SuJ;U_o_`NI^{EMJ75FedR}|A(Y0M`jy~u?j`?FwFX^hwZp37Ri z7+m(~;p%th!Iy8w#j&3NBgTa7y?dl5?8wlC8(14$O}?l#!Zu6eu}rD?6p%3r^4kp> z`m(ZiFbOSkk6#7bx=OYg>6j)l=bf7YF_TE6x2 zTE)VQ7PYq8Kl0dL#+}~}itSj9iXrFohYF=9G2qE^-2Xn6&5V3sVe7r-5$_djmrea$ zNVI`ZLG3F)+ago(UK(^SxI6HA!*wBMzz0IVTvJ}vfRht@+)x1c7zin+N?%29@psj5 zNV}r~8QhzIG}Q8{TP%IoGJAzxk(ohV?#27#?r3Oc70kir} z4eE+E38=R{y`swg0i7%4hbQ~V2_Bg|k+H%S5_#P@fQ}PAri8}rzxzZ@nDLeZ<7WM| zM{_1f(7XwLJ7_9|p+!~0rOiC&Bd2!u)%0mxzNQUBLB_mrPXzg*qqpM$1BVf-h3MBg zlIf)S>F+}5$cKV`t6^!;2X+Og9bNzWPftnkp!73ztW4UDOg@vB8DX1e- zw#Z0iB|}YVWci4uO`&t=z}?k%kokF^s*}_q_=)ZF?TOZaS8-*qs&@M>g~Qd+OK=2))`uy!pnm!rYAhKhRkVL++ULRB& zlpj1`(%d%t=S{21g?FQ`UHrB*pR50&U1R?v8PoFV-?QHQzDMWBP24BO9rRrm2r`x$ zPDyW3$-m;%1SUs5**-5>2WBKg$KF`|IML_Y>>P#1Y#PP)m-nrLe=VR|mDO8b_?A09 z^g6FN^9SUdODp!S&WRnMkDWv&$9gVmBrxyyUHy?W`2b>6*e0Kc-Uh$-keYhx0>fCh zw=6&&Ud%Xorp3{QGRJ7&n==n8PtBPO#f#cKA6}dYoNDwymTpJ5v!uZjoXBi-o1=p5 zm&Ygrw3J0Kam%Zbc)z^x+dv?jC~z}a$W#LwAXrar)g(p?maz`joHN`!R687jpF)lg zb&