-
Notifications
You must be signed in to change notification settings - Fork 19
139 lines (120 loc) · 4.2 KB
/
Copy pathci_test_go.yml
File metadata and controls
139 lines (120 loc) · 4.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
# This workflow performs tests in Go.
name: Library Go tests
on:
workflow_call:
inputs:
dafny:
description: "The Dafny version to run"
required: true
type: string
regenerate-code:
description: "Regenerate code using smithy-dafny"
required: false
default: false
type: boolean
mpl-version:
description: "MPL version to use"
required: false
type: string
mpl-head:
description: "Running on MPL HEAD"
required: false
default: false
type: boolean
jobs:
testGo:
strategy:
fail-fast: false
matrix:
library: [DynamoDbEncryption, TestVectors]
os: [ubuntu-22.04, macos-15-intel]
go-version: ["1.23", "1.24", "1.25"]
runs-on: ${{ matrix.os }}
permissions:
id-token: write
contents: read
steps:
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v5
with:
aws-region: us-west-2
role-to-assume: arn:aws:iam::370957321024:role/GitHub-CI-DDBEC-Dafny-Role-us-west-2
role-session-name: DDBEC-Dafny-Java-Tests
- name: Setup Docker
if: matrix.os == 'macos-15-intel' && matrix.library == 'TestVectors'
uses: douglascamata/setup-docker-macos-action@v1.0.2
- name: Setup DynamoDB Local
if: matrix.library == 'TestVectors'
uses: rrainn/dynamodb-action@v4.0.0
with:
port: 8000
cors: "*"
- name: Support longpaths
run: |
git config --global core.longpaths true
- uses: actions/checkout@v5
with:
submodules: recursive
- name: Setup Dafny
uses: dafny-lang/setup-dafny-action@v1.8.0
with:
dafny-version: ${{ inputs.dafny }}
- name: Create temporary global.json
run: echo '{"sdk":{"rollForward":"latestFeature","version":"6.0.0"}}' > ./global.json
- name: Setup Java 17 for codegen
uses: actions/setup-java@v5
with:
distribution: "corretto"
java-version: "17"
- name: Update MPL submodule if using MPL HEAD
if: ${{ inputs.mpl-head == true }}
working-directory: submodules/MaterialProviders
run: |
git checkout main
git pull
git submodule update --init --recursive
git rev-parse HEAD
- name: Update project.properties if using MPL HEAD
if: ${{ inputs.mpl-head == true }}
run: |
sed "s/mplDependencyJavaVersion=.*/mplDependencyJavaVersion=${{inputs.mpl-version}}/g" project.properties > project.properties2; mv project.properties2 project.properties
- name: Install Go
uses: actions/setup-go@v6
with:
go-version: ${{ matrix.go-version }}
- uses: actions/checkout@v5
- name: Init Submodules
shell: bash
run: |
git submodule update --init --recursive submodules/smithy-dafny
git submodule update --init --recursive submodules/MaterialProviders
- name: Install Smithy-Dafny codegen dependencies
uses: ./.github/actions/install_smithy_dafny_codegen_dependencies
- name: Build ${{ matrix.library }} implementation
shell: bash
working-directory: ./${{ matrix.library }}
run: |
# This works because `node` is installed by default on GHA runners
CORES=$(node -e 'console.log(os.cpus().length)')
make transpile_go CORES=$CORES
- name: Regenerate code using smithy-dafny
shell: bash
working-directory: ./${{ matrix.library }}
run: |
make polymorph_go
- name: Copy ${{ matrix.library }} Vector Files
if: ${{ matrix.library == 'TestVectors' }}
shell: bash
working-directory: ./${{ matrix.library }}
run: |
cp runtimes/java/*.json runtimes/go/TestsFromDafny-go/
- name: Test ${{ matrix.library }}
working-directory: ./${{ matrix.library }}
run: |
make test_go
- name: Run and Test Examples
if: matrix.library == 'DynamoDbEncryption'
working-directory: ./Examples/runtimes/go
run: |
go run main.go
go test ./...