diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b2f22b727..330a63f9f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -7,8 +7,8 @@ on: - v5* jobs: - k8s: - name: release-k8s + test: + name: test runs-on: ubuntu-20.04 steps: @@ -44,138 +44,362 @@ jobs: run: docker run --rm srs:test bash -c 'make utest && ./objs/srs_utest' # For regression-test - name: Run SRS regression-test - run: docker run --rm srs:test bash -c 'make && ./objs/srs -c conf/regression-test.conf && cd 3rdparty/srs-bench && make && ./objs/srs_test -test.v' + run: | + docker run --rm srs:test bash -c 'make && ./objs/srs -c conf/regression-test.conf && \ + cd 3rdparty/srs-bench && make && ./objs/srs_test -test.v' + + docker-srs: + name: docker-srs + runs-on: ubuntu-20.04 + needs: + - test + steps: + ################################################################################################################## ################################################################################################################## ################################################################################################################## + # Git checkout + - name: Checkout repository + uses: actions/checkout@v2 + + # See https://github.com/crazy-max/ghaction-docker-buildx#moved-to-docker-organization + # https://github.com/docker/setup-qemu-action + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + # https://github.com/docker/setup-buildx-action + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + + # The github.ref is, for example, refs/tags/v4.0.145 or refs/tags/v4.0-r8 + # Generate variables like: + # SRS_TAG=v4.0-r8 + # SRS_TAG=v4.0.145 + # SRS_VERSION=4.0.145 + # SRS_VERSION=4.0-r8 + # SRS_MAJOR=4 + # @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_VERSION=$(echo ${SRS_TAG}| sed 's/^v//g') + echo "SRS_VERSION=$SRS_VERSION" >> $GITHUB_ENV + SRS_MAJOR=$(echo $SRS_TAG| cut -c 2) + echo "SRS_MAJOR=$SRS_MAJOR" >> $GITHUB_ENV + ################################################################################################################## - # Build SRS docker images - - name: Build SRS docker image + ################################################################################################################## + ################################################################################################################## + # Create main images for Docker + - name: Login to docker hub + uses: docker/login-action@v1 + with: + username: "${{ secrets.DOCKER_USERNAME }}" + password: "${{ secrets.DOCKER_PASSWORD }}" + - name: Build and push images to Docker hub env: PACKAGER: ${{ secrets.SRS_PACKAGER_DOCKER }} - PACKAGER_DROPLET: ${{ secrets.SRS_PACKAGER_DROPLET }} - PACKAGER_LIGHTHOUSE: ${{ secrets.SRS_PACKAGER_LIGHTHOUSE }} run: | echo "Release ossrs/srs:$SRS_TAG" - docker build --tag ossrs/srs:$SRS_TAG --build-arg SRS_AUTO_PACKAGER=$PACKAGER -f trunk/Dockerfile . - echo "Release ossrs/droplet:$SRS_TAG" - docker build --tag ossrs/droplet:$SRS_TAG --build-arg SRS_AUTO_PACKAGER=$PACKAGER_DROPLET -f trunk/Dockerfile . - echo "Release ossrs/lighthouse:$SRS_TAG" - docker build --tag ossrs/lighthouse:$SRS_TAG --build-arg SRS_AUTO_PACKAGER=$PACKAGER_LIGHTHOUSE -f trunk/Dockerfile . + docker buildx build --platform linux/arm/v7,linux/arm64/v8,linux/amd64 \ + --output "type=image,push=true" \ + -t ossrs/srs:$SRS_TAG --build-arg SRS_AUTO_PACKAGER=$PACKAGER -f trunk/Dockerfile . + + # Docker alias images + - name: Docker alias images for ossrs/srs + uses: akhilerm/tag-push-action@v2.0.0 + with: + src: ossrs/srs:${{ env.SRS_TAG }} + dst: | + ossrs/srs:${{ env.SRS_VERSION }} + ossrs/srs:${{ env.SRS_MAJOR }} + ossrs/srs:v${{ env.SRS_MAJOR }} + ossrs/srs:latest + + # Aliyun ACR + - name: Login aliyun 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 registry for ossrs/srs + uses: akhilerm/tag-push-action@v2.0.0 + with: + src: ossrs/srs:${{ env.SRS_TAG }} + dst: | + registry.cn-hangzhou.aliyuncs.com/ossrs/srs:${{ env.SRS_TAG }} + registry.cn-hangzhou.aliyuncs.com/ossrs/srs:${{ env.SRS_VERSION }} + registry.cn-hangzhou.aliyuncs.com/ossrs/srs:${{ env.SRS_MAJOR }} + registry.cn-hangzhou.aliyuncs.com/ossrs/srs:v${{ env.SRS_MAJOR }} + registry.cn-hangzhou.aliyuncs.com/ossrs/srs:latest + + docker-droplet: + name: docker-droplet + runs-on: ubuntu-20.04 + needs: + - test + + steps: + ################################################################################################################## + ################################################################################################################## + ################################################################################################################## + # Git checkout + - name: Checkout repository + uses: actions/checkout@v2 + + # See https://github.com/crazy-max/ghaction-docker-buildx#moved-to-docker-organization + # https://github.com/docker/setup-qemu-action + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + # https://github.com/docker/setup-buildx-action + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + + # The github.ref is, for example, refs/tags/v4.0.145 or refs/tags/v4.0-r8 + # Generate variables like: + # SRS_TAG=v4.0-r8 + # SRS_TAG=v4.0.145 + # SRS_VERSION=4.0.145 + # SRS_VERSION=4.0-r8 + # SRS_MAJOR=4 + # @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_VERSION=$(echo ${SRS_TAG}| sed 's/^v//g') + echo "SRS_VERSION=$SRS_VERSION" >> $GITHUB_ENV + SRS_MAJOR=$(echo $SRS_TAG| cut -c 2) + echo "SRS_MAJOR=$SRS_MAJOR" >> $GITHUB_ENV - # Docker hub - # TODO: FIXME: If stable, please set the latest from 4.0 to 5.0 - - name: Login docker hub + ################################################################################################################## + ################################################################################################################## + ################################################################################################################## + # Create main images for Docker + - name: Login to docker hub uses: docker/login-action@v1 with: username: "${{ secrets.DOCKER_USERNAME }}" password: "${{ secrets.DOCKER_PASSWORD }}" - - name: Push to docker hub + - name: Build and push images to Docker hub + env: + PACKAGER_DROPLET: ${{ secrets.SRS_PACKAGER_DROPLET }} run: | - docker tag ossrs/srs:$SRS_TAG ossrs/srs:$SRS_MAJOR - #docker tag ossrs/srs:$SRS_TAG ossrs/srs:latest - docker push --all-tags ossrs/srs - # - docker tag ossrs/droplet:$SRS_TAG ossrs/droplet:$SRS_MAJOR - #docker tag ossrs/droplet:$SRS_TAG ossrs/droplet:latest - docker push --all-tags ossrs/droplet - # - docker tag ossrs/lighthouse:$SRS_TAG ossrs/lighthouse:$SRS_MAJOR - #docker tag ossrs/lighthouse:$SRS_TAG ossrs/lighthouse:latest - docker push --all-tags ossrs/lighthouse - - # Aliyun ACR hub - # TODO: FIXME: If stable, please set the latest from 4.0 to 5.0 - - name: Login Aliyun docker hub + echo "Release ossrs/droplet:$SRS_TAG" + docker buildx build --platform linux/arm/v7,linux/arm64/v8,linux/amd64 \ + --output "type=image,push=true" \ + -t ossrs/droplet:$SRS_TAG --build-arg SRS_AUTO_PACKAGER=$PACKAGER_DROPLET -f trunk/Dockerfile . + + # Docker alias images + - name: Docker alias images for ossrs/droplet + uses: akhilerm/tag-push-action@v2.0.0 + with: + src: ossrs/droplet:${{ env.SRS_TAG }} + dst: | + ossrs/droplet:${{ env.SRS_VERSION }} + ossrs/droplet:${{ env.SRS_MAJOR }} + ossrs/droplet:v${{ env.SRS_MAJOR }} + ossrs/droplet:latest + + # Aliyun ACR + - name: Login aliyun 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 docker hub + - name: Push to Aliyun registry for ossrs/droplet + uses: akhilerm/tag-push-action@v2.0.0 + with: + src: ossrs/droplet:${{ env.SRS_TAG }} + dst: | + registry.cn-hangzhou.aliyuncs.com/ossrs/droplet:${{ env.SRS_TAG }} + registry.cn-hangzhou.aliyuncs.com/ossrs/droplet:${{ env.SRS_VERSION }} + registry.cn-hangzhou.aliyuncs.com/ossrs/droplet:${{ env.SRS_MAJOR }} + registry.cn-hangzhou.aliyuncs.com/ossrs/droplet:v${{ env.SRS_MAJOR }} + registry.cn-hangzhou.aliyuncs.com/ossrs/droplet:latest + + docker-lighthouse: + name: docker-lighthouse + runs-on: ubuntu-20.04 + needs: + - test + + steps: + ################################################################################################################## + ################################################################################################################## + ################################################################################################################## + # Git checkout + - name: Checkout repository + uses: actions/checkout@v2 + + # See https://github.com/crazy-max/ghaction-docker-buildx#moved-to-docker-organization + # https://github.com/docker/setup-qemu-action + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + # https://github.com/docker/setup-buildx-action + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + + # The github.ref is, for example, refs/tags/v4.0.145 or refs/tags/v4.0-r8 + # Generate variables like: + # SRS_TAG=v4.0-r8 + # SRS_TAG=v4.0.145 + # SRS_VERSION=4.0.145 + # SRS_VERSION=4.0-r8 + # SRS_MAJOR=4 + # @see https://docs.github.com/en/actions/reference/workflow-commands-for-github-actions#setting-an-environment-variable + - name: Generate varaiables run: | - docker tag ossrs/srs:$SRS_TAG registry.cn-hangzhou.aliyuncs.com/ossrs/srs:$SRS_TAG - docker tag ossrs/srs:$SRS_TAG registry.cn-hangzhou.aliyuncs.com/ossrs/srs:$SRS_VERSION - docker tag ossrs/srs:$SRS_TAG registry.cn-hangzhou.aliyuncs.com/ossrs/srs:v$SRS_MAJOR - docker tag ossrs/srs:$SRS_TAG registry.cn-hangzhou.aliyuncs.com/ossrs/srs:$SRS_MAJOR - #docker tag ossrs/srs:$SRS_TAG registry.cn-hangzhou.aliyuncs.com/ossrs/srs:latest - docker push --all-tags registry.cn-hangzhou.aliyuncs.com/ossrs/srs - # - docker tag ossrs/droplet:$SRS_TAG registry.cn-hangzhou.aliyuncs.com/ossrs/droplet:$SRS_TAG - docker tag ossrs/droplet:$SRS_TAG registry.cn-hangzhou.aliyuncs.com/ossrs/droplet:$SRS_VERSION - docker tag ossrs/droplet:$SRS_TAG registry.cn-hangzhou.aliyuncs.com/ossrs/droplet:v$SRS_MAJOR - docker tag ossrs/droplet:$SRS_TAG registry.cn-hangzhou.aliyuncs.com/ossrs/droplet:$SRS_MAJOR - #docker tag ossrs/droplet:$SRS_TAG registry.cn-hangzhou.aliyuncs.com/ossrs/droplet:latest - docker push --all-tags registry.cn-hangzhou.aliyuncs.com/ossrs/droplet - # - docker tag ossrs/lighthouse:$SRS_TAG registry.cn-hangzhou.aliyuncs.com/ossrs/lighthouse:$SRS_TAG - docker tag ossrs/lighthouse:$SRS_TAG registry.cn-hangzhou.aliyuncs.com/ossrs/lighthouse:$SRS_VERSION - docker tag ossrs/lighthouse:$SRS_TAG registry.cn-hangzhou.aliyuncs.com/ossrs/lighthouse:v$SRS_MAJOR - docker tag ossrs/lighthouse:$SRS_TAG registry.cn-hangzhou.aliyuncs.com/ossrs/lighthouse:$SRS_MAJOR - #docker tag ossrs/lighthouse:$SRS_TAG registry.cn-hangzhou.aliyuncs.com/ossrs/lighthouse:latest - docker push --all-tags registry.cn-hangzhou.aliyuncs.com/ossrs/lighthouse - - # Tencent TCR Singapore hub - # TODO: FIXME: If stable, please set the latest from 4.0 to 5.0 - - name: Login Tencent Singapore docker hub + SRS_TAG=$(echo ${{ github.ref }}| awk -F '/' '{print $3}') + echo "SRS_TAG=$SRS_TAG" >> $GITHUB_ENV + SRS_VERSION=$(echo ${SRS_TAG}| sed 's/^v//g') + echo "SRS_VERSION=$SRS_VERSION" >> $GITHUB_ENV + SRS_MAJOR=$(echo $SRS_TAG| cut -c 2) + echo "SRS_MAJOR=$SRS_MAJOR" >> $GITHUB_ENV + + ################################################################################################################## + ################################################################################################################## + ################################################################################################################## + # Create main images for Docker + - name: Login to docker hub uses: docker/login-action@v1 with: - registry: sgccr.ccs.tencentyun.com - username: "${{ secrets.TCR_USERNAME }}" - password: "${{ secrets.TCR_PASSWORD }}" - - name: Push to Tencent Singapore docker hub + username: "${{ secrets.DOCKER_USERNAME }}" + password: "${{ secrets.DOCKER_PASSWORD }}" + - name: Build and push images to Docker hub + env: + PACKAGER_LIGHTHOUSE: ${{ secrets.SRS_PACKAGER_LIGHTHOUSE }} run: | - docker tag ossrs/srs:$SRS_TAG sgccr.ccs.tencentyun.com/ossrs/srs:$SRS_TAG - docker tag ossrs/srs:$SRS_TAG sgccr.ccs.tencentyun.com/ossrs/srs:$SRS_VERSION - docker tag ossrs/srs:$SRS_TAG sgccr.ccs.tencentyun.com/ossrs/srs:v$SRS_MAJOR - docker tag ossrs/srs:$SRS_TAG sgccr.ccs.tencentyun.com/ossrs/srs:$SRS_MAJOR - #docker tag ossrs/srs:$SRS_TAG sgccr.ccs.tencentyun.com/ossrs/srs:latest - docker push --all-tags sgccr.ccs.tencentyun.com/ossrs/srs - # - docker tag ossrs/droplet:$SRS_TAG sgccr.ccs.tencentyun.com/ossrs/droplet:$SRS_TAG - docker tag ossrs/droplet:$SRS_TAG sgccr.ccs.tencentyun.com/ossrs/droplet:$SRS_VERSION - docker tag ossrs/droplet:$SRS_TAG sgccr.ccs.tencentyun.com/ossrs/droplet:v$SRS_MAJOR - docker tag ossrs/droplet:$SRS_TAG sgccr.ccs.tencentyun.com/ossrs/droplet:$SRS_MAJOR - #docker tag ossrs/droplet:$SRS_TAG sgccr.ccs.tencentyun.com/ossrs/droplet:latest - docker push --all-tags sgccr.ccs.tencentyun.com/ossrs/droplet - # - docker tag ossrs/lighthouse:$SRS_TAG sgccr.ccs.tencentyun.com/ossrs/lighthouse:$SRS_TAG - docker tag ossrs/lighthouse:$SRS_TAG sgccr.ccs.tencentyun.com/ossrs/lighthouse:$SRS_VERSION - docker tag ossrs/lighthouse:$SRS_TAG sgccr.ccs.tencentyun.com/ossrs/lighthouse:v$SRS_MAJOR - docker tag ossrs/lighthouse:$SRS_TAG sgccr.ccs.tencentyun.com/ossrs/lighthouse:$SRS_MAJOR - #docker tag ossrs/lighthouse:$SRS_TAG sgccr.ccs.tencentyun.com/ossrs/lighthouse:latest - docker push --all-tags sgccr.ccs.tencentyun.com/ossrs/lighthouse - - # Tencent TCR Beijing hub - # TODO: FIXME: If stable, please set the latest from 4.0 to 5.0 - - name: Login Tencent Beijing docker hub + echo "Release ossrs/lighthouse:$SRS_TAG" + docker buildx build --platform linux/arm/v7,linux/arm64/v8,linux/amd64 \ + --output "type=image,push=true" \ + -t ossrs/lighthouse:$SRS_TAG --build-arg SRS_AUTO_PACKAGER=$PACKAGER_LIGHTHOUSE -f trunk/Dockerfile . + + # Docker alias images + - name: Docker alias images for ossrs/lighthouse + uses: akhilerm/tag-push-action@v2.0.0 + with: + src: ossrs/lighthouse:${{ env.SRS_TAG }} + dst: | + ossrs/lighthouse:${{ env.SRS_VERSION }} + ossrs/lighthouse:${{ env.SRS_MAJOR }} + ossrs/lighthouse:v${{ env.SRS_MAJOR }} + ossrs/lighthouse:latest + + # Aliyun ACR + - name: Login aliyun hub uses: docker/login-action@v1 with: - registry: ccr.ccs.tencentyun.com - username: "${{ secrets.TCR_USERNAME }}" - password: "${{ secrets.TCR_PASSWORD }}" - - name: Push to Tencent Beijing docker hub + registry: registry.cn-hangzhou.aliyuncs.com + username: "${{ secrets.ACR_USERNAME }}" + password: "${{ secrets.ACR_PASSWORD }}" + - name: Push to Aliyun registry for ossrs/lighthouse + uses: akhilerm/tag-push-action@v2.0.0 + with: + src: ossrs/lighthouse:${{ env.SRS_TAG }} + dst: | + registry.cn-hangzhou.aliyuncs.com/ossrs/lighthouse:${{ env.SRS_TAG }} + registry.cn-hangzhou.aliyuncs.com/ossrs/lighthouse:${{ env.SRS_VERSION }} + registry.cn-hangzhou.aliyuncs.com/ossrs/lighthouse:${{ env.SRS_MAJOR }} + registry.cn-hangzhou.aliyuncs.com/ossrs/lighthouse:v${{ env.SRS_MAJOR }} + registry.cn-hangzhou.aliyuncs.com/ossrs/lighthouse:latest + + update: + name: update + runs-on: ubuntu-20.04 + needs: + - test + - docker-srs + - docker-lighthouse + - docker-droplet + + steps: + ################################################################################################################## + ################################################################################################################## + ################################################################################################################## + # Git checkout + - name: Checkout repository + uses: actions/checkout@v2 + + # The github.ref is, for example, refs/tags/v4.0.145 or refs/tags/v4.0-r8 + # Generate variables like: + # SRS_TAG=v4.0-r8 + # SRS_TAG=v4.0.145 + # SRS_VERSION=4.0.145 + # SRS_VERSION=4.0-r8 + # SRS_MAJOR=4 + # @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_VERSION=$(echo ${SRS_TAG}| sed 's/^v//g') + echo "SRS_VERSION=$SRS_VERSION" >> $GITHUB_ENV + SRS_MAJOR=$(echo $SRS_TAG| cut -c 2) + echo "SRS_MAJOR=$SRS_MAJOR" >> $GITHUB_ENV + + ################################################################################################################## + ################################################################################################################## + ################################################################################################################## + # Generate variables like: + # SRS_DROPLET_EIP=1.2.3.4 + - name: Build variables for lh.ossrs.net + run: | + SRS_DROPLET_EIP=$(dig +short lh.ossrs.net) + echo "SRS_DROPLET_EIP=$SRS_DROPLET_EIP" >> $GITHUB_ENV + + - name: Release to lh.ossrs.net + uses: appleboy/ssh-action@master + with: + host: ${{ env.SRS_DROPLET_EIP }} + username: root + key: ${{ secrets.DIGITALOCEAN_SSHKEY }} + port: 22 + envs: SRS_MAJOR + timeout: 60s + command_timeout: 30m + script: | + docker pull registry.cn-hangzhou.aliyuncs.com/ossrs/srs:$SRS_MAJOR + docker rm -f srs-server + # + # Cleanup old docker images. + for image in $(docker images |grep '' |awk '{print $3}'); do + docker rmi -f $image + echo "Remove image $image, r0=$?" + done + + release: + name: release + runs-on: ubuntu-20.04 + needs: + - update + + steps: + ################################################################################################################## + ################################################################################################################## + ################################################################################################################## + # Git checkout + - name: Checkout repository + uses: actions/checkout@v2 + + # The github.ref is, for example, refs/tags/v4.0.145 or refs/tags/v4.0-r8 + # Generate variables like: + # SRS_TAG=v4.0-r8 + # SRS_TAG=v4.0.145 + # SRS_VERSION=4.0.145 + # SRS_VERSION=4.0-r8 + # SRS_MAJOR=4 + # @see https://docs.github.com/en/actions/reference/workflow-commands-for-github-actions#setting-an-environment-variable + - name: Generate varaiables run: | - docker tag ossrs/srs:$SRS_TAG ccr.ccs.tencentyun.com/ossrs/srs:$SRS_TAG - docker tag ossrs/srs:$SRS_TAG ccr.ccs.tencentyun.com/ossrs/srs:$SRS_VERSION - docker tag ossrs/srs:$SRS_TAG ccr.ccs.tencentyun.com/ossrs/srs:v$SRS_MAJOR - docker tag ossrs/srs:$SRS_TAG ccr.ccs.tencentyun.com/ossrs/srs:$SRS_MAJOR - #docker tag ossrs/srs:$SRS_TAG ccr.ccs.tencentyun.com/ossrs/srs:latest - docker push --all-tags ccr.ccs.tencentyun.com/ossrs/srs - # - docker tag ossrs/droplet:$SRS_TAG ccr.ccs.tencentyun.com/ossrs/droplet:$SRS_TAG - docker tag ossrs/droplet:$SRS_TAG ccr.ccs.tencentyun.com/ossrs/droplet:$SRS_VERSION - docker tag ossrs/droplet:$SRS_TAG ccr.ccs.tencentyun.com/ossrs/droplet:v$SRS_MAJOR - docker tag ossrs/droplet:$SRS_TAG ccr.ccs.tencentyun.com/ossrs/droplet:$SRS_MAJOR - #docker tag ossrs/droplet:$SRS_TAG ccr.ccs.tencentyun.com/ossrs/droplet:latest - docker push --all-tags ccr.ccs.tencentyun.com/ossrs/droplet - # - docker tag ossrs/lighthouse:$SRS_TAG ccr.ccs.tencentyun.com/ossrs/lighthouse:$SRS_TAG - docker tag ossrs/lighthouse:$SRS_TAG ccr.ccs.tencentyun.com/ossrs/lighthouse:$SRS_VERSION - docker tag ossrs/lighthouse:$SRS_TAG ccr.ccs.tencentyun.com/ossrs/lighthouse:v$SRS_MAJOR - docker tag ossrs/lighthouse:$SRS_TAG ccr.ccs.tencentyun.com/ossrs/lighthouse:$SRS_MAJOR - #docker tag ossrs/lighthouse:$SRS_TAG ccr.ccs.tencentyun.com/ossrs/lighthouse:latest - docker push --all-tags ccr.ccs.tencentyun.com/ossrs/lighthouse + SRS_TAG=$(echo ${{ github.ref }}| awk -F '/' '{print $3}') + echo "SRS_TAG=$SRS_TAG" >> $GITHUB_ENV + SRS_VERSION=$(echo ${SRS_TAG}| sed 's/^v//g') + echo "SRS_VERSION=$SRS_VERSION" >> $GITHUB_ENV + SRS_MAJOR=$(echo $SRS_TAG| cut -c 2) + echo "SRS_MAJOR=$SRS_MAJOR" >> $GITHUB_ENV ################################################################################################################## ################################################################################################################## @@ -224,10 +448,12 @@ jobs: * Source: ${{ env.SRS_SOURCE_MD5 }} [${{ env.SRS_SOURCE_TAR }}](https://github.com/ossrs/srs/releases/download/${{ env.SRS_TAG }}/${{ env.SRS_SOURCE_TAR }}) * Binary: ${{ env.SRS_PACKAGE_MD5 }} [${{ env.SRS_PACKAGE_ZIP }}](https://github.com/ossrs/srs/releases/download/${{ env.SRS_TAG }}/${{ env.SRS_PACKAGE_ZIP }}) ## Docker - * China: docker pull registry.cn-hangzhou.aliyuncs.com/ossrs/srs:${{ env.SRS_MAJOR }} - * China: docker pull registry.cn-hangzhou.aliyuncs.com/ossrs/srs:${{ env.SRS_TAG }} - * Global: docker pull ossrs/srs:${{ env.SRS_MAJOR }} - * Global: docker pull ossrs/srs:${{ env.SRS_TAG }} + * China: [docker pull registry.cn-hangzhou.aliyuncs.com/ossrs/srs:latest](https://github.com/ossrs/srs/wiki/v4_CN_Home#docker) + * China: [docker pull registry.cn-hangzhou.aliyuncs.com/ossrs/srs:${{ env.SRS_MAJOR }}](https://github.com/ossrs/srs/wiki/v4_CN_Home#docker) + * China: [docker pull registry.cn-hangzhou.aliyuncs.com/ossrs/srs:${{ env.SRS_TAG }}](https://github.com/ossrs/srs/wiki/v4_CN_Home#docker) + * Global: [docker pull ossrs/srs:latest](https://github.com/ossrs/srs/wiki/v4_EN_Home#docker) + * Global: [docker pull ossrs/srs:${{ env.SRS_MAJOR }}](https://github.com/ossrs/srs/wiki/v4_EN_Home#docker) + * Global: [docker pull ossrs/srs:${{ env.SRS_TAG }}](https://github.com/ossrs/srs/wiki/v4_EN_Home#docker) ## Doc * [FAQ](https://github.com/ossrs/srs/issues/2716), [Features](https://github.com/ossrs/srs/blob/${{ github.sha }}/trunk/doc/Features.md#features) or [ChangeLogs](https://github.com/ossrs/srs/blob/${{ github.sha }}/trunk/doc/CHANGELOG.md#changelog) draft: false @@ -253,19 +479,12 @@ jobs: release_id: ${{ steps.create_release.outputs.id }} assets_path: ${{ env.SRS_PACKAGE_ZIP }} - ################################################################################################################## - ################################################################################################################## - ################################################################################################################## - # K8S release to official website - - name: Setup KUBCONFIG for Aliyun ACK - run: |- - KUBECONFIG=$RUNNER_TEMP/kubeconfig_$(date +%s) - echo "${{ secrets.KUBCONFIG }}" > $KUBECONFIG - echo "KUBECONFIG=$KUBECONFIG" >> $GITHUB_ENV - # K8S for SRS 5.0 - - name: Release SRS 5.0 to Aliyun ACK - if: ${{ startsWith(github.ref, 'refs/tags/v5') }} - run: |- - kubectl set image deploy/srs5-deploy srs=registry.cn-hangzhou.aliyuncs.com/ossrs/srs:$SRS_TAG - kubectl describe deploy/srs5-deploy + done: + name: done + runs-on: ubuntu-20.04 + needs: + - release + + steps: + - run: echo 'All done' diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1e1fa2525..0d684afe9 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -129,12 +129,35 @@ jobs: docker run --rm --env SRS_BRANCH=$SRS_BRANCH --env SRS_PR=$SRS_PR --env SRS_SHA=$SRS_SHA --env SRS_PROJECT=$SRS_PROJECT \ srs:cov bash -c 'make utest && ./objs/srs_utest && bash auto/codecov.sh' + multile-archs: + name: actions-test-multile-archs + runs-on: ubuntu-20.04 + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + # See https://github.com/crazy-max/ghaction-docker-buildx#moved-to-docker-organization + # https://github.com/docker/setup-qemu-action + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + # https://github.com/docker/setup-buildx-action + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + + - name: Build multiple archs image + run: | + docker buildx build --platform linux/arm/v7,linux/arm64/v8,linux/amd64 \ + --output "type=image,push=false" \ + -f trunk/Dockerfile . + done: name: actions-test-done needs: - build - utest - coverage + - multile-archs runs-on: ubuntu-20.04 steps: diff --git a/README.md b/README.md index 4c5f43025..1c06bb658 100755 --- a/README.md +++ b/README.md @@ -145,6 +145,7 @@ but some third-party libraries are distributed using their [own licenses](https: ## Releases +* 2022-06-11, Release [v4.0-r0](https://github.com/ossrs/srs/releases/tag/v4.0-r0), v4.0-r0, 4.0 release0, v4.0.252, 144680 lines. * 2022-03-19, Release [v4.0-b10](https://github.com/ossrs/srs/releases/tag/v4.0-b10), v4.0-b10, 4.0 beta10, v4.0.251, 144665 lines. * 2022-02-15, Release [v4.0-b9](https://github.com/ossrs/srs/releases/tag/v4.0-b9), v4.0-b9, 4.0 beta9, v4.0.245, 144474 lines. * 2022-02-11, Release [v4.0-b8](https://github.com/ossrs/srs/releases/tag/v4.0-b8), v4.0-b8, 4.0 beta8, v4.0.241, 144445 lines. diff --git a/trunk/Dockerfile b/trunk/Dockerfile index 922cf2eed..f7a711dc4 100644 --- a/trunk/Dockerfile +++ b/trunk/Dockerfile @@ -1,14 +1,22 @@ -FROM ossrs/srs:dev AS build - -# Install depends tools. -RUN yum install -y gcc make gcc-c++ patch unzip perl git +ARG ARCH +FROM ${ARCH}ossrs/srs:ubuntu20 AS build +ARG BUILDPLATFORM +ARG TARGETPLATFORM +ARG JOBS=2 ARG SRS_AUTO_PACKAGER +RUN echo "BUILDPLATFORM: $BUILDPLATFORM, TARGETPLATFORM: $TARGETPLATFORM, JOBS: $JOBS, PACKAGER: ${#SRS_AUTO_PACKAGER}" + +# https://serverfault.com/questions/949991/how-to-install-tzdata-on-a-ubuntu-docker-image +ENV DEBIAN_FRONTEND noninteractive + +# Install depends tools. +RUN apt-get update && apt-get install -y gcc make g++ patch unzip perl git # Build and install SRS. COPY . /srs WORKDIR /srs/trunk -RUN ./configure --srt=on --jobs=2 && make -j2 && make install +RUN ./configure --srt=on --jobs=${JOBS} && make -j${JOBS} && make install # All config files for SRS. RUN cp -R conf /usr/local/srs/conf && \ @@ -22,7 +30,11 @@ RUN cp -R conf /usr/local/srs/conf && \ ############################################################ # dist ############################################################ -FROM centos:7 AS dist +FROM ${ARCH}ubuntu:focal AS dist + +ARG BUILDPLATFORM +ARG TARGETPLATFORM +RUN echo "BUILDPLATFORM: $BUILDPLATFORM, TARGETPLATFORM: $TARGETPLATFORM" # Expose ports for streaming @see https://github.com/ossrs/srs#ports EXPOSE 1935 1985 8080 8000/udp 10080/udp diff --git a/trunk/doc/CHANGELOG.md b/trunk/doc/CHANGELOG.md index 7eb1f55b2..0cca941ae 100644 --- a/trunk/doc/CHANGELOG.md +++ b/trunk/doc/CHANGELOG.md @@ -38,6 +38,7 @@ The changelog for SRS. ## SRS 4.0 Changelog +* v4.0, 2022-06-11, For [#3058](https://github.com/ossrs/srs/pull/3058): Docker: Support x86_64, armv7 and aarch64 docker image (#3058). v4.0.252 * v4.0, 2022-03-19, For [#2893](https://github.com/ossrs/srs/pull/2893): SRT: Decouple publish with play url (#2893). v4.0.251 * v4.0, 2022-03-19, Merge [#2908](https://github.com/ossrs/srs/pull/2908): SRT: url supports multiple QueryStrings (#2908). v4.0.250 * v4.0, 2022-03-17, SRT: Support debug and run with CLion. v4.0.249 diff --git a/trunk/src/app/srs_app_server.cpp b/trunk/src/app/srs_app_server.cpp index bdf877ccb..18d24235d 100644 --- a/trunk/src/app/srs_app_server.cpp +++ b/trunk/src/app/srs_app_server.cpp @@ -294,6 +294,11 @@ srs_error_t SrsSignalManager::start() sigemptyset(&sa.sa_mask); sa.sa_flags = 0; sigaction(SRS_SIGNAL_GRACEFULLY_QUIT, &sa, NULL); + + sa.sa_handler = SrsSignalManager::sig_catcher; + sigemptyset(&sa.sa_mask); + sa.sa_flags = 0; + sigaction(SRS_SIGNAL_ASSERT_ABORT, &sa, NULL); sa.sa_handler = SrsSignalManager::sig_catcher; sigemptyset(&sa.sa_mask); @@ -981,6 +986,13 @@ srs_error_t SrsServer::cycle() void SrsServer::on_signal(int signo) { + // For signal to quit with coredump. + if (signo == SRS_SIGNAL_ASSERT_ABORT) { + srs_trace("abort with coredump, signo=%d", signo); + srs_assert(false); + return; + } + if (signo == SRS_SIGNAL_RELOAD) { srs_trace("reload config, signo=%d", signo); signal_reload = true; diff --git a/trunk/src/core/srs_core_version4.hpp b/trunk/src/core/srs_core_version4.hpp index 55eaec48f..bd95325e9 100644 --- a/trunk/src/core/srs_core_version4.hpp +++ b/trunk/src/core/srs_core_version4.hpp @@ -9,6 +9,6 @@ #define VERSION_MAJOR 4 #define VERSION_MINOR 0 -#define VERSION_REVISION 251 +#define VERSION_REVISION 252 #endif diff --git a/trunk/src/kernel/srs_kernel_consts.hpp b/trunk/src/kernel/srs_kernel_consts.hpp index 48f590c73..ddf0f0c1f 100644 --- a/trunk/src/kernel/srs_kernel_consts.hpp +++ b/trunk/src/kernel/srs_kernel_consts.hpp @@ -125,6 +125,8 @@ // The signal for srs to gracefully quit, do carefully dispose then exit. // @see https://github.com/ossrs/srs/issues/1579 #define SRS_SIGNAL_GRACEFULLY_QUIT SIGQUIT +// The signal for SRS to abort by assert(false). +#define SRS_SIGNAL_ASSERT_ABORT SIGABRT // The application level signals. // Persistence the config in memory to config file.