Skip to content

Refine test for record. v5.9.11 #1642

Refine test for record. v5.9.11

Refine test for record. v5.9.11 #1642

Workflow file for this run

name: Test Dev Environment
on:
push:
branches:
- main
- release/*
jobs:
envs:
name: envs
steps:
##################################################################################################################
# Git checkout
- name: Checkout repository
uses: actions/checkout@v3
# The github.ref is, for example, refs/tags/v5.0.145 or refs/tags/v5.0-r8
# Generate variables like:
# SRS_TAG=v1.0.52
# SRS_MAJOR=1
# @see https://docs.github.com/en/actions/reference/workflow-commands-for-github-actions#setting-an-environment-variable
- name: Generate varaiables
run: |
SRS_TAG=$(bash scripts/version.sh)
echo "SRS_TAG=$SRS_TAG" >> $GITHUB_ENV
SRS_MAJOR=$(echo $SRS_TAG| awk -F '.' '{print $1}' |sed 's/v//g')
echo "SRS_MAJOR=$SRS_MAJOR" >> $GITHUB_ENV
echo "SRS_TAG:$SRS_TAG, SRS_MAJOR:$SRS_MAJOR"
# Map a step output to a job output, see https://docs.github.com/en/actions/using-jobs/defining-outputs-for-jobs
outputs:
SRS_TAG: ${{ env.SRS_TAG }}
SRS_MAJOR: ${{ env.SRS_MAJOR }}
runs-on: ubuntu-20.04
run-test:
name: Run UTest
runs-on: ubuntu-20.04
needs:
- envs
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Download test file
run: |
curl --location --output test/source.200kbps.768x320.flv \
https://github.com/ossrs/srs/raw/develop/trunk/doc/source.200kbps.768x320.flv
- name: Setup the npm node
uses: actions/setup-node@v3
with:
node-version: '18'
cache: 'npm'
cache-dependency-path: |
ui/package-lock.json
- name: Setup the Go
uses: actions/setup-go@v3
with:
go-version: '>=1.16.0'
- name: Install tools
run: |
docker run --rm -v /usr/bin:/g ossrs/srs:tools \
cp /usr/local/bin/ffmpeg /usr/local/bin/ffprobe /g/
ffmpeg -version
- name: Test by jest and Go
run: |
make -j && make test -j
build-platform-image:
name: Build platform image
runs-on: ubuntu-20.04
needs:
- envs
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Build image for platform
run: |
docker build -t platform:latest -f Dockerfile .
docker images
docker save -o platform.tar platform:latest
- uses: actions/upload-artifact@v3
with:
name: platform-cache
path: platform.tar
retention-days: 1
test-zh-image:
name: Test ZH image
needs:
- envs
- build-platform-image
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Download test file
run: |
curl --location --output test/source.200kbps.768x320.flv \
https://github.com/ossrs/srs/raw/develop/trunk/doc/source.200kbps.768x320.flv
- name: Install tools
run: |
docker run --rm -v /usr/bin:/g ossrs/srs:tools \
cp /usr/local/bin/ffmpeg /usr/local/bin/ffprobe /g/
ffmpeg -version
- uses: actions/download-artifact@v3
with:
name: platform-cache
- name: Run test for platform image
run: |
docker load -i platform.tar
docker tag platform ossrs/srs-stack:5
docker run --rm -d -p 2022:2022 -p 2443:2443 -p 1935:1935/tcp -p 1985:1985/tcp \
-p 8080:8080/tcp -p 8000:8000/udp -p 10080:10080/udp --name srs-stack \
-v /data:/data -e REACT_APP_LOCALE=zh ossrs/srs-stack:5
- name: Check and Test service
run: |
# We will handle the error by ourselves.
set +e
# Record all logs.
docker logs -f srs-stack >docker.log 2>&1 & pid_docker=$!
echo "Wait for service ready." &&
make -j -C test &&
bash scripts/tools/secret.sh --output test/.env &&
./test/srs-stack.test -test.v -endpoint http://localhost:2022 \
-srs-log=true -wait-ready=true -init-password=true -init-self-signed-cert=true \
-check-api-secret=true -test.run TestApi_Empty &&
echo "Make upload writable." &&
sudo chmod 777 /data/upload &&
echo "Test HTTP service." &&
bash scripts/tools/secret.sh --output test/.env &&
./test/srs-stack.test -test.v -endpoint http://localhost:2022 \
-srs-log=true -wait-ready=true -init-password=false -init-self-signed-cert=false \
-check-api-secret=true -no-media-test &&
echo "Test HTTPS service." &&
bash scripts/tools/secret.sh --output test/.env &&
./test/srs-stack.test -test.v -endpoint https://localhost:2443 \
-srs-log=true -wait-ready=true -init-password=false -init-self-signed-cert=false \
-check-api-secret=true -no-media-test &&
echo "Run media test with retry" &&
bash scripts/tools/secret.sh --output test/.env &&
./scripts/tools/failed-retry.sh 1 ./test/srs-stack.test -test.v -endpoint http://localhost:2022 \
-srs-log=true -wait-ready=true -init-password=false -init-self-signed-cert=false \
-check-api-secret=true -test.run TestApi_Publish*
ret=$?; echo "Test result: $ret"
echo "Stop service"
docker stop srs-stack
kill $pid_docker 2>/dev/null
echo "Log of docker.log" && cat docker.log
exit $ret
runs-on: ubuntu-20.04
test-en-image:
name: Test EN image
needs:
- envs
- build-platform-image
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Download test file
run: |
curl --location --output test/source.200kbps.768x320.flv \
https://github.com/ossrs/srs/raw/develop/trunk/doc/source.200kbps.768x320.flv
- name: Install tools
run: |
docker run --rm -v /usr/bin:/g ossrs/srs:tools \
cp /usr/local/bin/ffmpeg /usr/local/bin/ffprobe /g/
ffmpeg -version
- uses: actions/download-artifact@v3
with:
name: platform-cache
- name: Run test for platform image
run: |
docker load -i platform.tar
docker tag platform ossrs/srs-stack:5
docker run --rm -d -p 2022:2022 -p 2443:2443 -p 1935:1935/tcp -p 1985:1985/tcp \
-p 8080:8080/tcp -p 8000:8000/udp -p 10080:10080/udp --name srs-stack \
-v /data:/data -e REACT_APP_LOCALE=en ossrs/srs-stack:5
- name: Check and Test service
run: |
# We will handle the error by ourselves.
set +e
# Record all logs.
docker logs -f srs-stack >docker.log 2>&1 & pid_docker=$!
echo "Wait for service ready." &&
make -j -C test &&
bash scripts/tools/secret.sh --output test/.env &&
./test/srs-stack.test -test.v -endpoint http://localhost:2022 \
-srs-log=true -wait-ready=true -init-password=true -init-self-signed-cert=true \
-check-api-secret=true -test.run TestApi_Empty &&
echo "Make upload writable." &&
sudo chmod 777 /data/upload &&
echo "Test HTTP service." &&
bash scripts/tools/secret.sh --output test/.env &&
./test/srs-stack.test -test.v -endpoint http://localhost:2022 \
-srs-log=true -wait-ready=true -init-password=false -init-self-signed-cert=false \
-check-api-secret=true -no-media-test &&
echo "Test HTTPS service." &&
bash scripts/tools/secret.sh --output test/.env &&
./test/srs-stack.test -test.v -endpoint https://localhost:2443 \
-srs-log=true -wait-ready=true -init-password=false -init-self-signed-cert=false \
-check-api-secret=true -no-media-test &&
echo "Run media test with retry" &&
bash scripts/tools/secret.sh --output test/.env &&
./scripts/tools/failed-retry.sh 1 ./test/srs-stack.test -test.v -endpoint http://localhost:2022 \
-srs-log=true -wait-ready=true -init-password=false -init-self-signed-cert=false \
-check-api-secret=true -test.run TestApi_Publish*
ret=$?; echo "Test result: $ret"
echo "Stop service"
docker stop srs-stack
kill $pid_docker 2>/dev/null
echo "Log of docker.log" && cat docker.log
exit $ret
runs-on: ubuntu-20.04
test-zh-installer:
name: Test ZH installer
runs-on: ubuntu-20.04
needs:
- envs
- build-platform-image
steps:
- name: Covert output to env
run: |
echo "SRS_TAG=${{ needs.envs.outputs.SRS_TAG }}" >> $GITHUB_ENV
echo "SRS_MAJOR=${{ needs.envs.outputs.SRS_MAJOR }}" >> $GITHUB_ENV
- name: Checkout repository
uses: actions/checkout@v3
- name: Download test file
run: |
curl --location --output test/source.200kbps.768x320.flv \
https://github.com/ossrs/srs/raw/develop/trunk/doc/source.200kbps.768x320.flv
- name: Install tools
run: |
docker run --rm -v /usr/bin:/g ossrs/srs:tools \
cp /usr/local/bin/ffmpeg /usr/local/bin/ffprobe /g/
ffmpeg -version
- name: Start Nginx service
run: |
sudo systemctl start nginx
sudo systemctl status nginx
- uses: actions/download-artifact@v3
with:
name: platform-cache
- name: Load platform image
run: |
docker load -i platform.tar
docker tag platform:latest ossrs/srs-stack:$SRS_TAG
docker tag platform:latest registry.cn-hangzhou.aliyuncs.com/ossrs/srs-stack:$SRS_TAG
docker images
- name: Build package
run: |
bash scripts/setup-ubuntu/build.sh --language zh --version $SRS_TAG \
--output $(pwd)/build --extract
du -sh $(pwd)/build/*
- name: Install package
run: |
sudo bash build/srs_stack/scripts/setup-ubuntu/install.sh --verbose
echo "" && echo "/usr/local/srs-stack/" && du -sh /usr/local/srs-stack/*
echo "" && ls -lha /data /data/config
- name: Check and Test service
run: |
# We will handle the error by ourselves.
set +e
# Record all logs.
journalctl -u srs-stack -f >journalctl.log 2>&1 & pid_journalctl=$!
echo "Wait for service ready." &&
make -j -C test &&
bash scripts/tools/secret.sh --output test/.env &&
./test/srs-stack.test -test.v -endpoint http://localhost:2022 \
-srs-log=true -wait-ready=true -init-password=true -init-self-signed-cert=true \
-check-api-secret=true -test.run TestApi_Empty &&
echo "Make upload writable." &&
sudo chmod 777 /data/upload &&
echo "Test HTTP service." &&
bash scripts/tools/secret.sh --output test/.env &&
./test/srs-stack.test -test.v -endpoint http://localhost:2022 \
-srs-log=true -wait-ready=true -init-password=false -init-self-signed-cert=false \
-check-api-secret=true -no-media-test &&
echo "Test HTTPS service." &&
bash scripts/tools/secret.sh --output test/.env &&
./test/srs-stack.test -test.v -endpoint https://localhost:2443 \
-srs-log=true -wait-ready=true -init-password=false -init-self-signed-cert=false \
-check-api-secret=true -no-media-test &&
echo "Run media test with retry" &&
bash scripts/tools/secret.sh --output test/.env &&
./scripts/tools/failed-retry.sh 1 ./test/srs-stack.test -test.v -endpoint http://localhost:2022 \
-srs-log=true -wait-ready=true -init-password=false -init-self-signed-cert=false \
-check-api-secret=true -test.run TestApi_Publish*
ret=$?; echo "Test result: $ret"
echo "Stop service"
sudo systemctl stop srs-stack
kill $pid_journalctl 2>/dev/null
echo "Log of journalctl.log" && cat journalctl.log
exit $ret
test-en-installer:
name: Test EN installer
runs-on: ubuntu-20.04
needs:
- envs
- build-platform-image
steps:
- name: Covert output to env
run: |
echo "SRS_TAG=${{ needs.envs.outputs.SRS_TAG }}" >> $GITHUB_ENV
echo "SRS_MAJOR=${{ needs.envs.outputs.SRS_MAJOR }}" >> $GITHUB_ENV
- name: Checkout repository
uses: actions/checkout@v3
- name: Download test file
run: |
curl --location --output test/source.200kbps.768x320.flv \
https://github.com/ossrs/srs/raw/develop/trunk/doc/source.200kbps.768x320.flv
- name: Install tools
run: |
docker run --rm -v /usr/bin:/g ossrs/srs:tools \
cp /usr/local/bin/ffmpeg /usr/local/bin/ffprobe /g/
ffmpeg -version
- name: Start Nginx service
run: |
sudo systemctl start nginx
sudo systemctl status nginx
- uses: actions/download-artifact@v3
with:
name: platform-cache
- name: Load platform image
run: |
docker load -i platform.tar
docker tag platform:latest ossrs/srs-stack:$SRS_TAG
docker tag platform:latest registry.cn-hangzhou.aliyuncs.com/ossrs/srs-stack:$SRS_TAG
docker images
- name: Build package
run: |
bash scripts/setup-ubuntu/build.sh --language en --version $SRS_TAG \
--output $(pwd)/build --extract
du -sh $(pwd)/build/*
- name: Install package
run: |
sudo bash build/srs_stack/scripts/setup-ubuntu/install.sh --verbose
echo "" && echo "/usr/local/srs-stack/" && du -sh /usr/local/srs-stack/*
echo "" && ls -lha /data /data/config
- name: Check and Test service
run: |
# We will handle the error by ourselves.
set +e
# Record all logs.
journalctl -u srs-stack -f >journalctl.log 2>&1 & pid_journalctl=$!
echo "Wait for service ready." &&
make -j -C test &&
bash scripts/tools/secret.sh --output test/.env &&
./test/srs-stack.test -test.v -endpoint http://localhost:2022 \
-srs-log=true -wait-ready=true -init-password=true -init-self-signed-cert=true \
-check-api-secret=true -test.run TestApi_Empty &&
echo "Make upload writable." &&
sudo chmod 777 /data/upload &&
echo "Test HTTP service." &&
bash scripts/tools/secret.sh --output test/.env &&
./test/srs-stack.test -test.v -endpoint http://localhost:2022 \
-srs-log=true -wait-ready=true -init-password=false -init-self-signed-cert=false \
-check-api-secret=true -no-media-test &&
echo "Test HTTPS service." &&
bash scripts/tools/secret.sh --output test/.env &&
./test/srs-stack.test -test.v -endpoint https://localhost:2443 \
-srs-log=true -wait-ready=true -init-password=false -init-self-signed-cert=false \
-check-api-secret=true -no-media-test &&
echo "Run media test with retry" &&
bash scripts/tools/secret.sh --output test/.env &&
./scripts/tools/failed-retry.sh 1 ./test/srs-stack.test -test.v -endpoint http://localhost:2022 \
-srs-log=true -wait-ready=true -init-password=false -init-self-signed-cert=false \
-check-api-secret=true -test.run TestApi_Publish*
ret=$?; echo "Test result: $ret"
echo "Stop service"
sudo systemctl stop srs-stack
kill $pid_journalctl 2>/dev/null
echo "Log of journalctl.log" && cat journalctl.log
exit $ret
test-bt-plugin:
name: Test BT plugin
runs-on: ubuntu-20.04
needs:
- envs
- build-platform-image
steps:
- name: Remove unnecessary files
run: |
df -h
echo ""
echo "After removed some unused files."
echo ""
sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc \
/usr/local/share/powershell /usr/share/swift /usr/lib/jvm
df -h
- name: Covert output to env
run: |
echo "SRS_TAG=${{ needs.envs.outputs.SRS_TAG }}" >> $GITHUB_ENV
echo "SRS_MAJOR=${{ needs.envs.outputs.SRS_MAJOR }}" >> $GITHUB_ENV
- name: Checkout repository
uses: actions/checkout@v3
- name: Download test file
run: |
curl --location --output test/source.200kbps.768x320.flv \
https://github.com/ossrs/srs/raw/develop/trunk/doc/source.200kbps.768x320.flv
- name: Install tools
run: |
docker run --rm -v /usr/bin:/g ossrs/srs:tools \
cp /usr/local/bin/ffmpeg /usr/local/bin/ffprobe /g/
ffmpeg -version
- uses: actions/download-artifact@v3
with:
name: platform-cache
# See https://github.com/moby/moby/issues/13742#issuecomment-725197223
- name: Force docker to use vfs.
run: |
sudo systemctl stop docker
echo '{"cgroup-parent":"/actions_job","storage-driver":"vfs"}' | sudo tee /etc/docker/daemon.json
sudo systemctl start docker
- name: Add hosts to /etc/hosts
run: |
sudo echo "127.0.0.1 srs.stack.local" | sudo tee -a /etc/hosts
- name: Build package
run: |
bash scripts/setup-bt/auto/zip.sh --version $SRS_TAG \
--output build --extract
du -sh build/*
- name: Start BT develop container
env:
BT_API: ${{ secrets.BT_API }}
BT_USER: ${{ secrets.BT_USER }}
run: |
mkdir -p $HOME/.bt
echo -n "$BT_API" > $HOME/.bt/api.json
echo -n "$BT_USER" > $HOME/.bt/userInfo.json
BT_KEY=$(cat $HOME/.bt/api.json |awk -F token_crypt '{print $2}' |cut -d'"' -f3)
# Note that we must mount the /data to allow test to read the MGMT_PASSWORD in /data/config/.env
docker run -v /data:/data -p 80:80 -p 443:443 -p 7800:7800 \
-p 2022:2022 -p 1935:1935/tcp -p 1985:1985/tcp -p 8080:8080/tcp -p 8000:8000/udp -p 10080:10080/udp \
-v $(pwd)/build/srs_stack:/www/server/panel/plugin/srs_stack \
-v $HOME/.bt/userInfo.json:/www/server/panel/data/userInfo.json \
-v $HOME/.bt/api.json:/www/server/panel/config/api.json -e BT_KEY=$BT_KEY \
--privileged -v /sys/fs/cgroup:/sys/fs/cgroup:ro \
--add-host srs.stack.local:127.0.0.1 \
-d --rm -v $(pwd):/g -w /g --name=bt ossrs/bt-plugin-dev:1
echo "BT docker started."
- name: Wait for systemd service start
run: |
# We will handle the error by ourselves.
set +e
for ((i=0; i<10; i++)); do
if [[ $(docker exec bt systemctl status docker >/dev/null 2>/dev/null && echo yes) == yes ]]; then
echo "Docker service started."
break
else
echo "Wait for docker service start."
sleep 1
fi
done
docker exec bt systemctl status docker
echo "Docker service started."
- name: Import platform image to BT
run: |
docker exec bt docker load -i platform.tar
echo "Import platform image to BT ok."
docker exec bt docker tag platform:latest ossrs/srs-stack:$SRS_TAG
docker exec bt docker tag platform:latest registry.cn-hangzhou.aliyuncs.com/ossrs/srs-stack:$SRS_TAG
echo "Tag platform image to BT ok."
docker exec bt docker images
- name: Install SRS Stack plugin
run: |
docker exec bt bash /www/server/panel/plugin/srs_stack/install.sh install
echo "Install SRS Stack plugin ok."
docker exec bt python3 /www/server/panel/plugin/srs_stack/bt_api_create_site.py
docker exec bt python3 /www/server/panel/plugin/srs_stack/bt_api_setup_site.py
echo "Create SRS site ok."
docker exec bt bash /www/server/panel/plugin/srs_stack/setup.sh \
--r0 /tmp/srs_stack_install.r0 --nginx /www/server/nginx/logs/nginx.pid \
--www /www/wwwroot --site srs.stack.local
echo "Setup SRS Stack plugin ok."
set +e
docker exec bt systemctl status srs-stack
docker exec bt journalctl -u srs-stack
docker exec bt docker logs srs-stack
- name: Check and Test service
run: |
# We will handle the error by ourselves.
set +e
# Record all logs.
docker exec bt journalctl -u srs-stack -f >journalctl.log 2>&1 &
echo "Wait for service ready." &&
make -j -C test &&
bash scripts/tools/secret.sh --output test/.env &&
./test/srs-stack.test -test.v -endpoint http://srs.stack.local:80 \
-srs-log=true -wait-ready=true -init-password=true -init-self-signed-cert=true \
-check-api-secret=true -test.run TestApi_Empty &&
echo "Make upload writable." &&
sudo chmod 777 /data/upload &&
echo "Test HTTP service." &&
bash scripts/tools/secret.sh --output test/.env &&
./test/srs-stack.test -test.v -endpoint http://srs.stack.local:80 \
-srs-log=true -wait-ready=true -init-password=false -init-self-signed-cert=false \
-check-api-secret=true -no-media-test &&
echo "Test HTTPS service." &&
bash scripts/tools/secret.sh --output test/.env &&
./test/srs-stack.test -test.v -endpoint https://srs.stack.local:443 \
-srs-log=true -wait-ready=true -init-password=false -init-self-signed-cert=false \
-check-api-secret=true -no-media-test &&
echo "Run media test with retry" &&
bash scripts/tools/secret.sh --output test/.env &&
./scripts/tools/failed-retry.sh 1 ./test/srs-stack.test -test.v -endpoint http://srs.stack.local:80 \
-srs-log=true -wait-ready=true -init-password=false -init-self-signed-cert=false \
-check-api-secret=true -test.run TestApi_Publish*
ret=$?; echo "Test result: $ret"
echo "Stop service"
docker exec bt systemctl stop srs-stack
docker stop bt
echo "Log of journalctl.log" && cat journalctl.log
exit $ret
test-aapanel-plugin:
name: Test aaPanel plugin
runs-on: ubuntu-20.04
needs:
- envs
- build-platform-image
steps:
- name: Remove unnecessary files
run: |
df -h
echo ""
echo "After removed some unused files."
echo ""
sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc \
/usr/local/share/powershell /usr/share/swift /usr/lib/jvm
df -h
- name: Covert output to env
run: |
echo "SRS_TAG=${{ needs.envs.outputs.SRS_TAG }}" >> $GITHUB_ENV
echo "SRS_MAJOR=${{ needs.envs.outputs.SRS_MAJOR }}" >> $GITHUB_ENV
- name: Checkout repository
uses: actions/checkout@v3
- name: Download test file
run: |
curl --location --output test/source.200kbps.768x320.flv \
https://github.com/ossrs/srs/raw/develop/trunk/doc/source.200kbps.768x320.flv
- name: Install tools
run: |
docker run --rm -v /usr/bin:/g ossrs/srs:tools \
cp /usr/local/bin/ffmpeg /usr/local/bin/ffprobe /g/
ffmpeg -version
- uses: actions/download-artifact@v3
with:
name: platform-cache
# See https://github.com/moby/moby/issues/13742#issuecomment-725197223
- name: Force docker to use vfs.
run: |
sudo systemctl stop docker
echo '{"cgroup-parent":"/actions_job","storage-driver":"vfs"}' | sudo tee /etc/docker/daemon.json
sudo systemctl start docker
- name: Add hosts to /etc/hosts
run: |
sudo echo "127.0.0.1 srs.stack.local" | sudo tee -a /etc/hosts
- name: Build package
run: |
bash scripts/setup-aapanel/auto/zip.sh --version $SRS_TAG \
--output build --extract
du -sh build/*
- name: Start aaPanel develop container
env:
AAPANEL_API: ${{ secrets.BT_API }}
run: |
mkdir -p $HOME/.aapanel
echo -n "$AAPANEL_API" > $HOME/.aapanel/api.json
AAPANEL_KEY=$(cat $HOME/.aapanel/api.json |awk -F token_crypt '{print $2}' |cut -d'"' -f3)
# Note that we must mount the /data to allow test to read the MGMT_PASSWORD in /data/config/.env
docker run -v /data:/data -p 80:80 -p 443:443 -p 7800:7800 \
-p 2022:2022 -p 1935:1935/tcp -p 1985:1985/tcp -p 8080:8080/tcp -p 8000:8000/udp -p 10080:10080/udp \
-v $(pwd)/build/srs_stack:/www/server/panel/plugin/srs_stack \
-v $HOME/.aapanel/api.json:/www/server/panel/config/api.json -e BT_KEY=$AAPANEL_KEY \
--privileged -v /sys/fs/cgroup:/sys/fs/cgroup:ro \
--add-host srs.stack.local:127.0.0.1 \
-d --rm -v $(pwd):/g -w /g --name=aapanel ossrs/aapanel-plugin-dev:1
echo "aaPanel docker started."
- name: Wait for systemd service start
run: |
# We will handle the error by ourselves.
set +e
for ((i=0; i<10; i++)); do
if [[ $(docker exec aapanel systemctl status docker >/dev/null 2>/dev/null && echo yes) == yes ]]; then
echo "Docker service started."
break
else
echo "Wait for docker service start."
sleep 1
fi
done
docker exec aapanel systemctl status docker
echo "Docker service started."
- name: Import platform image to aaPanel
run: |
docker exec aapanel docker load -i platform.tar
echo "Import platform image to aaPanel ok."
docker exec aapanel docker tag platform:latest ossrs/srs-stack:$SRS_TAG
docker exec aapanel docker tag platform:latest registry.cn-hangzhou.aliyuncs.com/ossrs/srs-stack:$SRS_TAG
echo "Tag platform image to aaPanel ok."
docker exec aapanel docker images
- name: Install SRS Stack plugin
run: |
docker exec aapanel bash /www/server/panel/plugin/srs_stack/install.sh install
echo "Install SRS Stack plugin ok."
docker exec aapanel python3 /www/server/panel/plugin/srs_stack/bt_api_create_site.py
docker exec aapanel python3 /www/server/panel/plugin/srs_stack/bt_api_setup_site.py
echo "Create SRS site ok."
docker exec aapanel bash /www/server/panel/plugin/srs_stack/setup.sh \
--r0 /tmp/srs_stack_install.r0 --nginx /www/server/nginx/logs/nginx.pid \
--www /www/wwwroot --site srs.stack.local
echo "Setup SRS Stack plugin ok."
set +e
docker exec aapanel systemctl status srs-stack
docker exec aapanel journalctl -u srs-stack
docker exec aapanel docker logs srs-stack
- name: Check and Test service
run: |
# We will handle the error by ourselves.
set +e
# Record all logs.
docker exec aapanel journalctl -u srs-stack -f >journalctl.log 2>&1 &
echo "Wait for service ready." &&
make -j -C test &&
bash scripts/tools/secret.sh --output test/.env &&
./test/srs-stack.test -test.v -endpoint http://srs.stack.local:80 \
-srs-log=true -wait-ready=true -init-password=true -init-self-signed-cert=true \
-check-api-secret=true -test.run TestApi_Empty &&
echo "Make upload writable." &&
sudo chmod 777 /data/upload &&
echo "Test HTTP service." &&
bash scripts/tools/secret.sh --output test/.env &&
./test/srs-stack.test -test.v -endpoint http://srs.stack.local:80 \
-srs-log=true -wait-ready=true -init-password=false -init-self-signed-cert=false \
-check-api-secret=true -no-media-test &&
echo "Test HTTPS service." &&
bash scripts/tools/secret.sh --output test/.env &&
./test/srs-stack.test -test.v -endpoint https://srs.stack.local:443 \
-srs-log=true -wait-ready=true -init-password=false -init-self-signed-cert=false \
-check-api-secret=true -no-media-test &&
echo "Run media test with retry" &&
bash scripts/tools/secret.sh --output test/.env &&
./scripts/tools/failed-retry.sh 1 ./test/srs-stack.test -test.v -endpoint http://srs.stack.local:80 \
-srs-log=true -wait-ready=true -init-password=false -init-self-signed-cert=false \
-check-api-secret=true -test.run TestApi_Publish*
ret=$?; echo "Test result: $ret"
echo "Stop service"
docker exec aapanel systemctl stop srs-stack
docker stop aapanel
echo "Log of journalctl.log" && cat journalctl.log
exit $ret
test-final:
name: test-final
runs-on: ubuntu-20.04
needs:
- run-test
- test-zh-image
- test-en-image
- test-zh-installer
- test-en-installer
- test-bt-plugin
- test-aapanel-plugin
steps:
- uses: geekyeggo/delete-artifact@v2
with:
name: platform-cache
- run: echo OK