From 6e081025593e2891b8ceeb743b140ef2733e3438 Mon Sep 17 00:00:00 2001 From: Infactum Date: Sat, 25 Jul 2020 23:57:15 +0300 Subject: [PATCH] migrate to github actions --- .github/workflows/main.yml | 84 +++++++++++++++++++++++++++++++++ README.md | 6 +-- appveyor.yml | 75 ----------------------------- buildenv/Dockerfile.centos6 | 94 ------------------------------------- buildenv/Dockerfile.centos7 | 17 ++++++- buildenv/glibc_gcc.patch | 17 ------- buildenv/prepare.sh | 2 +- 7 files changed, 103 insertions(+), 192 deletions(-) create mode 100644 .github/workflows/main.yml delete mode 100644 appveyor.yml delete mode 100644 buildenv/Dockerfile.centos6 delete mode 100644 buildenv/glibc_gcc.patch diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..45e62b2 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,84 @@ +name: CI + +on: [push, pull_request] + +jobs: + build: + name: Native Build + runs-on: ubuntu-latest + strategy: + matrix: + tag: [bionic, centos7] + container: infactum/tg2sip-builder:${{ matrix.tag }} + + steps: + - uses: actions/checkout@v2 + + - name: Build + run: | + [ -d "/opt/rh" ] && source /opt/rh/devtoolset-7/enable + mkdir build && cd build + export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig + cmake -DCMAKE_BUILD_TYPE=Release .. + cmake --build . -j $(grep -c ^processor /proc/cpuinfo); + + - uses: actions/upload-artifact@v2 + with: + name: tg2sip_${{ matrix.tag }} + path: | + build/tg2sip + build/gen_db + build/settings.ini + + # AppImage generation cannot be fully done inside container + # because of FUSE requirements + - name: Prepare AppImage + if: matrix.tag == 'centos7' + run: | + linuxdeploy --appdir tg2sip -e build/tg2sip + linuxdeploy --appdir gen_db -e build/gen_db + + - uses: actions/upload-artifact@v2 + if: matrix.tag == 'centos7' + with: + name: tmp + path: | + tg2sip/ + gen_db/ + + appimage: + name: Pack AppImage + needs: [build] + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - uses: actions/download-artifact@v2 + with: + name: tmp + path: tmp + + - name: Prepare + run: | + wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage -O appimagetool.AppImage + chmod +x appimagetool.AppImage + wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage -O linuxdeploy.AppImage + chmod +x linuxdeploy.AppImage + + - name: Pack + run: | + ./linuxdeploy.AppImage --appdir tmp/tg2sip -d buildenv/tg2sip.desktop -i buildenv/icon.svg + ./linuxdeploy.AppImage --appdir tmp/gen_db -d buildenv/gen_db.desktop -i buildenv/icon.svg + chmod +x tmp/tg2sip/usr/bin/tg2sip + chmod +x tmp/gen_db/usr/bin/gen_db + ./appimagetool.AppImage tmp/tg2sip + ./appimagetool.AppImage tmp/gen_db + + - uses: actions/upload-artifact@v2 + with: + name: tg2sip_universal + path: | + tg2sip-x86_64.AppImage + gen_db-x86_64.AppImage + settings.ini; diff --git a/README.md b/README.md index a08b398..045bd7a 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![Build status](https://ci.appveyor.com/api/projects/status/4dnph34apvfy6vft?svg=true)](https://ci.appveyor.com/project/Infactum/tg2sip) +[![Build status](https://github.com/Infactum/tg2sip/workflows/CI/badge.svg)](https://github.com/Infactum/tg2sip/actions) # TG2SIP @@ -14,10 +14,8 @@ Your SIP PBX should be comaptible with `L16@48000` or `OPUS@48000` voice codec. * Build them from source. Requires C++17 supported comiler, which may be a trouble for old linux distros. * Download prebuild native binaries for one of supported distros. - [Ubuntu 18.04 Bionic](https://ci.appveyor.com/api/projects/Infactum/tg2sip/artifacts/tg2sip_bionic.zip?branch=master&job=Environment%3A%20target_name%3DUbuntu%20Bionic%2C%20docker_tag%3Dbionic) - [CentOS 7](https://ci.appveyor.com/api/projects/Infactum/tg2sip/artifacts/tg2sip_centos7.zip?branch=master&job=Environment%3A%20target_name%3DCentOS%207%2C%20docker_tag%3Dcentos7) Prebuild binaries requires OPUS libraries (`libopus0` for Ubuntu, `opus` for CentOS, etc). - * [Download](https://ci.appveyor.com/api/projects/Infactum/tg2sip/artifacts/tg2sip.zip?branch=master&job=Environment%3A%20target_name%3DAppImage%2C%20docker_tag%3Dcentos6) universal AppImage package. + * Download universal AppImage package. More information of what is AppImage can be found here https://appimage.org/ 2. Obtain `api_id` and `api_hash` tokens from [this](https://my.telegram.org) page and put them in `settings.ini` file. diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index cf2d717..0000000 --- a/appveyor.yml +++ /dev/null @@ -1,75 +0,0 @@ -version: 1.0.0+{build} - -image: - - Ubuntu - -services: - - docker - -configuration: Release - -platform: x64 - -environment: - global: - docker_image: infactum/tg2sip-builder - - matrix: - - target_name: Ubuntu Bionic - docker_tag: bionic - - - target_name: CentOS 7 - docker_tag: centos7 - - - target_name: AppImage - docker_tag: centos6 - -init: - - sh: | - docker pull "$docker_image":"$docker_tag" - -build_script: - - sh: >- - if [ "$target_name" != "AppImage" ] ; then - mkdir build; - docker run --rm -v "$(pwd)":/src "$docker_image":"$docker_tag" /bin/bash -c " - mkdir build && cd build; - export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig && cmake -DCMAKE_BUILD_TYPE=Release /src; - cmake --build .; - chmod +x tg2sip; - chmod +x gen_db; - cp tg2sip /src/build; - cp gen_db /src/build;" - 7z a tg2sip.zip ./build/tg2sip ./build/gen_db ./settings.ini; - fi; - - - sh: >- - if [ "$target_name" = "AppImage" ] ; then - mkdir build; - docker run --rm -v "$(pwd)":/src "$docker_image":"$docker_tag" /bin/bash -c " - mkdir build && cd build; - export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig && cmake -DCMAKE_BUILD_TYPE=Release /src; - cmake --build .; - chmod +x tg2sip; - chmod +x gen_db; - linuxdeploy --appdir /src/build/tg2sip -e tg2sip; - linuxdeploy --appdir /src/build/gen_db -e gen_db;" - wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage -O appimagetool.AppImage; - chmod +x appimagetool.AppImage; - wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage -O linuxdeploy.AppImage; - chmod +x linuxdeploy.AppImage; - sudo chown -R "$(id -u)":"$(id -g)" ./build; - ./linuxdeploy.AppImage --appdir ./build/tg2sip -d ./buildenv/tg2sip.desktop -i ./buildenv/icon.svg; - ./linuxdeploy.AppImage --appdir ./build/gen_db -d ./buildenv/gen_db.desktop -i ./buildenv/icon.svg; - ./appimagetool.AppImage ./build/tg2sip; - ./appimagetool.AppImage ./build/gen_db; - 7z a tg2sip.zip ./tg2sip-x86_64.AppImage ./gen_db-x86_64.AppImage ./settings.ini; - fi; - -after_build: - - sh: >- - if [ "$target_name" != "AppImage" ] ; then - appveyor PushArtifact tg2sip.zip -FileName tg2sip_"$docker_tag".zip -DeploymentName "TG2SIP $target_name" - else - appveyor PushArtifact tg2sip.zip -FileName tg2sip.zip -DeploymentName "TG2SIP AppImage" - fi \ No newline at end of file diff --git a/buildenv/Dockerfile.centos6 b/buildenv/Dockerfile.centos6 deleted file mode 100644 index d6f951d..0000000 --- a/buildenv/Dockerfile.centos6 +++ /dev/null @@ -1,94 +0,0 @@ -FROM centos:6 as builder - -# https://www.softwarecollections.org/en/scls/rhscl/devtoolset-7/ -RUN yum -y install centos-release-scl yum-utils \ - && yum-config-manager --enable rhel-server-rhscl-7-rpms \ - && yum install -y devtoolset-7-gcc devtoolset-7-gcc-c++ - -RUN set -xe \ - && yum install -y \ - make patch \ - git wget \ - zlib-devel openssl-devel gperf \ - pkgconfig ccache gperf unzip \ - libpng-devel libjpeg-devel \ - epel-release \ - && yum install -y opus-devel patchelf - -RUN wget https://cmake.org/files/v3.18/cmake-3.18.0-Linux-x86_64.sh \ - && sh cmake-3.18.0-Linux-x86_64.sh --prefix=/usr --exclude-subdir - -COPY glibc_gcc.patch / - -RUN source /opt/rh/devtoolset-7/enable \ - && wget http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz \ - && tar zxf glibc-2.14.tar.gz \ - && rm glibc-2.14.tar.gz \ - && cd glibc-2.14 \ - && patch < /glibc_gcc.patch \ - && gcc --version \ - && mkdir build \ - && cd build \ - && ../configure --prefix=/opt/glibc-2.14 \ - && make -j $(grep -c ^processor /proc/cpuinfo) \ - && make install \ - && cd / \ - && rm -rf glibc-2.14 \ - -ENV LD_LIBRARY_PATH="/opt/glibc-2.14/lib:${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" - -COPY tdlib_header.patch / -COPY tdlib_threadname.patch / - -RUN source /opt/rh/devtoolset-7/enable \ - && git clone https://github.com/tdlib/td.git \ - && cd td \ - && git reset --hard v1.6.0 \ - && git apply /tdlib_header.patch \ - && git apply /tdlib_threadname.patch \ - && mkdir build \ - && cd build \ - && export CPLUS_INCLUDE_PATH="/opt/glibc-2.14/include" \ - && cmake -DCMAKE_BUILD_TYPE=Release .. \ - && cmake --build . --target install -j $(grep -c ^processor /proc/cpuinfo) \ - && cd / \ - && rm -rf td - -COPY config_site.h / - -RUN source /opt/rh/devtoolset-7/enable \ - && git clone https://github.com/pjsip/pjproject.git \ - && cd pjproject \ - && git reset --hard 2.9 \ - && cp /config_site.h pjlib/include/pj \ - && ./configure --disable-sound CFLAGS="-O3 -DNDEBUG" \ - && make dep && make -j $(grep -c ^processor /proc/cpuinfo) && make install \ - && cd / \ - && rm -rf pjproject - -RUN source /opt/rh/devtoolset-7/enable \ - && git clone -n https://github.com/gabime/spdlog.git \ - && cd spdlog \ - && git checkout tags/v0.17.0 \ - && mkdir build \ - && cd build \ - && cmake -DCMAKE_BUILD_TYPE=Release -DSPDLOG_BUILD_EXAMPLES=OFF -DSPDLOG_BUILD_TESTING=OFF .. \ - && cmake --build . --target install -j $(grep -c ^processor /proc/cpuinfo) \ - && cd / \ - && rm -rf spdlog - -RUN source /opt/rh/devtoolset-7/enable \ - && git clone --recursive https://github.com/linuxdeploy/linuxdeploy.git \ - && cd linuxdeploy \ - && git checkout f9fc51a832185158d3e0e64858c83a941047871f \ - && mkdir build \ - && cd build \ - && export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig && cmake -DCMAKE_BUILD_TYPE=Release -DUSE_SYSTEM_CIMG=0 .. \ - && cmake --build . -j $(grep -c ^processor /proc/cpuinfo) \ - && cp bin/linuxdeploy /usr/local/bin \ - && cd / \ - && rm -rf linuxdeploy - -COPY centos_entrypoint.sh / - -ENTRYPOINT ["/centos_entrypoint.sh"] diff --git a/buildenv/Dockerfile.centos7 b/buildenv/Dockerfile.centos7 index cb78527..ae847e2 100644 --- a/buildenv/Dockerfile.centos7 +++ b/buildenv/Dockerfile.centos7 @@ -9,7 +9,10 @@ RUN yum install -y \ make \ git wget \ zlib-devel opus-devel openssl-devel gperf \ - pkgconfig ccache gperf unzip + pkgconfig ccache gperf unzip \ + libpng-devel libjpeg-devel \ + epel-release \ + && yum install -y patchelf RUN wget https://cmake.org/files/v3.18/cmake-3.18.0-Linux-x86_64.sh \ && sh cmake-3.18.0-Linux-x86_64.sh --prefix=/usr --exclude-subdir @@ -53,6 +56,18 @@ RUN source /opt/rh/devtoolset-7/enable \ && cd / \ && rm -rf spdlog +RUN source /opt/rh/devtoolset-7/enable \ + && git clone --recursive https://github.com/linuxdeploy/linuxdeploy.git \ + && cd linuxdeploy \ + && git checkout 557bad2241df2c33972c7e6bdbf0c528cee27cc8 \ + && mkdir build \ + && cd build \ + && export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig && cmake -DCMAKE_BUILD_TYPE=Release -DUSE_SYSTEM_CIMG=0 .. \ + && cmake --build . -j $(grep -c ^processor /proc/cpuinfo) \ + && cp bin/linuxdeploy /usr/local/bin \ + && cd / \ + && rm -rf linuxdeploy + COPY centos_entrypoint.sh / ENTRYPOINT ["/centos_entrypoint.sh"] \ No newline at end of file diff --git a/buildenv/glibc_gcc.patch b/buildenv/glibc_gcc.patch deleted file mode 100644 index dfd18fb..0000000 --- a/buildenv/glibc_gcc.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff --git a/configure b/configure -index 6cf85e5..2613fc4 100755 ---- a/configure -+++ b/configure -@@ -4938,10 +4938,10 @@ else - $as_echo_n "checking version of $CC... " >&6; } - ac_prog_version=`$CC -v 2>&1 | sed -n 's/^.*version \([egcygnustpi-]*[0-9.]*\).*$/\1/p'` - case $ac_prog_version in -- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; -+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=no;; - 3.4* | 4.[0-9]* ) - ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; -- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; -+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=no;; - - esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5 diff --git a/buildenv/prepare.sh b/buildenv/prepare.sh index de1347d..bafdce3 100755 --- a/buildenv/prepare.sh +++ b/buildenv/prepare.sh @@ -4,7 +4,7 @@ set -e DOCKER_IMAGE=infactum/tg2sip-builder -for DOCKER_TAG in bionic centos6 centos7 +for DOCKER_TAG in bionic centos7 do docker build . -f Dockerfile."$DOCKER_TAG" -t "$DOCKER_IMAGE:$DOCKER_TAG" docker push "$DOCKER_IMAGE:$DOCKER_TAG"