Transcript: WebVTT Cue setting code format #5
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 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 | |
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-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/oryx:5 | |
docker run --rm -d -p 2022:2022 -p 2443:2443 -p 1935:1935 \ | |
-p 8000:8000/udp -p 10080:10080/udp --name oryx \ | |
-v /data:/data -e REACT_APP_LOCALE=en ossrs/oryx:5 | |
- name: Check and Test service | |
env: | |
SRS_OPENAI_KEY: ${{ secrets.SRS_OPENAI_KEY }} | |
run: | | |
# We will handle the error by ourselves. | |
set +e | |
# Record all logs. | |
docker logs -f oryx >docker.log 2>&1 & pid_docker=$! | |
echo "Wait for service ready." && | |
make -j -C test && | |
bash scripts/tools/secret.sh --output test/.env && | |
./test/oryx.test -test.timeout=1h -test.failfast -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 TestSystem_Empty && | |
echo "Make upload writable." && | |
sudo chmod 777 /data/upload && | |
echo "Test HTTP service." && | |
bash scripts/tools/secret.sh --output test/.env && | |
./test/oryx.test -test.timeout=1h -test.failfast -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/oryx.test -test.timeout=1h -test.failfast -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 3 ./test/oryx.test -test.timeout=1h -test.failfast -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 WithStream | |
ret=$?; echo "Test result: $ret" | |
echo "Stop service" | |
docker stop oryx | |
kill $pid_docker 2>/dev/null | |
echo "Log of docker.log" && cat docker.log | |
exit $ret | |
runs-on: ubuntu-20.04 | |
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 -p 8000:8000/udp -p 10080:10080/udp \ | |
-v $(pwd)/build/oryx:/www/server/panel/plugin/oryx \ | |
-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 \ | |
-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/oryx:$SRS_TAG | |
docker exec bt docker tag platform:latest ossrs/oryx:$SRS_MAJOR | |
docker exec bt docker tag platform:latest registry.cn-hangzhou.aliyuncs.com/ossrs/oryx:$SRS_TAG | |
docker exec bt docker tag platform:latest registry.cn-hangzhou.aliyuncs.com/ossrs/oryx:$SRS_MAJOR | |
echo "Tag platform image to BT ok." | |
docker exec bt docker images | |
- name: Install Oryx plugin | |
run: | | |
docker exec bt bash /www/server/panel/plugin/oryx/install.sh install | |
echo "Install Oryx plugin ok." | |
docker exec bt python3 /www/server/panel/plugin/oryx/bt_api_create_site.py | |
docker exec bt python3 /www/server/panel/plugin/oryx/bt_api_setup_site.py | |
echo "Create SRS site ok." | |
docker exec bt bash /www/server/panel/plugin/oryx/setup.sh \ | |
--r0 /tmp/oryx_install.r0 --nginx /www/server/nginx/logs/nginx.pid \ | |
--www /www/wwwroot --site srs.stack.local | |
echo "Setup Oryx plugin ok." | |
echo "Setup the dns lookup for domain" | |
PIP=$(docker exec bt ifconfig eth0 |grep 'inet ' |awk '{print $2}') && | |
docker exec bt bash -c "echo '$PIP srs.stack.local' >> /etc/hosts" && | |
docker exec bt cat /etc/hosts && echo OK && | |
docker exec bt docker exec oryx bash -c "echo '$PIP srs.stack.local' >> /etc/hosts" && | |
docker exec bt docker exec oryx cat /etc/hosts | |
set +e | |
docker exec bt systemctl status oryx | |
docker exec bt journalctl -u oryx | |
docker exec bt docker logs oryx | |
- name: Check and Test service | |
env: | |
SRS_OPENAI_KEY: ${{ secrets.SRS_OPENAI_KEY }} | |
run: | | |
# We will handle the error by ourselves. | |
set +e | |
# Record all logs. | |
docker exec bt journalctl -u oryx -f >journalctl.log 2>&1 & | |
echo "Wait for service ready." && | |
make -j -C test && | |
bash scripts/tools/secret.sh --output test/.env && | |
./test/oryx.test -test.timeout=1h -test.failfast -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 TestSystem_Empty && | |
echo "Make upload writable." && | |
sudo chmod 777 /data/upload && | |
echo "Test HTTP service." && | |
bash scripts/tools/secret.sh --output test/.env && | |
./test/oryx.test -test.timeout=1h -test.failfast -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/oryx.test -test.timeout=1h -test.failfast -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 3 ./test/oryx.test -test.timeout=1h -test.failfast -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 WithStream | |
ret=$?; echo "Test result: $ret" | |
echo "Stop service" | |
docker exec bt systemctl stop oryx | |
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 -p 8000:8000/udp -p 10080:10080/udp \ | |
-v $(pwd)/build/oryx:/www/server/panel/plugin/oryx \ | |
-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 \ | |
-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/oryx:$SRS_TAG | |
docker exec aapanel docker tag platform:latest ossrs/oryx:$SRS_MAJOR | |
docker exec aapanel docker tag platform:latest registry.cn-hangzhou.aliyuncs.com/ossrs/oryx:$SRS_TAG | |
docker exec aapanel docker tag platform:latest registry.cn-hangzhou.aliyuncs.com/ossrs/oryx:$SRS_MAJOR | |
echo "Tag platform image to aaPanel ok." | |
docker exec aapanel docker images | |
- name: Install Oryx plugin | |
run: | | |
docker exec aapanel bash /www/server/panel/plugin/oryx/install.sh install | |
echo "Install Oryx plugin ok." | |
docker exec aapanel python3 /www/server/panel/plugin/oryx/bt_api_create_site.py | |
docker exec aapanel python3 /www/server/panel/plugin/oryx/bt_api_setup_site.py | |
echo "Create SRS site ok." | |
docker exec aapanel bash /www/server/panel/plugin/oryx/setup.sh \ | |
--r0 /tmp/oryx_install.r0 --nginx /www/server/nginx/logs/nginx.pid \ | |
--www /www/wwwroot --site srs.stack.local | |
echo "Setup Oryx plugin ok." | |
echo "Setup the dns lookup for domain" | |
PIP=$(docker exec aapanel ifconfig eth0 |grep 'inet ' |awk '{print $2}') && | |
docker exec aapanel bash -c "echo '$PIP srs.stack.local' >> /etc/hosts" && | |
docker exec aapanel cat /etc/hosts && echo OK && | |
docker exec aapanel docker exec oryx bash -c "echo '$PIP srs.stack.local' >> /etc/hosts" && | |
docker exec aapanel docker exec oryx cat /etc/hosts | |
set +e | |
docker exec aapanel systemctl status oryx | |
docker exec aapanel journalctl -u oryx | |
docker exec aapanel docker logs oryx | |
- name: Check and Test service | |
env: | |
SRS_OPENAI_KEY: ${{ secrets.SRS_OPENAI_KEY }} | |
run: | | |
# We will handle the error by ourselves. | |
set +e | |
# Record all logs. | |
docker exec aapanel journalctl -u oryx -f >journalctl.log 2>&1 & | |
echo "Wait for service ready." && | |
make -j -C test && | |
bash scripts/tools/secret.sh --output test/.env && | |
./test/oryx.test -test.timeout=1h -test.failfast -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 TestSystem_Empty && | |
echo "Make upload writable." && | |
sudo chmod 777 /data/upload && | |
echo "Test HTTP service." && | |
bash scripts/tools/secret.sh --output test/.env && | |
./test/oryx.test -test.timeout=1h -test.failfast -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/oryx.test -test.timeout=1h -test.failfast -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 3 ./test/oryx.test -test.timeout=1h -test.failfast -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 WithStream | |
ret=$?; echo "Test result: $ret" | |
echo "Stop service" | |
docker exec aapanel systemctl stop oryx | |
docker stop aapanel | |
echo "Log of journalctl.log" && cat journalctl.log | |
exit $ret | |
check-pr-test: | |
steps: | |
- name: Wait for PR Test Workflow | |
uses: fountainhead/[email protected] | |
id: wait-for-test | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
checkName: test-pr-final | |
ref: ${{ github.sha }} | |
timeoutSeconds: 3600 | |
- name: Check Test Workflow result | |
if: steps.wait-for-test.outputs.conclusion != 'success' | |
run: | | |
echo "Test Workflow failed, aborting release" && exit 1 | |
runs-on: ubuntu-20.04 | |
test-final: | |
name: test-final | |
runs-on: ubuntu-20.04 | |
needs: | |
- check-pr-test | |
- test-en-image | |
- test-bt-plugin | |
- test-aapanel-plugin | |
steps: | |
- run: echo OK |