Skip to content

chore(deps): update github actions #1175

chore(deps): update github actions

chore(deps): update github actions #1175

Workflow file for this run

name: Tests
on:
pull_request:
push:
branches:
- main
concurrency:
group: test-${{ github.ref }}
cancel-in-progress: true
jobs:
test:
name: Test API
strategy:
fail-fast: false
matrix:
language:
- lang: C#
cmd: dotnet test -f net4.7 --logger "trx;LogFileName=test-results.trx"
dir: csharp/ArmoniK.Api.Client.Test
dotnet: ''
env: {}
- lang: C#
cmd: dotnet test -f net4.7 --logger "trx;LogFileName=test-results.trx"
dir: csharp/ArmoniK.Api.Client.Test
dotnet: ''
env:
GrpcClient__HttpMessageHandler: GrpcWebHandler
- lang: C#
cmd: dotnet test -f net4.8 --logger "trx;LogFileName=test-results.trx"
dir: csharp/ArmoniK.Api.Client.Test
dotnet: ''
env: {}
- lang: C#
cmd: dotnet test -f net4.8 --logger "trx;LogFileName=test-results.trx"
dir: csharp/ArmoniK.Api.Client.Test
dotnet: ''
env:
GrpcClient__HttpMessageHandler: GrpcWebHandler
- lang: C#
cmd: dotnet test -f net6.0 --logger "trx;LogFileName=test-results.trx"
dir: csharp/ArmoniK.Api.Client.Test
dotnet: 6.0
env: {}
- lang: C#
cmd: dotnet test -f net8.0 --logger "trx;LogFileName=test-results.trx"
dir: csharp/ArmoniK.Api.Client.Test
dotnet: 8.0
env: {}
- lang: C++
cmd: ./tools/run_test.sh
dir: cpp
env: {}
- lang: Python
cmd: pytest tests --cov=armonik --cov-config=.coveragerc --cov-report=term-missing --cov-append --cov-report xml:coverage.xml --cov-report html:coverage_report
dir: python
env: {}
- lang: Rust
toolchain: stable
cmd: cargo test --locked
dir: rust/armonik
env: {}
- lang: Rust
toolchain: nightly
cmd: cargo test --locked
dir: rust/armonik
env: {}
plateform:
- os: ubuntu-latest
- os: windows-latest
- os: windows-2019
exclude:
- language:
lang: Python
plateform:
os: windows-latest
- language:
lang: C++
plateform:
os: windows-latest
- language:
lang: C++
plateform:
os: windows-2019
- language:
lang: Python
plateform:
os: windows-2019
- language:
lang: Rust
plateform:
os: windows-2019
- language:
lang: C#
dotnet: ''
plateform:
os: ubuntu-latest
runs-on: ${{ matrix.plateform.os }}
env: ${{ matrix.language.env }}
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with:
fetch-depth: 0
- name: Generate certs
working-directory: packages/csharp/
shell: bash
run: |
mkdir certs
cd certs
../../../scripts/certs.sh
- name: Install certs
if: ${{ matrix.plateform.os == 'ubuntu-latest' }}
working-directory: packages/csharp/certs
run: |
sudo apt install ca-certificates
sudo mkdir -p /usr/local/share/ca-certificates/
sudo cp server2-ca.pem /usr/local/share/ca-certificates/ca.crt
sudo update-ca-certificates
- name: Install certs
if: ${{ contains(matrix.plateform.os, 'windows') }}
working-directory: packages/csharp/certs
run: |
certutil -addstore -f "ROOT" server2-ca.pem
- name: Install .NET Core
uses: actions/setup-dotnet@3e891b0cb619bf60e2c25674b222b8940e2c1c25 # v4
if: ${{ matrix.language.dotnet }} != ""
with:
dotnet-version: ${{ matrix.language.dotnet }}
- name: Print language
run: |
echo "Current language: ${{ matrix.language.lang }}"
# Prepare Python
- name: pip update and add build package
if: ${{ matrix.language.lang == 'Python' }}
working-directory: packages/python
run: bash proto2python.sh ~/pyvenv
- name: Install python dependencies
if: ${{ matrix.language.lang == 'Python' }}
working-directory: packages/python
run: |
pwd
pip install "$(echo pkg/armonik*.whl)[tests]"
# Prepare Rust
- uses: taiki-e/install-action@9023ed54c080c7ff1b3e4af335c729c3f9cb1dd7 # v2
if: ${{ matrix.language.lang == 'Rust' }}
with:
tool: protoc,sccache
- name: Install Rust toolchain
if: ${{ matrix.language.lang == 'Rust' }}
uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ matrix.language.toolchain }}
components: rust-src,rust-docs,rustfmt${{contains(matrix.language.toolchain, 'nightly') && ',miri' || ''}}
- name: Build Rust package
if: ${{ matrix.language.lang == 'Rust' }}
working-directory: packages/rust/armonik
run: |
cargo build --locked --tests
# Prepare C++
- name: Build C++ package
if: ${{ matrix.language.lang == 'C++' }}
working-directory: packages/cpp
run: |
./tools/build_test.sh
- name: Build Mock server
working-directory: packages/csharp/ArmoniK.Api.Mock
shell: bash
run: |
dotnet publish -o ../out
[ -e ../out/ArmoniK.Api.Mock.exe ] || ln -s ArmoniK.Api.Mock ../out/ArmoniK.Api.Mock.exe
# Run tests
- name: noTLS
working-directory: packages/csharp/
shell: bash
run: |
export Grpc__Port=5000
export Http__Port=4999
export Grpc__Endpoint=http://localhost:5000
export Http__Endpoint=http://localhost:4999
export GrpcClient__Endpoint=http://localhost:5000
export GrpcClient__AllowUnsafeConnection=true
../../scripts/mock_test.sh ${{ matrix.language.dir }} '${{ matrix.language.cmd }}'
- name: TLS Insecure
if: ${{ contains(fromJson('["C#", "Rust"]'), matrix.language.lang) }}
working-directory: packages/csharp/
shell: bash
run: |
export Grpc__Port=5001
export Http__Port=5001
export Http__Cert=certs/server1.pem
export Http__Key=certs/server1.key
export Grpc__Endpoint=https://localhost:5001
export Http__Endpoint=https://localhost:5001
export Grpc__AllowUnsafeConnection=true
export GrpcClient__Endpoint=https://localhost:5001
export GrpcClient__AllowUnsafeConnection=true
../../scripts/mock_test.sh ${{ matrix.language.dir }} '${{ matrix.language.cmd }}'
- name: TLS secure
working-directory: packages/csharp/
shell: bash
run: |
export CertFolder="$PWD/certs"
export Grpc__Port=5001
export Http__Port=5001
export Http__Cert=certs/server1.pem
export Http__Key=certs/server1.key
export Grpc__Endpoint=https://localhost:5001
export Http__Endpoint=https://localhost:5001
export Grpc__CaCert=certs/server1-ca.pem
export GrpcClient__Endpoint=https://localhost:5001
export GrpcClient__AllowUnsafeConnection=false
export GrpcClient__CaCert=$CertFolder/server1-ca.pem
../../scripts/mock_test.sh ${{ matrix.language.dir }} '${{ matrix.language.cmd }}'
- name: TLS store
working-directory: packages/csharp/
shell: bash
run: |
export Grpc__Port=5002
export Http__Port=5002
export Http__Cert=certs/server2.pem
export Http__Key=certs/server2.key
export Grpc__Endpoint=https://localhost:5002
export Http__Endpoint=https://localhost:5002
export GrpcClient__Endpoint=https://localhost:5002
export GrpcClient__AllowUnsafeConnection=false
../../scripts/mock_test.sh ${{ matrix.language.dir }} '${{ matrix.language.cmd }}'
- name: mTLS Insecure
if: ${{ contains(fromJson('["C#", "Rust"]'), matrix.language.lang) }}
working-directory: packages/csharp/
shell: bash
run: |
export CertFolder="$PWD/certs"
export Grpc__Port=5003
export Http__Port=5003
export Http__Cert=certs/server1.pem
export Http__Key=certs/server1.key
export Grpc__Endpoint=https://localhost:5003
export Http__Endpoint=https://localhost:5003
export Grpc__ClientCert=certs/client.pem
export Grpc__ClientKey=certs/client.key
export GrpcClient__Endpoint=https://localhost:5003
export GrpcClient__AllowUnsafeConnection=true
export GrpcClient__CertPem=$CertFolder/client.pem
export GrpcClient__KeyPem=$CertFolder/client.key
../../scripts/mock_test.sh ${{ matrix.language.dir }} '${{ matrix.language.cmd }}'
- name: mTLS secure
working-directory: packages/csharp/
shell: bash
run: |
export CertFolder="$PWD/certs"
export Grpc__Port=5003
export Http__Port=5003
export Http__Cert=certs/server1.pem
export Http__Key=certs/server1.key
export Http__ClientCert=certs/client-ca.pem
export Grpc__Endpoint=https://localhost:5003
export Http__Endpoint=https://localhost:5003
export Grpc__CaCert=certs/server1-ca.pem
export Grpc__ClientCert=certs/client.pem
export Grpc__ClientKey=certs/client.key
export GrpcClient__Endpoint=https://localhost:5003
export GrpcClient__AllowUnsafeConnection=false
export GrpcClient__CaCert=$CertFolder/server1-ca.pem
export GrpcClient__CertPem=$CertFolder/client.pem
export GrpcClient__KeyPem=$CertFolder/client.key
../../scripts/mock_test.sh ${{ matrix.language.dir }} '${{ matrix.language.cmd }}'
- name: mTLS store
working-directory: packages/csharp/
shell: bash
run: |
export CertFolder="$PWD/certs"
export Grpc__Port=5004
export Http__Port=5004
export Http__Cert=certs/server2.pem
export Http__Key=certs/server2.key
export Http__ClientCert=certs/client-ca.pem
export Grpc__Endpoint=https://localhost:5004
export Http__Endpoint=https://localhost:5004
export Grpc__ClientCert=certs/client.pem
export Grpc__ClientKey=certs/client.key
export GrpcClient__Endpoint=https://localhost:5004
export GrpcClient__AllowUnsafeConnection=false
export GrpcClient__CertPem=$CertFolder/client.pem
export GrpcClient__KeyPem=$CertFolder/client.key
../../scripts/mock_test.sh ${{ matrix.language.dir }} '${{ matrix.language.cmd }}'
- name: Test Report
uses: dorny/test-reporter@v1
if: ${{ matrix.language.lang == 'C#' && always() }}
with:
name: ConnectivityTests ${{ matrix.plateform.os }} ${{ matrix.dotnet.framework }} ${{ matrix.language.handler }}
path: ./packages/csharp/ArmoniK.Api.Client.Test/TestResults/test-results.trx
reporter: dotnet-trx
- name: Get Cover Python
uses: orgoro/coverage@3f13a558c5af7376496aa4848bf0224aead366ac
if: ${{ matrix.language.lang == 'Python' && always() }}
with:
coverageFile: packages/python/coverage.xml
token: ${{ secrets.GITHUB_TOKEN }}
- name: Archive code coverage results html
uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b
if: ${{ matrix.language.lang == 'Python' && always() }}
with:
name: code-coverage-report-html
path: packages/python/coverage_report
- name: Archive code coverage results xml
uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b
if: ${{ matrix.language.lang == 'Python' && always() }}
with:
name: code-coverage-report-xml
path: packages/python/coverage.xml