Skip to content

remove retired check from research files. #14089

remove retired check from research files.

remove retired check from research files. #14089

Workflow file for this run

name: API (.NET 8)
on:
push:
branches: [master, dev, test]
pull_request:
branches: [master, dev, test]
jobs:
# JOB to run change detection
check-changes:
runs-on: ubuntu-22.04
# Set job outputs to values from filter step
outputs:
backend: ${{ steps.filter.outputs.backend }}
steps:
- uses: actions/checkout@v4
- uses: dorny/paths-filter@v2
id: filter
with:
filters: |
backend:
- 'source/backend/**'
build-backend:
needs: check-changes
runs-on: ubuntu-22.04
if: ${{ needs.check-changes.outputs.backend == 'true' }}
strategy:
matrix:
services:
[
{ directory: ./source/backend/api, solution: "Pims.sln" },
{ directory: ./source/backend/proxy, solution: "Proxy.sln" },
{
directory: ./source/backend/scheduler,
solution: "Scheduler.sln",
},
]
env:
working-directory: ${{ matrix.services.directory }}
solution-name: ${{ matrix.services.solution }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GIT_BRANCH: "${{ github.ref }}"
steps:
- uses: actions/checkout@v4
- name: Extract Branch Name
shell: bash
run: echo "branch=$(echo ${GITHUB_REF#refs/heads/})" >> $GITHUB_OUTPUT
id: extract_branch
- name: Setup .NET 8
uses: actions/setup-dotnet@v1
with:
dotnet-version: "8.0.x"
- name: Install dependencies
run: dotnet restore ${{env.solution-name}}
working-directory: ${{env.working-directory}}
- name: Build
run: dotnet build ${{env.solution-name}} --configuration Release --no-restore
working-directory: ${{env.working-directory}}
- name: Install coverlet for code coverage
run: dotnet tool install -g coverlet.console --version 1.7.2
working-directory: ${{env.working-directory}}
- name: Test
if: ${{ env.solution-name == 'Pims.sln' }}
run: dotnet test Pims.sln --no-restore --verbosity normal
working-directory: ${{env.working-directory}}
# For future reference, if we have N test projects the flow of events would be:
#
# **Pre-conditions:**
# - All projects export their individual coverage percents in JSON and OpenCover format
# - There's no way to merge OpenCover xmls together (that I could find)
# - Common folder "../TestResults" is git ignored so nothing gets in source control
#
# **Steps:**
#
# - Test-project 1
# - generate coverage files (without merging)
# - copy results to common folder "../TestResults"
# - Test-project 2
# - generate coverage files merging with previous `coverage.json`
# - the previous `coverage.opencoverage.xml` is ignored
# - copy results to common folder "../TestResults"
# ...
# - Test-project N
# - generate coverage files merging with previous `coverage.json`
# - the previous `coverage.opencoverage.xml` is ignored
# - copy results to common folder "../TestResults"
#
# The final `coverage.opencover.xml` is the one we want
- name: Generate code coverage
if: ${{ env.solution-name == 'Pims.sln' }}
working-directory: ${{env.working-directory}}/../tests/unit
run: |
pwd
mkdir -p TestResults
rm -rf api/TestResults
rm -rf dal/TestResults
rm -rf mockdal/TestResults
cd api
dotnet test --collect:"XPlat Code Coverage" --settings coverlet.runsettings --no-restore > out.txt
ls
cat out.txt
mv TestResults/*/* ../TestResults/
cd ..
cd dal
dotnet test --collect:"XPlat Code Coverage" --settings coverlet.runsettings --no-restore
ls
mv TestResults/*/* ../TestResults/
cd ..
cd mockdal
dotnet test --collect:"XPlat Code Coverage" --settings coverlet.runsettings --no-restore
ls
mv TestResults/*/* ../TestResults/
cd ..
head TestResults/coverage.opencover.xml
- name: Save PR number and scan results
if: ${{ env.solution-name == 'Pims.sln' }}
run: |
mkdir -p ./pr
echo ${{ github.event.pull_request.number }} > ./pr/NR
cp ${{env.working-directory}}/../tests/unit/TestResults/coverage.opencover.xml ./pr
- uses: actions/upload-artifact@v4
if: ${{ env.solution-name == 'Pims.sln' }}
with:
name: pr-codecov
path: pr/
- name: SonarScanner for .NET 8 with pull request decoration support
id: scan
uses: highbyte/[email protected]
if: ${{ github.event_name == 'push' && env.solution-name == 'Pims.sln' }}
env:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
with:
dotnetBuildArguments: ${{env.working-directory}}/${{ env.solution-name }}
dotnetTestArguments: ${{env.working-directory}}/${{ env.solution-name }} --logger trx --collect:"XPlat Code Coverage" -- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Format=opencover
# Optional extra command arguments the the SonarScanner 'begin' command
sonarBeginArguments: /d:sonar.cs.opencover.reportsPaths="**/TestResults/**/coverage.opencover.xml" -d:sonar.cs.vstest.reportsPaths="**/TestResults/*.trx" -d:sonar.qualitygate.wait=true
# The key of the SonarQube project
sonarProjectKey: ${{secrets.PROJECT_KEY_API}}
# The name of the SonarQube project
sonarProjectName: PIMS-API
# The SonarQube server URL. For SonarCloud, skip this setting.
sonarHostname: ${{secrets.SONAR_URL}}
post-build:
needs: build-backend
runs-on: ubuntu-22.04
env:
working-directory: ./source/backend
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GIT_BRANCH: "${{github.ref}}"
steps:
# Send notifications only if MS_TEAMS_NOTIFY_URL secret has been set
- name: Failure notification to Teams Channel
env:
MS_TEAMS_NOTIFY_URL: ${{ secrets.MS_TEAMS_NOTIFY_URL }}
if: env.MS_TEAMS_NOTIFY_URL != '' && failure() && steps.scan.outcome == 'failure'
uses: dragos-cojocari/[email protected]
with:
github-token: ${{ github.token }}
ms-teams-webhook-uri: ${{ env.MS_TEAMS_NOTIFY_URL }}
notification-summary: PIMS API Sonar Scan FAILED in ${{env.GIT_BRANCH}} environment
notification-color: ff0000
timezone: America/Los_Angeles
- name: Find Comment
if: failure() && steps.scan.outcome == 'failure' && github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository
uses: peter-evans/find-comment@v1
id: fc
with:
issue-number: ${{ github.event.pull_request.number }}
comment-author: "github-actions[bot]"
body-includes: QUALITY GATE STATUS FOR .NET 5
- name: Check Quality Gate and Create Comment
if: failure() && steps.scan.outcome == 'failure' && github.event_name == 'pull_request' && steps.fc.outputs.comment-id == ''
uses: peter-evans/create-or-update-comment@v1
env:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
SONAR_HOST_URL: ${{ secrets.SONAR_URL }}
PROJECT_KEY: ${{secrets.PROJECT_KEY_API}}
with:
issue-number: ${{ github.event.pull_request.number }}
body: |
QUALITY GATE STATUS FOR .NET 5: FAILED.
[View and resolve details on][1]
[1]: ${{env.SONAR_HOST_URL}}/dashboard?id=${{env.PROJECT_KEY}}
reactions: confused
- name: Check Quality Gate and Update Comment
if: failure() && steps.scan.outcome == 'failure' && github.event_name == 'pull_request' && steps.fc.outputs.comment-id != '' && github.event.pull_request.head.repo.full_name == github.repository
uses: peter-evans/create-or-update-comment@v1
env:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
SONAR_HOST_URL: ${{ secrets.SONAR_URL }}
PROJECT_KEY: ${{secrets.PROJECT_KEY_APP}}
with:
comment-id: ${{ steps.fc.outputs.comment-id }}
issue-number: ${{ github.event.pull_request.number }}
body: |
QUALITY GATE STATUS FOR .NET 5: FAILED.
[View and resolve details on][1]
[1]: ${{env.SONAR_HOST_URL}}/dashboard?id=${{env.PROJECT_KEY}}
edit-mode: replace
reactions: eyes