libp2p-test-plans/.github/actions/setup-testground/action.yml

82 lines
2.4 KiB
YAML

name: start testground
description: setup a local testground instance
inputs:
testground_endpoint:
required: false
default: ''
testground_repository:
required: false
default: 'testground/testground'
testground_ref:
required: false
default: 'edge'
runs:
using: "composite"
steps:
# Default setup when we use the testground_ref == edge.
- name: Load testground
if: ${{ inputs.testground_ref == 'edge' }}
shell: bash
run: |
for i in 1 2 3; do
echo "=== Attempt $i ==="
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/testground/testground/master/install.sh)" && \
exit 0
sleep 10
done
exit 1
# Custom setup (slower) when we use a different testground_ref
- name: Checkout testground
if: ${{ inputs.testground_ref != 'edge' }}
uses: actions/checkout@v2
with:
path: testground
repository: ${{ inputs.testground_repository }}
ref: ${{ inputs.testground_ref }}
- name: Setup Go
if: ${{ inputs.testground_ref != 'edge' }}
uses: actions/setup-go@v3
with:
cache: true
go-version-file: 'testground/go.mod'
cache-dependency-path: testground/go.sum
- name: Install testground
if: ${{ inputs.testground_ref != 'edge' }}
run: make install || make install || make install # 3 retries in case of network drops.
working-directory: testground
shell: bash
- name: Run the daemon or configure the client
shell: bash
env:
TESTGROUND_ENDPOINT: ${{ inputs.testground_endpoint }}
run: |
if [[ ! -z "${TESTGROUND_ENDPOINT}" ]]; then
mkdir -p ~/testground/;
cat <<EOF >> ~/testground/.env.toml
[client]
endpoint = "${TESTGROUND_ENDPOINT}"
EOF
else
mkdir -p ~/testground/;
cat <<EOF >> ~/testground/.env.toml
[daemon.scheduler]
task_timeout_min = 60
EOF
testground daemon > testground.out 2> testground.err &
fi;
- 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