on: [push, pull_request]
name: CI
jobs:
check:
name: Check
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v2
- name: Install stable toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- name: Run cargo check
uses: actions-rs/cargo@v1
with:
command: check
test:
name: Test Suite
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v2
- name: Install stable toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- name: Run cargo test
uses: actions-rs/cargo@v1
with:
command: test
lints:
name: Lints
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v2
- name: Install stable toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
components: rustfmt, clippy
- name: Run cargo fmt
uses: actions-rs/cargo@v1
with:
command: fmt
args: --all -- --check
- name: Run cargo clippy
uses: actions-rs/cargo@v1
with:
command: clippy
args: -- -D warnings
testground:
name: Testground runs
runs-on: ubuntu-latest
defaults:
run:
shell: bash
steps:
- name: Checkout sources
uses: actions/checkout@v2
with:
path: sdk-rust
- name: Checkout testground
uses: actions/checkout@v2
with:
path: testground
repository: testground/testground
- name: Setup Go
uses: actions/setup-go@v2
with:
go-version: "1.16.x"
- name: Install testground
run: make install
working-directory: testground
- name: Run testground daemon
run: testground daemon > daemon.out 2> daemon.err &
working-directory: testground
- name: Import testground plans
run: testground plan import --from sdk-rust
- name: Check testground daemon health
run:
echo "Waiting for Testground to launch on 8042...";
while ! nc -z localhost 8042; do
sleep 1;
done;
echo "Testground launched";
testground healthcheck --runner local:docker --fix;
shell: bash
- name: Run testground plan (case=example)
run: |
testground run single \
--plan=sdk-rust \
--testcase=example \
--builder=docker:generic \
--runner=local:docker \
--instances=1 \
--wait \
--collect \
--collect-file ./result_example.tgz
- name: Run testground plan (case=publish-subscribe)
run: |
testground run single \
--plan=sdk-rust \
--testcase=publish-subscribe \
--builder=docker:generic \
--runner=local:docker \
--instances=2 \
--wait \
--collect \
--collect-file ./result_publish_subscribe.tgz
- uses: actions/upload-artifact@v3
if: ${{ always() }}
with:
name: testground-output
path: |
testground/daemon.*
result*.tgz