Update #323
Workflow file for this run
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: "Release CN version" | |
on: | |
push: | |
tags: | |
- v1* | |
jobs: | |
envs: | |
name: envs | |
runs-on: ubuntu-20.04 | |
steps: | |
# Git checkout | |
- name: Checkout repository | |
uses: actions/checkout@v2 | |
# Generate variables like: | |
# SRS_DROPLET_EIP=1.2.3.4 | |
- name: Build droplet variables | |
run: | | |
SRS_DROPLET_EIP=$(dig +short new.ossrs.net) | |
echo "SRS_DROPLET_EIP=$SRS_DROPLET_EIP" >> $GITHUB_ENV | |
# The github.ref is, for example, refs/tags/v1.0.52 | |
# 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=$(echo ${{ github.ref }}| awk -F '/' '{print $3}') | |
echo "SRS_TAG=$SRS_TAG" >> $GITHUB_ENV | |
SRS_MAJOR=$(echo $SRS_TAG| cut -c 2) | |
echo "SRS_MAJOR=$SRS_MAJOR" >> $GITHUB_ENV | |
outputs: | |
SRS_DROPLET_EIP: ${{ env.SRS_DROPLET_EIP }} | |
SRS_TAG: ${{ env.SRS_TAG }} | |
SRS_MAJOR: ${{ env.SRS_MAJOR }} | |
files: | |
name: files | |
runs-on: ubuntu-20.04 | |
needs: | |
- envs | |
steps: | |
- name: Covert output to env | |
run: | | |
echo "SRS_DROPLET_EIP=${{ needs.envs.outputs.SRS_DROPLET_EIP }}" >> $GITHUB_ENV | |
# Git checkout | |
- name: Checkout repository | |
uses: actions/checkout@v2 | |
# Run scp first, because ufw limit the rate. | |
- name: Prepare the droplet | |
uses: appleboy/ssh-action@master | |
with: | |
host: ${{ env.SRS_DROPLET_EIP }} | |
username: root | |
key: ${{ secrets.DIGITALOCEAN_SSHKEY }} | |
port: 22 | |
script: | | |
mkdir -p /root/search | |
# Run scp first, because ufw limit the rate. | |
- name: Copy the files to droplet | |
uses: appleboy/scp-action@master | |
with: | |
host: ${{ env.SRS_DROPLET_EIP }} | |
username: root | |
key: ${{ secrets.DIGITALOCEAN_SSHKEY }} | |
source: "search/scraper.json" | |
target: "/root/search/" | |
strip_components: 1 | |
docker0: | |
name: docker0 | |
runs-on: ubuntu-20.04 | |
needs: | |
- envs | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v2 | |
- name: Build SRS docker image | |
run: | | |
echo "Build build/zh-cn" | |
docker run --rm -v $(pwd):/git -w /git -e SEARCH_APIKEY=${{ secrets.SEARCH_APIKEY }} \ | |
ossrs/docs:docs-cache bash auto/build-cn-stage0.sh | |
- uses: actions/upload-artifact@v2 | |
with: | |
name: zh-cn | |
path: build/zh-cn.tar.bz2 | |
docker1: | |
name: docker1 | |
runs-on: ubuntu-20.04 | |
needs: | |
- envs | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v2 | |
- name: Build SRS docker image | |
run: | | |
echo "Build build/en-us" | |
docker run --rm -v $(pwd):/git -w /git -e SEARCH_APIKEY=${{ secrets.SEARCH_APIKEY }} \ | |
ossrs/docs:docs-cache bash auto/build-cn-stage1.sh | |
- uses: actions/upload-artifact@v2 | |
with: | |
name: en-us | |
path: build/en-us.tar.bz2 | |
docker: | |
name: docker | |
runs-on: ubuntu-20.04 | |
needs: | |
- envs | |
- docker0 | |
- docker1 | |
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@v2 | |
- uses: actions/download-artifact@v2 | |
with: | |
name: zh-cn | |
path: build | |
- uses: actions/download-artifact@v2 | |
with: | |
name: en-us | |
path: build | |
- name: Login docker hub | |
uses: docker/login-action@v1 | |
with: | |
username: "${{ secrets.DOCKER_USERNAME }}" | |
password: "${{ secrets.DOCKER_PASSWORD }}" | |
- name: Push to docker hub | |
run: | | |
echo "Release ossrs/docs:cn-$SRS_TAG" | |
docker build --tag ossrs/docs:cn-$SRS_TAG -f Dockerfile.cn.dist . | |
docker tag ossrs/docs:cn-$SRS_TAG ossrs/docs:cn-$SRS_MAJOR | |
docker push --all-tags ossrs/docs | |
aliyun: | |
name: aliyun-hub | |
runs-on: ubuntu-20.04 | |
needs: | |
- envs | |
- docker0 | |
- docker1 | |
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@v2 | |
- uses: actions/download-artifact@v2 | |
with: | |
name: zh-cn | |
path: build | |
- uses: actions/download-artifact@v2 | |
with: | |
name: en-us | |
path: build | |
- name: Login docker hub | |
uses: docker/login-action@v1 | |
with: | |
registry: registry.cn-hangzhou.aliyuncs.com | |
username: "${{ secrets.ACR_USERNAME }}" | |
password: "${{ secrets.ACR_PASSWORD }}" | |
- name: Push to aliyun hub | |
run: | | |
echo "Release registry.cn-hangzhou.aliyuncs.com/ossrs/docs:cn-$SRS_TAG" | |
docker build --tag ossrs/docs:cn-$SRS_TAG -f Dockerfile.cn.dist . | |
docker tag ossrs/docs:cn-$SRS_TAG registry.cn-hangzhou.aliyuncs.com/ossrs/docs:cn-$SRS_TAG | |
docker tag ossrs/docs:cn-$SRS_TAG registry.cn-hangzhou.aliyuncs.com/ossrs/docs:cn-$SRS_MAJOR | |
docker push --all-tags registry.cn-hangzhou.aliyuncs.com/ossrs/docs | |
deploy: | |
name: deploy | |
runs-on: ubuntu-20.04 | |
needs: | |
- envs | |
- aliyun | |
- files | |
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 | |
echo "SRS_DROPLET_EIP=${{ needs.envs.outputs.SRS_DROPLET_EIP }}" >> $GITHUB_ENV | |
# Execute command in a ssh, because ufw limit the rate. | |
- name: Restart the containers | |
env: | |
SEARCH_APIKEY: ${{ secrets.SEARCH_APIKEY }} | |
uses: appleboy/ssh-action@master | |
with: | |
host: ${{ env.SRS_DROPLET_EIP }} | |
username: root | |
key: ${{ secrets.DIGITALOCEAN_SSHKEY }} | |
port: 22 | |
envs: SRS_TAG,SRS_MAJOR,SEARCH_APIKEY | |
timeout: 60s | |
command_timeout: 30m | |
script: | | |
# | |
ufw allow 20080 | |
ufw allow 8107 | |
ufw allow 8108 | |
# | |
export SRS_DROPLET_PIP=$(ifconfig eth0 |grep 'inet ' |awk '{print $2}') | |
echo "SRS_DROPLET_PIP=$SRS_DROPLET_PIP" | |
# | |
# Restart HTTPX | |
cat << END > /root/restart_docs-httpx.sh | |
for ((i=0; i < 5; i++)); do | |
if [[ \$(docker ps -f name=docs-httpx |wc -l) -eq 1 ]]; then echo "Killed"; break; fi; | |
docker rm -f docs-httpx; sleep 0.3; | |
done | |
docker run -d -it --restart always \ | |
--log-driver=json-file --log-opt=max-size=1g --log-opt=max-file=3 \ | |
--name docs-httpx -p 20080:80 registry.cn-hangzhou.aliyuncs.com/ossrs/httpx:1 \ | |
./bin/httpx-static -http 80 \ | |
-proxy http://$SRS_DROPLET_PIP:8107/lts/ \ | |
-proxy http://$SRS_DROPLET_PIP:8108/multi_search | |
END | |
bash /root/restart_docs-httpx.sh | |
# | |
# Restart SRS docs | |
cat << END > /root/restart_docs-docs.sh | |
for ((i=0; i < 5; i++)); do | |
if [[ \$(docker ps -f name=docs-docs |wc -l) -eq 1 ]]; then echo "Killed"; break; fi; | |
docker rm -f docs-docs; sleep 0.3; | |
done | |
docker pull registry.cn-hangzhou.aliyuncs.com/ossrs/docs:cn-$SRS_MAJOR | |
docker run -d -it --restart always --privileged --name docs-docs -p 8107:80 \ | |
--log-driver=json-file --log-opt=max-size=1g --log-opt=max-file=3 \ | |
registry.cn-hangzhou.aliyuncs.com/ossrs/docs:cn-$SRS_MAJOR | |
END | |
bash /root/restart_docs-docs.sh | |
# | |
# Use 8107/tcp as port. | |
sed -i 's/host.docker.internal:3000/host.docker.internal:8107/g' /root/search/scraper.json | |
# | |
# Restart typesense | |
cat << END > /root/restart_docs-typesense.sh | |
for ((i=0; i < 5; i++)); do | |
if [[ \$(docker ps -f name=docs-typesense |wc -l) -eq 1 ]]; then echo "Killed"; break; fi; | |
docker rm -f docs-typesense; sleep 0.3; | |
done | |
docker run -d -it --restart always --privileged --name docs-typesense -v /root/search/data:/data -p $SRS_DROPLET_PIP:8108:8108 \ | |
--log-driver=json-file --log-opt=max-size=1g --log-opt=max-file=3 \ | |
registry.cn-hangzhou.aliyuncs.com/ossrs/typesense:0.22.1 --enable-cors --data-dir /data --api-key=$SEARCH_APIKEY | |
END | |
bash /root/restart_docs-typesense.sh | |
# | |
# Restart search scraper | |
echo "Something wrong for search scraper, ignore it." | |
# | |
# Cleanup old docker images. | |
for image in $(docker images |grep '<none>' |awk '{print $3}'); do | |
docker rmi -f $image | |
echo "Remove image $image, r0=$?" | |
done | |
- uses: geekyeggo/delete-artifact@v1 | |
with: | |
name: | | |
en-us | |
zh-cn | |