30
30
strategy :
31
31
fail-fast : false
32
32
matrix :
33
+ library : [AwsEncryptionSDK]
33
34
os : [
34
35
windows-latest,
35
36
ubuntu-latest,
@@ -75,40 +76,30 @@ jobs:
75
76
uses : ./.github/actions/polymorph_codegen
76
77
with :
77
78
dafny : ${{ env.DAFNY_VERSION }}
78
- library : AwsEncryptionSDK
79
+ library : ${{ matrix.library }}
79
80
diff-generated-code : false
80
81
update-and-regenerate-mpl : true
81
82
82
83
- name : Download Dependencies
83
- working-directory : ./AwsEncryptionSDK
84
+ working-directory : ${{ matrix.library }}
84
85
run : make setup_net
85
86
86
- - name : Compile AwsEncryptionSDK implementation
87
+ - name : Compile ${{ matrix.library }} implementation
87
88
shell : bash
88
- working-directory : ./AwsEncryptionSDK
89
- run : |
90
- # This works because `node` is installed by default on GHA runners
91
- CORES=$(node -e 'console.log(os.cpus().length)')
92
- make transpile_net CORES=$CORES
93
-
94
-
95
- - name : Compile MPL TestVectors implementation
96
- shell : bash
97
- working-directory : ./mpl/TestVectorsAwsCryptographicMaterialProviders
89
+ working-directory : ${{ matrix.library }}
98
90
run : |
99
91
# This works because `node` is installed by default on GHA runners
100
92
CORES=$(node -e 'console.log(os.cpus().length)')
101
93
make transpile_net CORES=$CORES
102
94
103
95
- name : Test .NET Framework net48
104
- working-directory : ./AwsEncryptionSDK
105
- if : matrix.os == 'windows-latest'
96
+ working-directory : ${{ matrix.library }}
106
97
shell : bash
107
98
run : |
108
99
make test_net FRAMEWORK=net48
109
100
110
101
- name : Test .NET net6.0
111
- working-directory : ./AwsEncryptionSDK
102
+ working-directory : ${{ matrix.library }}
112
103
shell : bash
113
104
run : |
114
105
if [ "$RUNNER_OS" == "macOS" ]; then
@@ -118,7 +109,7 @@ jobs:
118
109
fi
119
110
120
111
- name : Test Examples on .NET Framework net48
121
- working-directory : ./AwsEncryptionSDK
112
+ working-directory : ${{ matrix.library }}
122
113
if : matrix.os == 'windows-latest'
123
114
shell : bash
124
115
run : |
@@ -127,7 +118,7 @@ jobs:
127
118
--framework net48
128
119
129
120
- name : Test Examples on .NET net6.0
130
- working-directory : ./AwsEncryptionSDK
121
+ working-directory : ${{ matrix.library }}
131
122
shell : bash
132
123
run : |
133
124
if [ "$RUNNER_OS" == "macOS" ]; then
@@ -140,118 +131,87 @@ jobs:
140
131
runtimes/net/Examples \
141
132
--framework net6.0
142
133
fi
143
-
144
- - name : Unzip ESDK-NET @ v4.0.0 Valid Vectors
145
- working-directory : ./AwsEncryptionSDK/runtimes/net/TestVectorsNative/TestVectors/resources
146
- shell : bash
134
+ testVectors :
135
+ strategy :
136
+ fail-fast : false
137
+ matrix :
138
+ library : [TestVectors]
139
+ os : [
140
+ # Sed script doesn't work properly on windows
141
+ # windows-latest,
142
+ ubuntu-latest,
143
+ macos-13,
144
+ ]
145
+ runs-on : ${{ matrix.os }}
146
+ permissions :
147
+ id-token : write
148
+ contents : read
149
+ env :
150
+ DOTNET_CLI_TELEMETRY_OPTOUT : 1
151
+ DOTNET_NOLOGO : 1
152
+ steps :
153
+ - name : Support longpaths on Git checkout
147
154
run : |
148
- NET_400_VALID_VECTORS=$GITHUB_WORKSPACE/v4Net400Valid/vectors
149
- mkdir -p $NET_400_VALID_VECTORS
150
- DOWNLOAD_NAME=valid-Net-4.0.0.zip
151
- unzip -o -qq $DOWNLOAD_NAME -d $NET_400_VALID_VECTORS
152
-
153
- - name : Run ESDK-NET @ v4.0.0 Valid Vectors expect success
154
- working-directory : ./AwsEncryptionSDK/runtimes/net/TestVectorsNative/TestVectors
155
- continue-on-error : true
155
+ git config --global core.longpaths true
156
+ - uses : actions/checkout@v2
157
+ - name : Init Submodules
156
158
shell : bash
157
159
run : |
158
- NET_400_VALID_VECTORS=$GITHUB_WORKSPACE/v4Net400Valid/vectors
159
- ESDK_NET_V400_POLICY="forbid" \
160
- DAFNY_AWS_ESDK_TEST_VECTOR_MANIFEST_PATH="$NET_400_VALID_VECTORS/manifest.json" \
161
- dotnet test --framework net48
162
- ESDK_NET_V400_POLICY="forbid" \
163
- DAFNY_AWS_ESDK_TEST_VECTOR_MANIFEST_PATH="$NET_400_VALID_VECTORS/manifest.json" \
164
- dotnet test --framework net6.0 --logger "console;verbosity=quiet"
160
+ git submodule update --init libraries
161
+ git submodule update --init --recursive mpl
162
+
163
+ - name : Configure AWS Credentials
164
+ uses : aws-actions/configure-aws-credentials@v2
165
+ with :
166
+ aws-region : us-west-2
167
+ role-to-assume : arn:aws:iam::370957321024:role/GitHub-CI-Public-ESDK-Dafny-Role-us-west-2
168
+ role-session-name : NetTests
169
+
170
+ - name : Setup .NET Core SDK 6
171
+ uses : actions/setup-dotnet@v3
172
+ with :
173
+ dotnet-version : ' 6.0.x'
165
174
166
- - name : Unzip ESDK-NET @ v4.0.0 Invalid Vectors
167
- working-directory : ./AwsEncryptionSDK/runtimes/net/TestVectorsNative/TestVectors/resources
168
- shell : bash
169
- run : |
170
- NET_400_INVALID_VECTORS=$GITHUB_WORKSPACE/v4Net400Invalid/vectors
171
- mkdir -p $NET_400_INVALID_VECTORS
172
- DOWNLOAD_NAME=invalid-Net-4.0.0.zip
173
- unzip -o -qq $DOWNLOAD_NAME -d $NET_400_INVALID_VECTORS
175
+ - name : Setup Dafny
176
+ uses :
dafny-lang/[email protected]
177
+ with :
178
+ dafny-version : ${{ inputs.dafny }}
174
179
175
- - name : Run ESDK-NET @ v4.0.0 Invalid Vectors .NET 48 expect failure
176
- working-directory : ./AwsEncryptionSDK/runtimes/net/TestVectorsNative/TestVectors
177
- continue-on-error : true
178
- shell : bash
179
- run : |
180
- NET_400_INVALID_VECTORS=$GITHUB_WORKSPACE/v4Net400Invalid/vectors
181
- ESDK_NET_V400_POLICY="forbid" \
182
- DAFNY_AWS_ESDK_TEST_VECTOR_MANIFEST_PATH="$NET_400_INVALID_VECTORS/manifest.json" \
183
- dotnet test --framework net48
184
- # Dotnet test returns 1 for failure.
185
- TEMP=$?; if [[ "$TEMP" -eq 1 ]]; then true; else false; fi;
186
- # We want this to fail, so if it returned 1, step passes, else it fails
187
- # TODO Post-#619: Refactor Test Vectors to expect failure,
188
- # as I doubt this true false logic works
180
+ - name : Regenerate code using smithy-dafny if necessary
181
+ if : ${{ inputs.regenerate-code }}
182
+ uses : ./.github/actions/polymorph_codegen
183
+ with :
184
+ dafny : ${{ env.DAFNY_VERSION }}
185
+ library : ${{ matrix.library }}
186
+ diff-generated-code : false
187
+ update-and-regenerate-mpl : true
189
188
190
- - name : Run ESDK-NET @ v4.0.0 Invalid Vectors .NET 6.0 expect failure
191
- working-directory : ./AwsEncryptionSDK/runtimes/net/TestVectorsNative/TestVectors
192
- continue-on-error : true
193
- shell : bash
194
- run : |
195
- NET_400_INVALID_VECTORS=$GITHUB_WORKSPACE/v4Net400Invalid/vectors
196
- if [ "$RUNNER_OS" == "macOS" ]; then
197
- ESDK_NET_V400_POLICY="forbid" \
198
- DAFNY_AWS_ESDK_TEST_VECTOR_MANIFEST_PATH="$NET_400_INVALID_VECTORS/manifest.json" \
199
- DYLD_LIBRARY_PATH="/usr/local/opt/[email protected] /lib" \
200
- dotnet test --framework net6.0
201
- else
202
- ESDK_NET_V400_POLICY="forbid" \
203
- DAFNY_AWS_ESDK_TEST_VECTOR_MANIFEST_PATH="$NET_400_INVALID_VECTORS/manifest.json" \
204
- dotnet test --framework net6.0
205
- fi
206
- # Dotnet test returns 1 for failure.
207
- TEMP=$?; if [[ "$TEMP" -eq 1 ]]; then true; else false; fi;
208
- # We want this to fail, so if it returned 1, step passes, else it fails
209
- # TODO Post-#619: Refactor Test Vectors to expect failure,
210
- # as I doubt this true false logic works
211
-
212
- - name : Run ESDK-NET @ v4.0.0 Invalid Vectors .NET expect Success
213
- working-directory : ./AwsEncryptionSDK/runtimes/net/TestVectorsNative/TestVectors
189
+ - name : Download Dependencies
190
+ working-directory : ${{ matrix.library }}
191
+ run : make setup_net
192
+
193
+ - name : Compile ${{ matrix.library }} implementation
214
194
shell : bash
195
+ working-directory : ${{ matrix.library }}
215
196
run : |
216
- NET_400_INVALID_VECTORS=$GITHUB_WORKSPACE/v4Net400Invalid/vectors
217
- DAFNY_AWS_ESDK_TEST_VECTOR_MANIFEST_PATH="$NET_400_INVALID_VECTORS/manifest.json" \
218
- dotnet test --framework net48 --logger "console;verbosity=quiet"
219
- if [ "$RUNNER_OS" == "macOS" ]; then
220
- DAFNY_AWS_ESDK_TEST_VECTOR_MANIFEST_PATH="$NET_400_INVALID_VECTORS/manifest.json" \
221
- DYLD_LIBRARY_PATH="/usr/local/opt/[email protected] /lib" \
222
- dotnet test --framework net6.0 --logger "console;verbosity=quiet"
223
- else
224
- DAFNY_AWS_ESDK_TEST_VECTOR_MANIFEST_PATH="$NET_400_INVALID_VECTORS/manifest.json" \
225
- dotnet test --framework net6.0 --logger "console;verbosity=quiet"
226
- fi
227
-
228
- - name : Unzip ESDK-NET @ v4.0.1 Vectors
229
- working-directory : ./AwsEncryptionSDK/runtimes/net/TestVectorsNative/TestVectors/resources
197
+ # This works because `node` is installed by default on GHA runners
198
+ CORES=$(node -e 'console.log(os.cpus().length)')
199
+ make transpile_net CORES=$CORES
200
+
201
+ - name : Unzip .NET Retry Flag Manifests
230
202
shell : bash
203
+ working-directory : TestVectors/dafny/TestVectors/test/
231
204
run : |
232
- NET_401_VECTORS=$GITHUB_WORKSPACE/v4Net401/vectors
233
- mkdir -p $NET_401_VECTORS
234
- DOWNLOAD_NAME=v4-Net-4.0.1.zip
235
- unzip -o -qq $DOWNLOAD_NAME -d $NET_401_VECTORS
205
+ unzip invalid-Net-4.0.0.zip -d invalid-Net-4.0.0
206
+ unzip v4-Net-4.0.1.zip -d v4-Net-4.0.1
207
+ unzip valid-Net-4.0.0.zip -d valid-Net-4.0.0
236
208
237
- - name : Run ESDK- NET @ v4.0.1 Vectors expect success
238
- working-directory : ./AwsEncryptionSDK/runtimes/net/TestVectorsNative/TestVectors
209
+ - name : Test . NET net6.0
210
+ working-directory : ${{ matrix.library }}
239
211
shell : bash
240
212
run : |
241
- NET_401_VECTORS=$GITHUB_WORKSPACE/v4Net401/vectors
242
- # We expect net48 to run only for Windows
243
- if [ "$RUNNER_OS" == "Windows" ]; then
244
- ESDK_NET_V400_POLICY="forbid" \
245
- DAFNY_AWS_ESDK_TEST_VECTOR_MANIFEST_PATH="$NET_401_VECTORS/manifest.json" \
246
- dotnet test --framework net48
247
- fi
248
213
if [ "$RUNNER_OS" == "macOS" ]; then
249
- DYLD_LIBRARY_PATH="/usr/local/opt/[email protected] /lib" \
250
- ESDK_NET_V400_POLICY="forbid" \
251
- DAFNY_AWS_ESDK_TEST_VECTOR_MANIFEST_PATH="$NET_401_VECTORS/manifest.json" \
252
- dotnet test --framework net6.0 --logger "console;verbosity=quiet"
214
+ make test_net_mac_intel FRAMEWORK=net6.0
253
215
else
254
- ESDK_NET_V400_POLICY="forbid" \
255
- DAFNY_AWS_ESDK_TEST_VECTOR_MANIFEST_PATH="$NET_401_VECTORS/manifest.json" \
256
- dotnet test --framework net6.0 --logger "console;verbosity=quiet"
216
+ make test_net FRAMEWORK=net6.0
257
217
fi
0 commit comments