1- ---
2- name : Csharp CI with .NET
1+ name : Continuous Integration
32
43on :
54 push :
6- branches : [3.11.2 ]
5+ branches : [ release- 3.11.3 ]
76 pull_request :
8- branches : [3.11.2]
9-
10- env :
11- RELEASE_BRANCH : " 3.11.2"
12- WINDOWS_2019_SN_PATH : C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\sn.exe
7+ branches : [ release-3.11.3 ]
138
149jobs :
15- lint_code_base :
10+ lintCodebase :
1611 runs-on : ubuntu-latest
1712 name : Lint Codebase
1813 steps :
@@ -21,32 +16,17 @@ jobs:
2116 with :
2217 # Full git history is needed to get a proper list of changed files
2318 fetch-depth : 0
24- - name : Lint codebase
19+ - name : Run Super-Linter
2520 uses : github/super-linter@v4
2621 env :
2722 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
2823 VALIDATE_ALL_CODEBASE : false
2924 DEFAULT_BRANCH : master
3025 VALIDATE_CSHARP : true
3126
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-
48- unit_test :
49- name : Build and Run Unit Tests
27+ netFrameworksAndUnitTest :
28+ name : Build Framework & Run Unit Tests
29+ needs : [ lintCodebase ]
5030 runs-on : windows-2019 # required version for Framework 4.0
5131 env :
5232 REPO_SLUG : ${{ github.repository }}
@@ -63,33 +43,18 @@ jobs:
6343 - name : Setup NuGet
6444 uses : NuGet/setup-nuget@v1
6545 - 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
8650 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
9054
9155 netStandard16 :
92- name : Build For .NET Standard 1.6
56+ name : Build Standard 1.6
57+ needs : [ netFrameworksAndUnitTest ]
9358 runs-on : windows-2022
9459 env :
9560 REPO_SLUG : ${{ github.repository }}
@@ -107,20 +72,12 @@ jobs:
10772 dotnet-version : 3.1.x
10873 - name : Restore dependencies
10974 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
11276 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)
12177
12278 netStandard20 :
123- name : Build For .NET Standard 2.0
79+ name : Build Standard 2.0
80+ needs : [ netFrameworksAndUnitTest ]
12481 runs-on : windows-2022
12582 env :
12683 REPO_SLUG : ${{ github.repository }}
@@ -138,14 +95,23 @@ jobs:
13895 dotnet-version : 3.1.x
13996 - name : Restore dependencies
14097 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
14399 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