enable tpm tests on windows #288
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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: Lint | |
uses: golangci/golangci-lint-action@v3 | |
- name: Test | |
run: go test $(go list ./... | grep -v cross_language_tests) -race | |
shell: bash | |
- 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: 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: Install OpenSSL on Windows | |
if: runner.os == 'Windows' | |
# this is required to be able to run the TPM simulator on Windows | |
# https://github.com/google/go-tpm-tools#openssl-errors-when-building-simulator | |
run: choco install openssl | |
shell: bash | |
- 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 |