вт, 8 июн. 2021 г. в 20:26, Arne Schwabe <a...@rfc2549.org>:

> dummy0 gives strange errors on the Ubuntu 16 runner on github actions
> because
> dummy already exist, so use a more unique ovpn-dummy0 name instead.
>
> Github actions are a good alternative to travis-ci, which futrure is
> questionable
> at the moment without payment. The github actions also allows building on
> macOS
>

we can remove most configurations from travis, except unique like s390x,
ppc64le, ...



> and Windows (not included in this commit). The  matrix is a bit different
> than Coverity and uses different Ubuntu version with their native OpenSSL
> (1.0.2, 1.1.1)/mbed TLS instead of manually compiling different OpenSSL
> versions on just Ubuntu 20.04.
>
> Signed-off-by: Arne Schwabe <a...@rfc2549.org>
> ---
>  .github/workflows/build.yaml               | 184 +++++++++++++++++++++
>  tests/t_net.sh                             |   2 +-
>  tests/unit_tests/openvpn/test_networking.c |   2 +-
>  3 files changed, 186 insertions(+), 2 deletions(-)
>  create mode 100644 .github/workflows/build.yaml
>
> diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
> new file mode 100644
> index 000000000..7ff379802
> --- /dev/null
> +++ b/.github/workflows/build.yaml
> @@ -0,0 +1,184 @@
> +# The name of our workflow
> +name: Build
> +on: [push, pull_request]
> +
> +jobs:
> +  mingw:
> +    strategy:
> +      matrix:
> +        include:
> +          - target: mingw64
> +            chost: x86_64-w64-mingw32
> +          - target: mingw
> +            chost: i686-w64-mingw32
> +
> +    runs-on: ubuntu-20.04
> +    env:
> +      MAKEFLAGS: -j3
> +      LZO_VERSION: "2.10"
> +      PKCS11_HELPER_VERSION: "1.26"
> +      OPENSSL_VERSION: "1.1.1j"
> +      TAP_WINDOWS_VERSION: "9.23.3"
> +      CHOST: ${{ matrix.chost }}
> +      TARGET: ${{ matrix.target }}
> +    steps:
> +      - name: Install dependencies
> +        run: sudo apt update && sudo apt install -y mingw-w64 libtool
> automake autoconf man2html unzip
> +      - name: Checkout ovpn-dco-win
> +        uses: actions/checkout@v2
> +        with:
> +          repository: OpenVPN/ovpn-dco-win
> +          path: ovpn-dco-win
> +      - name: Checkout OpenVPN
> +        uses: actions/checkout@v2
> +        with:
> +          path: openvpn
> +
> +      - name: autoconf
> +        run: autoreconf -fvi
> +        working-directory: openvpn
> +
> +      - name: Cache dependencies
> +        id: cache
> +        uses: actions/cache@v2
> +        with:
> +          path: '~/mingw/'
> +          key: ${{ matrix.target }}-mingw-${{ env.LZO_VERSION }}-${{
> env.PKCS11_HELPER_VERSION }}-${{ env.TAP_WINDOWS_VERSION }}
> +
> +      # Repeating  if: steps.cache.outputs.cache-hit != 'true'
> +      # on every step for building dependencies is ugly but
> +      # I haven't found a better solution so far.
> +
> +      - name: Download mingw depnendencies
> +        if: steps.cache.outputs.cache-hit != 'true'
> +        run: |
> +          wget -c -P download-cache/ "
> https://build.openvpn.net/downloads/releases/tap-windows-${TAP_WINDOWS_VERSION}.zip
> "
> +          wget -c -P download-cache/ "
> https://www.oberhumer.com/opensource/lzo/download/lzo-${LZO_VERSION}.tar.gz
> "
> +          wget -c -P download-cache/ "
> https://github.com/OpenSC/pkcs11-helper/archive/pkcs11-helper-${PKCS11_HELPER_VERSION}.tar.gz
> "
> +          wget -c -P download-cache/ "
> https://www.openssl.org/source/old/1.1.1/openssl-${OPENSSL_VERSION}.tar.gz
> "
> +          tar zxf
> "download-cache/pkcs11-helper-${PKCS11_HELPER_VERSION}.tar.gz"
> +          tar zxf "download-cache/openssl-${OPENSSL_VERSION}.tar.gz"
> +          tar zxf "download-cache/lzo-${LZO_VERSION}.tar.gz"
> +          unzip download-cache/tap-windows-${TAP_WINDOWS_VERSION}.zip
> +
> +      - name: Configure OpenSSL
> +        if: steps.cache.outputs.cache-hit != 'true'
> +        run: ./Configure --cross-compile-prefix=${CHOST}- shared ${{
> matrix.target }} no-capieng --prefix="${HOME}/mingw/opt"
> --openssldir="${HOME}/mingw/opt" -static-libgcc
> +        working-directory: "./openssl-1.1.1j"
> +
> +      - name: Build OpenSSL
> +        if: steps.cache.outputs.cache-hit != 'true'
> +        run: make
> +        working-directory: "./openssl-1.1.1j/"
> +
> +      - name: Install OpenSSL
> +        if: steps.cache.outputs.cache-hit != 'true'
> +        run: make install
> +        working-directory: "./openssl-1.1.1j/"
> +
> +      - name: autoreconf pkcs11-helper
> +        if: steps.cache.outputs.cache-hit != 'true'
> +        run: autoreconf -iv
> +        working-directory: "./pkcs11-helper-pkcs11-helper-1.26"
> +
> +      - name: configure pkcs11-helper
> +        if: steps.cache.outputs.cache-hit != 'true'
> +        run: OPENSSL_LIBS="-L${HOME}/mingw/opt/lib -lssl -lcrypto"
> OPENSSL_CFLAGS=-I$HOME/mingw/opt/include
> PKG_CONFIG_PATH=${HOME}/mingw/opt/lib/pkgconfig ./configure --host=${CHOST}
> --program-prefix='' --libdir=${HOME}/mingw/opt/lib
> --prefix=${HOME}/mingw/opt --build=x86_64-pc-linux-gnu
> --disable-crypto-engine-gnutls --disable-crypto-engine-nss
> --disable-crypto-engine-polarssl --disable-crypto-engine-mbedtls
> +        working-directory: "./pkcs11-helper-pkcs11-helper-1.26"
> +
> +      - name: build pkcs11-helper
> +        if: steps.cache.outputs.cache-hit != 'true'
> +        run: make all
> +        working-directory: "./pkcs11-helper-pkcs11-helper-1.26"
> +
> +      - name: install pkcs11-helper
> +        if: steps.cache.outputs.cache-hit != 'true'
> +        run: make install
> +        working-directory: "./pkcs11-helper-pkcs11-helper-1.26"
> +
> +      - name: Configure lzo
> +        if: steps.cache.outputs.cache-hit != 'true'
> +        run: ./configure --host=${CHOST} --program-prefix=''
> --libdir=${HOME}/mingw/opt/lib --prefix=${HOME}/mingw/opt
> --build=x86_64-pc-linux-gnu
> +        working-directory: "./lzo-2.10"
> +
> +      - name: build lzo
> +        if: steps.cache.outputs.cache-hit != 'true'
> +        working-directory: "./lzo-2.10"
> +        run: make
> +
> +      - name: install lzo
> +        if: steps.cache.outputs.cache-hit != 'true'
> +        working-directory: "./lzo-2.10"
> +        run: make install
> +
> +      - name: copy tap-windows.h header
> +        if: steps.cache.outputs.cache-hit != 'true'
> +        run: cp ./tap-windows-9.23.3/include/tap-windows.h
> ${HOME}/mingw/opt/include/
> +
> +      - name: configure OpenVPN
> +        run: PKG_CONFIG_PATH=${HOME}/mingw/opt/lib/pkgconfig
> DCO_SOURCEDIR=$(realpath ../ovpn-dco-win) LDFLAGS=-L$HOME/mingw/opt/lib
> CFLAGS=-I$HOME/mingw/opt/include OPENSSL_LIBS="-L${HOME}/opt/lib -lssl
> -lcrypto" OPENSSL_CFLAGS=-I$HOME/mingw/opt/include PREFIX=$HOME/mingw/opt
> LZO_CFLAGS=-I$HOME/mingw/opt/include LZO_LIBS="-L${HOME}/mingw/opt/lib
> -llzo2" ./configure  --host=${CHOST} --disable-lz4 --enable-dco
> +        working-directory: openvpn
> +
> +      - name: build OpenVPN
> +        run: make -j3
> +        working-directory: openvpn
> +
> +  ubuntu:
> +    strategy:
> +      matrix:
> +        os: [ubuntu-16.04, ubuntu-18.04, ubuntu-20.04]
> +        ssllib: [mbedtls, openssl]
> +
> +    runs-on: ${{matrix.os}}
> +    steps:
> +      - name: Install dependencies
> +        run: sudo apt update && sudo apt install -y liblzo2-dev
> libpam0g-dev liblz4-dev linux-libc-dev man2html libcmocka-dev
> python3-docutils libtool automake autoconf libmbedtls-dev
> +      - name: Checkout OpenVPN
> +        uses: actions/checkout@v2
> +      - name: autoconf
> +        run: autoreconf -fvi
> +      - name: configure --with-crypto-library=${{matrix.ssllib}}
> +        run: ./configure
> +      - name: make all
> +        run: make -j3
> +      - name: make check
> +        run: make check
> +
> +  ubutun20-clang-asan:
> +    strategy:
> +      matrix:
> +        os: [ubuntu-16.04, ubuntu-18.04]
> +        ssllib: [mbedtls, openssl]
> +
> +    runs-on: ubuntu-20.04
> +    steps:
> +      - name: Install dependencies
> +        run: sudo apt update && sudo apt install -y liblzo2-dev
> libpam0g-dev liblz4-dev linux-libc-dev man2html clang libcmocka-dev
> python3-docutils libtool automake autoconf libmbedtls-dev
> +      - name: Checkout OpenVPN
> +        uses: actions/checkout@v2
> +      - name: autoconf
> +        run: autoreconf -fvi
> +      - name: configure
> +        run: CFLAGS="-fsanitize=address -fno-omit-frame-pointer -O2"
> CC=clang ./configure --with-crypto-library=${{matrix.ssllib}}
> +      - name: make all
> +        run: make -j3
> +      - name: make check
> +        run: make check
> +
> +
> +  macos:
> +    runs-on: macos-latest
> +    steps:
> +      - name: Checkout OpenVPN
> +        uses: actions/checkout@v2
> +      - name: Install dependencies
> +        run: brew install openssl lzo lz4 man2html cmocka libtool
> automake autoconf
> +      - name: autoconf
> +        run: autoreconf -fvi
> +      - name: configure
> +        run: OPENSSL_CFLAGS=-I/usr/local/opt/openssl@1.1/include
> OPENSSL_LIBS="-L/usr/local/opt/openssl@1.1/lib -lcrypto -lssl" ./configure
> +      - name: make all
> +        run: make -j4
> +      - name: make check
> +        run: make check
> +
> diff --git a/tests/t_net.sh b/tests/t_net.sh
> index 246ee07bd..f9dba4040 100755
> --- a/tests/t_net.sh
> +++ b/tests/t_net.sh
> @@ -1,6 +1,6 @@
>  #!/usr/bin/env bash
>
> -IFACE="dummy0"
> +IFACE="ovpn-dummy0"
>  UNIT_TEST="./unit_tests/openvpn/networking_testdriver"
>  MAX_TEST=${1:-7}
>
> diff --git a/tests/unit_tests/openvpn/test_networking.c
> b/tests/unit_tests/openvpn/test_networking.c
> index e7c148f0e..9e9744f48 100644
> --- a/tests/unit_tests/openvpn/test_networking.c
> +++ b/tests/unit_tests/openvpn/test_networking.c
> @@ -3,7 +3,7 @@
>  #include "networking.h"
>
>
> -static char *iface = "dummy0";
> +static char *iface = "ovpn-dummy0";
>
>  static int
>  net__iface_up(bool up)
> --
> 2.32.0
>
>
>
> _______________________________________________
> Openvpn-devel mailing list
> Openvpn-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/openvpn-devel
>
_______________________________________________
Openvpn-devel mailing list
Openvpn-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openvpn-devel

Reply via email to