1
- ---
2
- name : Csharp CI with .NET
1
+ name : Continuous Integration
3
2
4
3
on :
5
4
push :
6
- branches : [master]
5
+ branches : [ master ]
7
6
pull_request :
8
- branches : [master]
9
-
10
- env :
11
- RELEASE_BRANCH : " master"
12
- WINDOWS_2019_SN_PATH : C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\sn.exe
7
+ branches : [ master ]
13
8
14
9
jobs :
15
- lint_code_base :
10
+ lintCodebase :
16
11
runs-on : ubuntu-latest
17
12
name : Lint Codebase
18
13
steps :
@@ -21,32 +16,17 @@ jobs:
21
16
with :
22
17
# Full git history is needed to get a proper list of changed files
23
18
fetch-depth : 0
24
- - name : Lint codebase
19
+ - name : Run Super-Linter
25
20
uses : github/super-linter@v4
26
21
env :
27
22
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
28
23
VALIDATE_ALL_CODEBASE : false
29
24
DEFAULT_BRANCH : master
30
25
VALIDATE_CSHARP : true
31
-
32
- integration_tests :
33
- name : Run Integration Tests
34
- uses : optimizely/csharp-sdk/.github/workflows/integration_test.yml@master
35
- secrets :
36
- CI_USER_TOKEN : ${{ secrets.CI_USER_TOKEN }}
37
- TRAVIS_COM_TOKEN : ${{ secrets.TRAVIS_COM_TOKEN }}
38
-
39
- fullstack_production_suite :
40
- name : Run Optimizely Feature Experimentation Compatibility Suite
41
- uses : optimizely/csharp-sdk/.github/workflows/integration_test.yml@master
42
- with :
43
- FULLSTACK_TEST_REPO : ProdTesting
44
- secrets :
45
- CI_USER_TOKEN : ${{ secrets.CI_USER_TOKEN }}
46
- TRAVIS_COM_TOKEN : ${{ secrets.TRAVIS_COM_TOKEN }}
47
26
48
- unit_test :
49
- name : Build and Run Unit Tests
27
+ netFrameworksAndUnitTest :
28
+ name : Build Framework & Run Unit Tests
29
+ needs : [ lintCodebase ]
50
30
runs-on : windows-2019 # required version for Framework 4.0
51
31
env :
52
32
REPO_SLUG : ${{ github.repository }}
@@ -63,33 +43,18 @@ jobs:
63
43
- name : Setup NuGet
64
44
uses : NuGet/setup-nuget@v1
65
45
- name : Restore NuGet packages
66
- run : nuget restore ./OptimizelySDK.Travis.sln
67
- - name : Build solution
68
- run : msbuild /p:SignAssembly=true /p:AssemblyOriginatorKeyFile=$(pwd)/keypair.snk /p:Configuration=Release ./OptimizelySDK.Travis.sln
69
- - name : Install NUnit Console
70
- run : nuget install NUnit.Console -Version 3.15.2 -DirectDownload -OutputDirectory .
71
- - name : Run NUnit tests
72
- # https://docs.nunit.org/articles/nunit/running-tests/Console-Command-Line.html
73
- run : ./NUnit.ConsoleRunner.3.15.2\tools\nunit3-console.exe /timeout 10000 /process Separate ./OptimizelySDK.Tests/bin/Release/OptimizelySDK.Tests.dll
74
- - name : Find and sign all DLLs
75
- id : unit_tests
76
- run : |
77
- Get-ChildItem -Recurse -Exclude '.*Tests.*' -Include 'OptimizelySDK*.dll' |
78
- Where-Object { $_.DirectoryName -match '\\bin\\Release' } |
79
- Foreach-Object { & $env:WINDOWS_2019_SN_PATH -R $_.FullName ./keypair.snk }
80
- - name : Install AWS CLI, deploy to S3 on successful tests & for release
81
- if : steps.unit_tests.outcome == 'success' && env.CURRENT_BRANCH == env.RELEASE_BRANCH && env.EVENT_TYPE == 'push'
82
- env :
83
- AWS_ACCESS_KEY_ID : ${{ secrets.OFTA_KEY }}
84
- AWS_SECRET_ACCESS_KEY : ${{ secrets.OFTA_SECRET }}
85
- AWS_DEFAULT_REGION : ${{ secrets.OFTA_REGION }}
46
+ run : nuget restore ./OptimizelySDK.NETFramework.sln
47
+ - name : Build & strongly name assemblies
48
+ run : msbuild /p:SignAssembly=true /p:AssemblyOriginatorKeyFile=$(pwd)/keypair.snk /p:Configuration=Release ./OptimizelySDK.NETFramework.sln
49
+ - name : Install & Run NUnit tests
86
50
run : |
87
- Install-Module -Name AWS.Tools.Installer -Force;
88
- Install-AWSToolsModule AWS.Tools.S3 -Force -CleanUp;
89
- Get-ChildItem -Recurse -Exclude '.*Tests.*' -include 'OptimizelySDK*.dll' | Where-Object { $_.DirectoryName -match '\\bin\\Release' } | Foreach-Object { aws s3 cp $_.FullName s3://optly-fs-travisci-artifacts/${{ env.REPO_SLUG }}/${{ env.BUILD_NUMBER }}/${{ env.RUN_NUMBER }}/${{ env.ATTEMPT_NUM }}/$($_.Name)-unsigned }
51
+ nuget install NUnit.Console -Version 3.15.2 -DirectDownload -OutputDirectory .
52
+ # https://docs.nunit.org/articles/nunit/running-tests/Console-Command-Line.html
53
+ ./NUnit.ConsoleRunner.3.15.2\tools\nunit3-console.exe /timeout 10000 /process Separate ./OptimizelySDK.Tests/bin/Release/OptimizelySDK.Tests.dll
90
54
91
55
netStandard16 :
92
- name : Build For .NET Standard 1.6
56
+ name : Build Standard 1.6
57
+ needs : [ netFrameworksAndUnitTest ]
93
58
runs-on : windows-2022
94
59
env :
95
60
REPO_SLUG : ${{ github.repository }}
@@ -107,20 +72,12 @@ jobs:
107
72
dotnet-version : 3.1.x
108
73
- name : Restore dependencies
109
74
run : dotnet restore OptimizelySDK.NetStandard16/OptimizelySDK.NetStandard16.csproj
110
- - name : Build and sign Standard 1.6 project
111
- id : netStandard16_build
75
+ - name : Build & strongly name assemblies
112
76
run : dotnet build OptimizelySDK.NetStandard16/OptimizelySDK.NetStandard16.csproj /p:SignAssembly=true /p:AssemblyOriginatorKeyFile=D:\a\csharp-sdk\csharp-sdk\keypair.snk -c Release
113
- - name : Check on success
114
- if : steps.netStandard16_build.outcome == 'success' && env.CURRENT_BRANCH == env.RELEASE_BRANCH && env.EVENT_TYPE == 'push'
115
- env :
116
- AWS_ACCESS_KEY_ID : ${{ secrets.OFTA_KEY }}
117
- AWS_SECRET_ACCESS_KEY : ${{ secrets.OFTA_SECRET }}
118
- AWS_DEFAULT_REGION : ${{ secrets.OFTA_REGION }}
119
- run : |
120
- (aws s3 cp ./OptimizelySDK.NetStandard16/bin/Release/netstandard1.6/OptimizelySDK.NetStandard16.dll s3://optly-fs-travisci-artifacts/${{ env.REPO_SLUG }}/${{ env.BUILD_NUMBER }}/${{ env.RUN_NUMBER }}/${{ env.ATTEMPT_NUM }}/OptimizelySDK.NetStandard16.dll-unsigned)
121
77
122
78
netStandard20 :
123
- name : Build For .NET Standard 2.0
79
+ name : Build Standard 2.0
80
+ needs : [ netFrameworksAndUnitTest ]
124
81
runs-on : windows-2022
125
82
env :
126
83
REPO_SLUG : ${{ github.repository }}
@@ -138,14 +95,23 @@ jobs:
138
95
dotnet-version : 3.1.x
139
96
- name : Restore dependencies
140
97
run : dotnet restore OptimizelySDK.NetStandard20/OptimizelySDK.NetStandard20.csproj
141
- - name : Build and sign Standard 2.0 project
142
- id : netStandard20_build
98
+ - name : Build & strongly name assemblies
143
99
run : dotnet build OptimizelySDK.NetStandard20/OptimizelySDK.NetStandard20.csproj /p:SignAssembly=true /p:AssemblyOriginatorKeyFile=D:\a\csharp-sdk\csharp-sdk\keypair.snk -c Release
144
- - name : Check on success
145
- if : steps.netStandard20_build.outcome == 'success' && env.CURRENT_BRANCH == env.RELEASE_BRANCH && env.EVENT_TYPE == 'push'
146
- env :
147
- AWS_ACCESS_KEY_ID : ${{ secrets.OFTA_KEY }}
148
- AWS_SECRET_ACCESS_KEY : ${{ secrets.OFTA_SECRET }}
149
- AWS_DEFAULT_REGION : ${{ secrets.OFTA_REGION }}
150
- run : |
151
- (aws s3 cp ./OptimizelySDK.NetStandard20/bin/Release/netstandard2.0/OptimizelySDK.NetStandard20.dll s3://optly-fs-travisci-artifacts/${{ env.REPO_SLUG }}/${{ env.BUILD_NUMBER }}/${{ env.RUN_NUMBER }}/${{ env.ATTEMPT_NUM }}/OptimizelySDK.NetStandard20.dll-unsigned)
100
+
101
+ integration_tests :
102
+ name : Run Integration Tests
103
+ needs : [ netFrameworksAndUnitTest, netStandard16, netStandard20 ]
104
+ uses : optimizely/csharp-sdk/.github/workflows/integration_test.yml@master
105
+ secrets :
106
+ CI_USER_TOKEN : ${{ secrets.CI_USER_TOKEN }}
107
+ TRAVIS_COM_TOKEN : ${{ secrets.TRAVIS_COM_TOKEN }}
108
+
109
+ fullstack_production_suite :
110
+ name : Run Performance Tests
111
+ needs : [ netFrameworksAndUnitTest, netStandard16, netStandard20 ]
112
+ uses : optimizely/csharp-sdk/.github/workflows/integration_test.yml@master
113
+ with :
114
+ FULLSTACK_TEST_REPO : ProdTesting
115
+ secrets :
116
+ CI_USER_TOKEN : ${{ secrets.CI_USER_TOKEN }}
117
+ TRAVIS_COM_TOKEN : ${{ secrets.TRAVIS_COM_TOKEN }}
0 commit comments