-
Notifications
You must be signed in to change notification settings - Fork 35
130 lines (107 loc) · 4.15 KB
/
ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
name: CI
on:
pull_request:
branches: [ master ]
env:
CoreVersion: 1.13.4
jobs:
build:
runs-on: windows-latest
env:
Solution_Name: ContactPoint.sln
Configuration: Release
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Install .NET Core
uses: actions/setup-dotnet@v1
with:
dotnet-version: 3.1.101
source-url: https://nuget.pkg.github.com/ipphone/index.json
env:
NUGET_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 1.11
- 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 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: Setup MSBuild.exe
uses: microsoft/[email protected]
- name: Update CoreVersion number
shell: bash
run: |
echo "CoreVersion=${{ env.CoreVersion }}-ci${{ github.run_id }}" >> $GITHUB_ENV
- name: Build application
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:"ipphone_core" /o:"ipphone" /d:sonar.login="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io"
msbuild $env:Solution_Name -t:Restore -p:Configuration=${{ env.Configuration }}
msbuild $env:Solution_Name -t:Build -p:Configuration=${{ env.Configuration }}
msbuild ContactPoint.Tests.WinForms\ContactPoint.Tests.WinForms.csproj -t:Build -p:Configuration=${{ env.Configuration }}
.\.sonar\scanner\dotnet-sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN }}"
- name: Upload build artifacts
uses: actions/[email protected]
with:
name: Binaries
path: ../Binaries
- name: Setup github package repository
run: |
nuget sources add -name "github" -Source https://nuget.pkg.github.com/ipphone/index.json
nuget setapikey ${{ secrets.GITHUB_TOKEN }} -Source https://nuget.pkg.github.com/ipphone/index.json
- name: Build and Publish NuGet packages
run: |
ls *.nuspec |% { nuget pack $_ -Version ${{ env.CoreVersion }} -Properties Configuration=${{ env.Configuration }} -OutputDirectory ..\out -BasePath ..\Binaries }
nuget push ..\out\*.nupkg -Source https://nuget.pkg.github.com/ipphone/index.json -SkipDuplicate
test:
runs-on: windows-latest
needs: build
steps:
- name: Setup NodeJS
uses: actions/setup-node@v1
with:
node-version: 12.x
- name: Setup Appium
run: npm install -g appium
- name: Download build artifacts
uses: actions/[email protected]
with:
name: Binaries
- name: Execute unit tests
run: dotnet vstest Binaries\Tests\*.Test*.dll /ResultsDirectory:TestResults /Framework:".NETFramework,Version=v4.7.2" /Platform:x86 /logger:trx /Diag:TestResults\vstest_log.txt
env:
APP_ARGUMENTS: /loglevel 10 /log ..\TestResults\ipphone_log.txt
- name: Upload test results
if: always()
uses: actions/[email protected]
with:
name: TestResults
path: TestResults
- name: Upload test results to CodeCov
if: always()
shell: bash
run: bash <(curl -s https://codecov.io/bash) -s ./TestResults
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}