diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..12ce3582 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,21 @@ +version: 2 + +updates: +# - package-ecosystem: nuget +# directory: "/" +# schedule: +# interval: weekly +# open-pull-requests-limit: 25 +# rebase-strategy: "disabled" + +- package-ecosystem: github-actions + directory: "/" + schedule: + interval: weekly + rebase-strategy: "disabled" + +- package-ecosystem: npm + directory: "/" + schedule: + interval: weekly + rebase-strategy: "disabled" diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..39bbd61e --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,106 @@ +name: Build + +on: + push: + branches: [ main ] + pull_request: + merge_group: + workflow_dispatch: + +jobs: + build: + if: github.repository_owner == 'Informatievlaanderen' + name: Build + runs-on: ubuntu-latest + + steps: + - name: Checkout Code + uses: actions/checkout@v3 + + # needed for Sonar, default is 11 and is decprecated + - name: Set up JDK 17 + uses: actions/setup-java@v1 + with: + java-version: 17 + + - name: Cache Paket + uses: actions/cache@v3 + env: + cache-name: cache-paket + with: + path: packages + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('paket.lock') }} + restore-keys: | + ${{ runner.os }}-build-${{ env.cache-name }}- + + - name: Parse repository name + run: echo REPOSITORY_NAME=$(echo "$GITHUB_REPOSITORY" | awk -F / '{print $2}' | sed -e "s/:refs//") >> $GITHUB_ENV + shell: bash + + - name: Setup .NET Core + uses: actions/setup-dotnet@v3 + with: + dotnet-version: ${{ secrets.VBR_DOTNET_VERSION }} + + - name: .NET version + shell: bash + run: dotnet --info + + - name: Restore packages + shell: bash + run: | + dotnet tool restore + dotnet paket install + + - name: Cache SonarCloud packages + uses: actions/cache@v1 + with: + path: ~/sonar/cache + key: ${{ runner.os }}-sonar + restore-keys: ${{ runner.os }}-sonar + + - 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 + + - name: Install DotCover + shell: bash + run: | + dotnet tool install --global JetBrains.dotCover.GlobalTool + + - name: Install SonarCloud scanner + if: steps.cache-sonar-scanner.outputs.cache-hit != 'true' + shell: bash + run: | + mkdir .sonar + mkdir .sonar/scanner + dotnet tool update dotnet-sonarscanner --tool-path ./.sonar/scanner + + - name: Sonar begin build & analyze + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any + SONAR_TOKEN: ${{ secrets.VBR_SONAR_TOKEN }} + shell: bash + run: | + ./.sonar/scanner/dotnet-sonarscanner begin /k:"Informatievlaanderen_basisregisters-integration-db" /o:"informatievlaanderen" /d:sonar.login="${{ secrets.VBR_SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" /d:sonar.cs.dotcover.reportsPaths=dotCover.Output.html > /dev/null 2>&1 + + - name: Build + shell: bash + run: | + dotnet build --nologo --no-restore --no-incremental --configuration Debug Basisregisters.IntegrationDb.sln + + - name: Test + shell: bash + run: dotnet dotcover test --dcReportType=HTML --nologo --no-build --filter 'FullyQualifiedName!~IntegrationTests' Basisregisters.IntegrationDb.sln + + - name: Sonar end build & analyze + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any + SONAR_TOKEN: ${{ secrets.VBR_SONAR_TOKEN }} + shell: bash + run: | + ./.sonar/scanner/dotnet-sonarscanner end /d:sonar.login="${{ secrets.VBR_SONAR_TOKEN }}" > /dev/null 2>&1