66 branches : [master]
77 pull_request :
88 branches : [master]
9-
9+
1010env :
1111 RELEASE_BRANCH : " master"
12+ WINDOWS_2019_SN_PATH : C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\sn.exe
1213
1314jobs :
1415 lint_code_base :
1516 runs-on : ubuntu-latest
16- name : Lint Code Base
17+ name : Lint Codebase
1718 steps :
18- - name : Checkout Code
19+ - name : Checkout code
1920 uses : actions/checkout@v3
2021 with :
2122 # Full git history is needed to get a proper list of changed files
2223 fetch-depth : 0
23- - name : Lint Code Base
24+ - name : Lint codebase
2425 uses : github/super-linter@v4
2526 env :
27+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
2628 VALIDATE_ALL_CODEBASE : false
2729 DEFAULT_BRANCH : master
2830 VALIDATE_CSHARP : true
2931 VALIDATE_MARKDOWN : true
3032
3133 integration_tests :
34+ name : Run Integration Tests
3235 uses : optimizely/csharp-sdk/.github/workflows/integration_test.yml@master
3336 secrets :
3437 CI_USER_TOKEN : ${{ secrets.CI_USER_TOKEN }}
3538 TRAVIS_COM_TOKEN : ${{ secrets.TRAVIS_COM_TOKEN }}
36-
39+
3740 fullstack_production_suite :
41+ name : Run Full Stack Compatibility Suite
3842 uses : optimizely/csharp-sdk/.github/workflows/integration_test.yml@master
3943 with :
4044 FULLSTACK_TEST_REPO : ProdTesting
4347 TRAVIS_COM_TOKEN : ${{ secrets.TRAVIS_COM_TOKEN }}
4448
4549 unit_test :
46- runs-on : ubuntu-latest
50+ name : Build and Run Unit Tests
51+ runs-on : windows-2019 # required version for Framework 4.0
4752 env :
4853 REPO_SLUG : ${{ github.repository }}
4954 BUILD_NUMBER : ${{ github.run_id }}
@@ -52,35 +57,40 @@ jobs:
5257 EVENT_TYPE : ${{ github.event_name }}
5358 CURRENT_BRANCH : ${{ github.head_ref || github.ref_name }}
5459 steps :
55- - uses : actions/checkout@v3
56- - name : Setup .NET
57- uses : actions/setup-dotnet@v1
58- with :
59- dotnet-version : 5.0.x
60- - name : Restore nuget packages
61- run : |
62- nuget restore OptimizelySDK.Travis.sln
63- nuget install ./OptimizelySDK.Tests/packages.config -OutputDirectory ./packages
64- nuget install NUnit.Runners -Version 2.6.4 -OutputDirectory ./testrunner
65- - name : script
66- run : |
67- ./install_mono.sh
68- xbuild /p:SignAssembly=true /p:AssemblyOriginatorKeyFile=$(pwd)/keypair.snk /p:Configuration=Release ./OptimizelySDK.Travis.sln
69- mono ./testrunner/ NUnit.Runners.2.6.4/ tools/nunit -console.exe ./OptimizelySDK.Tests/bin/Release/OptimizelySDK.Tests.dll
70- - name : find and sign dll
60+ - name : Checkout code
61+ uses : actions/checkout@v3
62+ - name : Add msbuild to PATH
63+ uses : microsoft/setup-msbuild@v1
64+ - name : Setup NuGet
65+ uses : NuGet/setup- nuget@v1
66+ - name : Restore NuGet packages
67+ run : nuget restore ./ OptimizelySDK.Travis.sln
68+ - name : Build solution
69+ run : msbuild /p:SignAssembly=true /p:AssemblyOriginatorKeyFile=$(pwd)/keypair.snk /p:Configuration=Release ./OptimizelySDK.Travis.sln
70+ - name : Install NUnit Console
71+ run : nuget install NUnit.Console -Version 3.15.2 -DirectDownload -OutputDirectory .
72+ - name : Run NUnit tests
73+ # https://docs.nunit.org/articles/nunit/running-tests/Console-Command-Line.html
74+ run : ./ NUnit.ConsoleRunner.3.15.2\ tools\nunit3 -console.exe /timeout 10000 /process Separate ./OptimizelySDK.Tests/bin/Release/OptimizelySDK.Tests.dll
75+ - name : Find and sign all DLLs
7176 id : unit_tests
7277 run : |
73- sudo find . -path './OptimizelySDK*bin/Release/OptimizelySDK*.dll' -not -regex '.*Tests.*' -print0 | while IFS= read -r -d '' file; do sn -R $file ./keypair.snk; done
74- - name : Check on success
78+ Get-ChildItem -Recurse -Exclude '.*Tests.*' -Include 'OptimizelySDK*.dll' |
79+ Where-Object { $_.DirectoryName -match '\\bin\\Release' } |
80+ Foreach-Object { & $env:WINDOWS_2019_SN_PATH -R $_.FullName ./keypair.snk }
81+ - name : Install AWS CLI, deploy to S3 on successful tests & for release
7582 if : steps.unit_tests.outcome == 'success' && env.CURRENT_BRANCH == env.RELEASE_BRANCH && env.EVENT_TYPE == 'push'
7683 env :
7784 AWS_ACCESS_KEY_ID : ${{ secrets.OFTA_KEY }}
7885 AWS_SECRET_ACCESS_KEY : ${{ secrets.OFTA_SECRET }}
7986 AWS_DEFAULT_REGION : ${{ secrets.OFTA_REGION }}
8087 run : |
81- find . -path './OptimizelySDK*bin/Release/OptimizelySDK*.dll' -not -regex '.*Tests.*' -print0 | while IFS= read -r -d '' file; do (aws s3 cp $file s3://optly-fs-travisci-artifacts/${{ env.REPO_SLUG }}/${{ env.BUILD_NUMBER }}/${{ env.RUN_NUMBER }}/${{ env.ATTEMPT_NUM }}/$(basename $file)-unsigned); done
82-
88+ Install-Module -Name AWS.Tools.Installer -Force;
89+ Install-AWSToolsModule AWS.Tools.S3 -Force -CleanUp;
90+ 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 }}/$(basename $file)-unsigned }
91+
8392 netStandard16 :
93+ name : Build For .NET Standard 1.6
8494 runs-on : windows-2022
8595 env :
8696 REPO_SLUG : ${{ github.repository }}
@@ -90,19 +100,17 @@ jobs:
90100 EVENT_TYPE : ${{ github.event_name }}
91101 CURRENT_BRANCH : ${{ github.head_ref || github.ref_name }}
92102 steps :
93- - uses : actions/checkout@v3
103+ - name : Checkout code
104+ uses : actions/checkout@v3
94105 - name : Setup .NET
95106 uses : actions/setup-dotnet@v2
96107 with :
97108 dotnet-version : 3.1.x
98109 - name : Restore dependencies
99110 run : dotnet restore OptimizelySDK.NetStandard16/OptimizelySDK.NetStandard16.csproj
100- - name : Build
111+ - name : Build and sign Standard 1.6 project
101112 id : netStandard16_build
102- run : |
103- # strongname signing is taken care of in build step
104- dotnet build OptimizelySDK.NetStandard16/OptimizelySDK.NetStandard16.csproj /p:SignAssembly=true /p:AssemblyOriginatorKeyFile=D:\a\csharp-sdk\csharp-sdk\keypair.snk -c Release
105- # TODO: no dotnet test yet for NetStandard16
113+ run : dotnet build OptimizelySDK.NetStandard16/OptimizelySDK.NetStandard16.csproj /p:SignAssembly=true /p:AssemblyOriginatorKeyFile=D:\a\csharp-sdk\csharp-sdk\keypair.snk -c Release
106114 - name : Check on success
107115 if : steps.netStandard16_build.outcome == 'success' && env.CURRENT_BRANCH == env.RELEASE_BRANCH && env.EVENT_TYPE == 'push'
108116 env :
@@ -113,6 +121,7 @@ jobs:
113121 (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)
114122
115123 netStandard20 :
124+ name : Build For .NET Standard 2.0
116125 runs-on : windows-2022
117126 env :
118127 REPO_SLUG : ${{ github.repository }}
@@ -122,19 +131,17 @@ jobs:
122131 EVENT_TYPE : ${{ github.event_name }}
123132 CURRENT_BRANCH : ${{ github.head_ref || github.ref_name }}
124133 steps :
125- - uses : actions/checkout@v3
134+ - name : Checkout code
135+ uses : actions/checkout@v3
126136 - name : Setup .NET
127137 uses : actions/setup-dotnet@v2
128138 with :
129139 dotnet-version : 3.1.x
130140 - name : Restore dependencies
131141 run : dotnet restore OptimizelySDK.NetStandard20/OptimizelySDK.NetStandard20.csproj
132- - name : Build
142+ - name : Build and sign Standard 2.0 project
133143 id : netStandard20_build
134- run : |
135- # strongname signing is taken care of in build step
136- dotnet build OptimizelySDK.NetStandard20/OptimizelySDK.NetStandard20.csproj /p:SignAssembly=true /p:AssemblyOriginatorKeyFile=D:\a\csharp-sdk\csharp-sdk\keypair.snk -c Release
137- # TODO: no dotnet test yet for NetStandard20
144+ run : dotnet build OptimizelySDK.NetStandard20/OptimizelySDK.NetStandard20.csproj /p:SignAssembly=true /p:AssemblyOriginatorKeyFile=D:\a\csharp-sdk\csharp-sdk\keypair.snk -c Release
138145 - name : Check on success
139146 if : steps.netStandard20_build.outcome == 'success' && env.CURRENT_BRANCH == env.RELEASE_BRANCH && env.EVENT_TYPE == 'push'
140147 env :
0 commit comments