Skip to content

Commit

Permalink
Update CI
Browse files Browse the repository at this point in the history
  • Loading branch information
niklasweimann committed Aug 2, 2024
1 parent 9829ede commit 0570d40
Show file tree
Hide file tree
Showing 4 changed files with 116 additions and 62 deletions.
55 changes: 50 additions & 5 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
name: Build-and-test
name: Build and Test

on:
push:
branches:
- '*'
- master
- main
pull_request:
branches:
- '*'
- master
- main

jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 3
steps:
- name: Checkout
uses: actions/checkout@v4
Expand All @@ -18,9 +21,51 @@ jobs:
test:
runs-on: ubuntu-latest
needs: build
timeout-minutes: 3
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Test
run: dotnet test --configuration Release
sonarqube:
name: sonarqube
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'success' }}
steps:
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'microsoft' # See 'Supported distributions' for available options
java-version: '17'
- uses: actions/checkout@v4
with:
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
- name: Cache SonarCloud packages
uses: actions/cache@v4
with:
path: ~\sonar\cache
key: ${{ runner.os }}-sonar
restore-keys: ${{ runner.os }}-sonar
- name: Cache SonarCloud scanner
id: cache-sonar-scanner
uses: actions/cache@v4
with:
path: .\.sonar\scanner
key: ${{ runner.os }}-sonar-scanner
restore-keys: ${{ runner.os }}-sonar-scanner
- name: Install SonarCloud scanner
if: steps.cache-sonar-scanner.outputs.cache-hit != 'true'
shell: powershell
run: |
New-Item -Path .\.sonar\scanner -ItemType Directory
dotnet tool update dotnet-sonarscanner --tool-path .\.sonar\scanner
- name: Build and analyze
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
shell: powershell
run: |
dotnet tool install --global dotnet-coverage
.\.sonar\scanner\dotnet-sonarscanner begin /k:"RxTelegram_RxTelegram.Bot" /o:"rxtelegram" /d:sonar.login="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" /d:sonar.cs.vscoveragexml.reportsPaths=coverage.xml
dotnet build --configuration Release
dotnet-coverage collect 'dotnet test' -f xml -o 'coverage.xml' --settings CodeCoverage.runsettings
.\.sonar\scanner\dotnet-sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN }}"
72 changes: 66 additions & 6 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -1,14 +1,72 @@
name: Publish-to-nuget
on:
workflow_run:
workflows: ["Check-code-quality"]
branches: ["v[0-9]+.[0-9]+.[0-9]+"]
types:
- completed
push:
tags:
- "v[0-9]+.[0-9]+.[0-9]+"

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Build
run: dotnet build --configuration Release
test:
runs-on: ubuntu-latest
needs: build
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Test
run: dotnet test --configuration Release
sonarqube:
name: sonarqube
runs-on: ubuntu-latest
needs: test
if: ${{ github.event.workflow_run.conclusion == 'success' }}
steps:
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'microsoft' # See 'Supported distributions' for available options
java-version: '17'
- uses: actions/checkout@v4
with:
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
- name: Cache SonarCloud packages
uses: actions/cache@v4
with:
path: ~\sonar\cache
key: ${{ runner.os }}-sonar
restore-keys: ${{ runner.os }}-sonar
- name: Cache SonarCloud scanner
id: cache-sonar-scanner
uses: actions/cache@v4
with:
path: .\.sonar\scanner
key: ${{ runner.os }}-sonar-scanner
restore-keys: ${{ runner.os }}-sonar-scanner
- name: Install SonarCloud scanner
if: steps.cache-sonar-scanner.outputs.cache-hit != 'true'
shell: powershell
run: |
New-Item -Path .\.sonar\scanner -ItemType Directory
dotnet tool update dotnet-sonarscanner --tool-path .\.sonar\scanner
- name: Build and analyze
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
shell: powershell
run: |
dotnet tool install --global dotnet-coverage
.\.sonar\scanner\dotnet-sonarscanner begin /k:"RxTelegram_RxTelegram.Bot" /o:"rxtelegram" /d:sonar.login="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" /d:sonar.cs.vscoveragexml.reportsPaths=coverage.xml
dotnet build --configuration Release
dotnet-coverage collect 'dotnet test' -f xml -o 'coverage.xml' --settings CodeCoverage.runsettings
.\.sonar\scanner\dotnet-sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN }}"
publish:
runs-on: ubuntu-latest
timeout-minutes: 3
needs: sonarqube
steps:
- name: Download build result
uses: actions/download-artifact@v4
Expand All @@ -20,3 +78,5 @@ jobs:
run: dotnet pack --configuration Release /p:Version=${VERSION} --no-build --output .
- name: Push nuget to nuget.org
run: dotnet nuget push RxTelegram.Bot.*.nupkg -k ${{secrets.NUGET_API_KEY}} -s https://api.nuget.org/v3/index.json
- name: Publish release
uses: ghalactic/github-release-from-tag@v5
50 changes: 0 additions & 50 deletions .github/workflows/sonarqube.yml

This file was deleted.

1 change: 0 additions & 1 deletion RxTelegram.Bot.sln
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "workflows", "workflows", "{
ProjectSection(SolutionItems) = preProject
.github\workflows\main.yml = .github\workflows\main.yml
.github\workflows\publish.yml = .github\workflows\publish.yml
.github\workflows\sonarqube.yml = .github\workflows\sonarqube.yml
EndProjectSection
EndProject
Global
Expand Down

0 comments on commit 0570d40

Please sign in to comment.