-
Notifications
You must be signed in to change notification settings - Fork 5
132 lines (127 loc) · 4.25 KB
/
test.yml
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
name: Test
on:
workflow_dispatch:
push:
branches:
- main
pull_request:
jobs:
ruby:
name: Ruby ${{ matrix.ruby }} ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
ruby:
- '3.1.2'
os: [ubuntu-latest, windows-latest, macos-latest]
steps:
- uses: actions/checkout@v3
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
bundler-cache: true
- name: Install Libsodium on Windows
if: runner.os == 'Windows'
# this is a dependency of the ruby rbnacl library
# libsodium seems to be installed by default on macos and ubuntu runners
# https://github.com/RubyCrypto/rbnacl/wiki/Installing-libsodium#windows
run: |
cd "$env:temp"
Invoke-WebRequest "https://download.libsodium.org/libsodium/releases/libsodium-1.0.18-stable-msvc.zip" -OutFile "./libsodium.zip"
Expand-Archive ".\libsodium.zip"
Copy-Item ".\libsodium\libsodium\x64\Release\v142\dynamic\libsodium.dll" -Destination "C:\Windows\System32\sodium.dll"
shell: pwsh
- name: Lint
run: bundle exec rake standard
shell: bash
- name: Test
run: bundle exec rake test
shell: bash
go:
name: Go ${{ matrix.go }} ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
go:
- '1.19'
os: [ubuntu-latest, windows-latest, macos-latest]
steps:
- uses: actions/checkout@v3
- name: Set up Go
uses: actions/setup-go@v3
with:
go-version: ${{ matrix.go }}
cache: true
- name: set windows cgo flags
if: runner.os == 'Windows'
shell: bash
run: |
echo "CGO_CFLAGS=-IC:\mingw64\opt\include" >> "$GITHUB_ENV"
echo "CGO_LDFLAGS=-LC:\mingw64\opt\lib" >> "$GITHUB_ENV"
- name: set macos cgo flags
if: runner.os == 'macos'
run: |
echo CGO_CFLAGS="-I$(brew --prefix openssl)/include" >> "$GITHUB_ENV"
echo CGO_LDFLAGS="-L$(brew --prefix openssl)/lib" >> "$GITHUB_ENV"
- name: Lint
uses: golangci/golangci-lint-action@v3
- name: Test
run: go test -tags skiplint $(go list ./... | grep -v cross_language_tests) -race -cover
shell: bash
cross:
name: Cross - Go ${{ matrix.go }} Ruby ${{ matrix.ruby }} ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
go:
- '1.19'
ruby:
- '3.1.2'
os: [ubuntu-latest, windows-latest, macos-latest]
steps:
- uses: actions/checkout@v3
- name: Set up Go
uses: actions/setup-go@v3
with:
go-version: ${{ matrix.go }}
cache: true
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
bundler-cache: true
- name: set windows cgo flags
if: runner.os == 'Windows'
shell: bash
run: |
echo "CGO_CFLAGS=-IC:\mingw64\opt\include" >> "$GITHUB_ENV"
echo "CGO_LDFLAGS=-LC:\mingw64\opt\lib" >> "$GITHUB_ENV"s
- name: Install Libsodium on Windows
if: runner.os == 'Windows'
# this is a dependency of the ruby rbnacl library
# libsodium seems to be installed by default on macos and ubuntu runners
# https://github.com/RubyCrypto/rbnacl/wiki/Installing-libsodium#windows
run: |
cd "$env:temp"
Invoke-WebRequest "https://download.libsodium.org/libsodium/releases/libsodium-1.0.18-stable-msvc.zip" -OutFile "./libsodium.zip"
Expand-Archive ".\libsodium.zip"
Copy-Item ".\libsodium\libsodium\x64\Release\v142\dynamic\libsodium.dll" -Destination "C:\Windows\System32\sodium.dll"
shell: pwsh
- name: Set go C compiler on Windows
if: runner.os == 'Windows'
# the ruby installation adds a gcc and sets a path not compatible with tpm simulator
run: echo "CC=C:\ProgramData\chocolatey\bin\gcc.exe" >> "$GITHUB_ENV"
shell: bash
- name: Cross Language Tests
# ruby bundler leaves a `vendor` director here, which confuses go mod, so we need to explicitly disable it.
run: bundle exec go test ./cross_language_tests/... -mod=mod
shell: bash
mergeable:
runs-on: ubuntu-latest
steps:
- run: true
needs:
- ruby
- go
- cross