3030 strategy :
3131 fail-fast : false
3232 matrix :
33+ library : [AwsEncryptionSDK]
3334 os : [
3435 windows-latest,
3536 ubuntu-latest,
@@ -75,40 +76,30 @@ jobs:
7576 uses : ./.github/actions/polymorph_codegen
7677 with :
7778 dafny : ${{ env.DAFNY_VERSION }}
78- library : AwsEncryptionSDK
79+ library : ${{ matrix.library }}
7980 diff-generated-code : false
8081 update-and-regenerate-mpl : true
8182
8283 - name : Download Dependencies
83- working-directory : ./AwsEncryptionSDK
84+ working-directory : ${{ matrix.library }}
8485 run : make setup_net
8586
86- - name : Compile AwsEncryptionSDK implementation
87+ - name : Compile ${{ matrix.library }} implementation
8788 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 }}
9890 run : |
9991 # This works because `node` is installed by default on GHA runners
10092 CORES=$(node -e 'console.log(os.cpus().length)')
10193 make transpile_net CORES=$CORES
10294
10395 - name : Test .NET Framework net48
104- working-directory : ./AwsEncryptionSDK
105- if : matrix.os == 'windows-latest'
96+ working-directory : ${{ matrix.library }}
10697 shell : bash
10798 run : |
10899 make test_net FRAMEWORK=net48
109100
110101 - name : Test .NET net6.0
111- working-directory : ./AwsEncryptionSDK
102+ working-directory : ${{ matrix.library }}
112103 shell : bash
113104 run : |
114105 if [ "$RUNNER_OS" == "macOS" ]; then
@@ -118,7 +109,7 @@ jobs:
118109 fi
119110
120111 - name : Test Examples on .NET Framework net48
121- working-directory : ./AwsEncryptionSDK
112+ working-directory : ${{ matrix.library }}
122113 if : matrix.os == 'windows-latest'
123114 shell : bash
124115 run : |
@@ -127,7 +118,7 @@ jobs:
127118 --framework net48
128119
129120 - name : Test Examples on .NET net6.0
130- working-directory : ./AwsEncryptionSDK
121+ working-directory : ${{ matrix.library }}
131122 shell : bash
132123 run : |
133124 if [ "$RUNNER_OS" == "macOS" ]; then
@@ -140,118 +131,87 @@ jobs:
140131 runtimes/net/Examples \
141132 --framework net6.0
142133 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
147154 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
156158 shell : bash
157159 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'
165174
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 }}
174179
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
189188
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
214194 shell : bash
195+ working-directory : ${{ matrix.library }}
215196 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
230202 shell : bash
203+ working-directory : TestVectors/dafny/TestVectors/test/
231204 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
236208
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 }}
239211 shell : bash
240212 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
248213 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
253215 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
257217 fi
0 commit comments