6
6
branches : [master]
7
7
pull_request :
8
8
branches : [master]
9
-
9
+
10
10
env :
11
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
12
13
13
14
jobs :
14
15
lint_code_base :
15
16
runs-on : ubuntu-latest
16
- name : Lint Code Base
17
+ name : Lint Codebase
17
18
steps :
18
- - name : Checkout Code
19
+ - name : Checkout code
19
20
uses : actions/checkout@v3
20
21
with :
21
22
# Full git history is needed to get a proper list of changed files
22
23
fetch-depth : 0
23
- - name : Lint Code Base
24
+ - name : Lint codebase
24
25
uses : github/super-linter@v4
25
26
env :
27
+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
26
28
VALIDATE_ALL_CODEBASE : false
27
29
DEFAULT_BRANCH : master
28
30
VALIDATE_CSHARP : true
29
31
VALIDATE_MARKDOWN : true
30
32
31
33
integration_tests :
34
+ name : Run Integration Tests
32
35
uses : optimizely/csharp-sdk/.github/workflows/integration_test.yml@master
33
36
secrets :
34
37
CI_USER_TOKEN : ${{ secrets.CI_USER_TOKEN }}
35
38
TRAVIS_COM_TOKEN : ${{ secrets.TRAVIS_COM_TOKEN }}
36
-
39
+
37
40
fullstack_production_suite :
41
+ name : Run Full Stack Compatibility Suite
38
42
uses : optimizely/csharp-sdk/.github/workflows/integration_test.yml@master
39
43
with :
40
44
FULLSTACK_TEST_REPO : ProdTesting
43
47
TRAVIS_COM_TOKEN : ${{ secrets.TRAVIS_COM_TOKEN }}
44
48
45
49
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
47
52
env :
48
53
REPO_SLUG : ${{ github.repository }}
49
54
BUILD_NUMBER : ${{ github.run_id }}
@@ -52,35 +57,40 @@ jobs:
52
57
EVENT_TYPE : ${{ github.event_name }}
53
58
CURRENT_BRANCH : ${{ github.head_ref || github.ref_name }}
54
59
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
71
76
id : unit_tests
72
77
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
75
82
if : steps.unit_tests.outcome == 'success' && env.CURRENT_BRANCH == env.RELEASE_BRANCH && env.EVENT_TYPE == 'push'
76
83
env :
77
84
AWS_ACCESS_KEY_ID : ${{ secrets.OFTA_KEY }}
78
85
AWS_SECRET_ACCESS_KEY : ${{ secrets.OFTA_SECRET }}
79
86
AWS_DEFAULT_REGION : ${{ secrets.OFTA_REGION }}
80
87
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
+
83
92
netStandard16 :
93
+ name : Build For .NET Standard 1.6
84
94
runs-on : windows-2022
85
95
env :
86
96
REPO_SLUG : ${{ github.repository }}
@@ -90,19 +100,17 @@ jobs:
90
100
EVENT_TYPE : ${{ github.event_name }}
91
101
CURRENT_BRANCH : ${{ github.head_ref || github.ref_name }}
92
102
steps :
93
- - uses : actions/checkout@v3
103
+ - name : Checkout code
104
+ uses : actions/checkout@v3
94
105
- name : Setup .NET
95
106
uses : actions/setup-dotnet@v2
96
107
with :
97
108
dotnet-version : 3.1.x
98
109
- name : Restore dependencies
99
110
run : dotnet restore OptimizelySDK.NetStandard16/OptimizelySDK.NetStandard16.csproj
100
- - name : Build
111
+ - name : Build and sign Standard 1.6 project
101
112
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
106
114
- name : Check on success
107
115
if : steps.netStandard16_build.outcome == 'success' && env.CURRENT_BRANCH == env.RELEASE_BRANCH && env.EVENT_TYPE == 'push'
108
116
env :
@@ -113,6 +121,7 @@ jobs:
113
121
(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)
114
122
115
123
netStandard20 :
124
+ name : Build For .NET Standard 2.0
116
125
runs-on : windows-2022
117
126
env :
118
127
REPO_SLUG : ${{ github.repository }}
@@ -122,19 +131,17 @@ jobs:
122
131
EVENT_TYPE : ${{ github.event_name }}
123
132
CURRENT_BRANCH : ${{ github.head_ref || github.ref_name }}
124
133
steps :
125
- - uses : actions/checkout@v3
134
+ - name : Checkout code
135
+ uses : actions/checkout@v3
126
136
- name : Setup .NET
127
137
uses : actions/setup-dotnet@v2
128
138
with :
129
139
dotnet-version : 3.1.x
130
140
- name : Restore dependencies
131
141
run : dotnet restore OptimizelySDK.NetStandard20/OptimizelySDK.NetStandard20.csproj
132
- - name : Build
142
+ - name : Build and sign Standard 2.0 project
133
143
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
138
145
- name : Check on success
139
146
if : steps.netStandard20_build.outcome == 'success' && env.CURRENT_BRANCH == env.RELEASE_BRANCH && env.EVENT_TYPE == 'push'
140
147
env :
0 commit comments