name: Linux

on: [push, pull_request]

jobs:
  build:

    runs-on: ubuntu-20.04

    steps:
    - uses: actions/checkout@v1

    - name: 下载submodule源码
      run: mv -f .gitmodules_github .gitmodules && git submodule sync && git submodule update --init

    - name: 下载 SRTP
      uses: actions/checkout@v2
      with:
        repository: cisco/libsrtp
        fetch-depth: 1
        ref: v2.3.0
        path: 3rdpart/libsrtp

    - name: 下载 openssl
      uses: actions/checkout@v2
      with:
        repository: openssl/openssl
        fetch-depth: 1
        ref: OpenSSL_1_1_1
        path: 3rdpart/openssl

    - name: 下载 usrsctp
      uses: actions/checkout@v2
      with:
        repository: sctplab/usrsctp
        fetch-depth: 1
        ref: 0.9.5.0
        path: 3rdpart/usrsctp

    - name: 启动 Docker 容器, 在Docker 容器中执行脚本
      run: |
        docker pull centos:7 
        docker run -v $(pwd):/root -w /root --rm centos:7 sh -c "
          #!/bin/bash
          set -x
      
          # Backup original CentOS-Base.repo file
          cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
      
          # Define new repository configuration
          cat <<EOF > /etc/yum.repos.d/CentOS-Base.repo
        [base]
        name=CentOS-7 - Base - mirrors.aliyun.com
        baseurl=http://mirrors.aliyun.com/centos/7/os/x86_64/
        gpgcheck=1
        gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
      
        [updates]
        name=CentOS-7 - Updates - mirrors.aliyun.com
        baseurl=http://mirrors.aliyun.com/centos/7/updates/x86_64/
        gpgcheck=1
        gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
        EOF
      
          # Clean yum cache and recreate it
          yum clean all
          yum makecache
      
          echo \"CentOS 7 软件源已成功切换\"
          yum install -y git wget gcc gcc-c++ make
        
          mkdir -p /root/install
          
          cd 3rdpart/openssl
          ./config no-shared --prefix=/root/install
          make -j $(nproc)
          make install
          cd ../../
        
          wget https://github.com/Kitware/CMake/releases/download/v3.29.5/cmake-3.29.5.tar.gz
          tar -xf cmake-3.29.5.tar.gz
          cd cmake-3.29.5
          OPENSSL_ROOT_DIR=/root/install ./configure
          make -j $(nproc)
          make install
          cd ..
        
          cd 3rdpart/usrsctp
          mkdir build
          cd build
          cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON ..
          make -j $(nproc)
          make install
          cd ../../../
        
          cd 3rdpart/libsrtp && ./configure --enable-openssl  --with-openssl-dir=/root/install && make -j $(nproc) && make install
          cd ../../
        
          mkdir -p linux_build && cd linux_build && cmake .. -DOPENSSL_ROOT_DIR=/root/install -DCMAKE_BUILD_TYPE=Release && make -j $(nproc)
        "

    - name: 设置环境变量
      run: |
        echo "BRANCH=$(echo ${GITHUB_REF#refs/heads/} | tr -s "/\?%*:|\"<>" "_")" >> $GITHUB_ENV  
        echo "BRANCH2=$(echo ${GITHUB_REF#refs/heads/} )" >> $GITHUB_ENV    
        echo "DATE=$(date +%Y-%m-%d)" >> $GITHUB_ENV

    - name: 打包二进制
      id: upload
      uses: actions/upload-artifact@v4
      with:
        name: ${{ github.workflow }}_${{ env.BRANCH }}_${{ env.DATE }}
        path: release/*
        if-no-files-found: error
        retention-days: 90

    - name: issue评论
      if: github.event_name != 'pull_request' && github.ref != 'refs/heads/feature/test'
      uses: actions/github-script@v7
      with:
        github-token: ${{ secrets.GITHUB_TOKEN }}
        script: |
          github.rest.issues.createComment({
            issue_number: ${{vars.VERSION_ISSUE_NO}},
            owner: context.repo.owner,
            repo: context.repo.repo,
            body: '- 下载地址: [${{ github.workflow }}_${{ env.BRANCH }}_${{ env.DATE }}](${{ steps.upload.outputs.artifact-url }})\n'
              + '- 分支: ${{ env.BRANCH2 }}\n' 
              + '- git hash: ${{ github.sha }} \n' 
              + '- 编译日期: ${{ env.DATE }}\n' 
              + '- 编译记录: [${{ github.run_id }}](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})\n'
              + '- 打包ci名: ${{ github.workflow }}\n'
              + '- 开启特性: openssl/webrtc/datachannel\n'
              + '- 说明: 本二进制在centos7(x64)上编译，请确保您的机器系统不低于此版本\n' 
          })
