вт, 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