The ubuntu-18.04 base image is deprecated and in the process of being phased 
out:
https://github.blog/changelog/2022-08-09-github-actions-the-ubuntu-18-04-actions-runner-image-is-being-deprecated-and-will-be-removed-by-12-1-22/

It is already causing build failures during the scheduled periods mentioned in 
the blog post.

This is the best alternative I found which does not drop any tests or test 
environments.
Sadly GHAs build-in container-capabilities can't be used, since they don't 
allow specifying --network host.
Without that, IPv6 related tests fail, since the Docker deployment on GHA does 
not support IPv6, even in 2022:
https://github.com/actions/runner-images/issues/668

So instead this manually invokes docker to run the tests in the respective 
Ubuntu Docker-Image.
Some dependencies had to be added since the Docker-Images are more barebones 
than the Github-Runner images.
Otherwise, nothing about the test setup changed.
---
 .github/workflows/build.yaml | 43 ++++++++++++++++++++----------------
 1 file changed, 24 insertions(+), 19 deletions(-)

diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
index b0f67a78..b6b04ff2 100644
--- a/.github/workflows/build.yaml
+++ b/.github/workflows/build.yaml
@@ -162,79 +162,84 @@ jobs:
     strategy:
       fail-fast: false
       matrix:
-        os: [ubuntu-18.04, ubuntu-20.04, ubuntu-22.04]
+        img: ["ubuntu:18.04", "ubuntu:20.04", "ubuntu:22.04"]
         sslpkg: [libmbedtls-dev]
         ssllib: [mbedtls]
         libname: [mbed TLS]
 
         include:
-          - os: ubuntu-18.04
+          - img: "ubuntu:18.04"
             sslpkg: "libssl1.0-dev"
             ssllib: openssl
             libname: OpenSSL 1.0.2
-          - os: ubuntu-18.04
+          - img: "ubuntu:18.04"
             sslpkg: "libssl-dev"
             libname: OpenSSL 1.1.1
             ssllib: openssl
-          - os: ubuntu-20.04
+          - img: "ubuntu:20.04"
             sslpkg: "libssl-dev"
             libname: OpenSSL 1.1.1
             ssllib: openssl
-          - os: ubuntu-22.04
+          - img: "ubuntu:22.04"
             sslpkg: "libssl-dev"
             libname: OpenSSL 3.0.2
             ssllib: openssl
-          - os: ubuntu-20.04
+          - img: "ubuntu:20.04"
             sslpkg: "libssl-dev"
             libname: OpenSSL 1.1.1
             ssllib: openssl
             extraconf: "--enable-iproute2"
-          - os: ubuntu-20.04
+          - img: "ubuntu:20.04"
             sslpkg: "libssl-dev"
             libname: OpenSSL 1.1.1
             ssllib: openssl
             extraconf: "--enable-async-push"
-          - os: ubuntu-20.04
+          - img: "ubuntu:20.04"
             sslpkg: "libssl-dev"
             libname: OpenSSL 1.1.1
             ssllib: openssl
             extraconf: "--disable-management"
-          - os: ubuntu-20.04
+          - img: "ubuntu:20.04"
             sslpkg: "libssl-dev"
             libname: OpenSSL 1.1.1
             ssllib: openssl
             extraconf: "--enable-small"
-          - os: ubuntu-20.04
+          - img: "ubuntu:20.04"
             sslpkg: "libssl-dev"
             libname: OpenSSL 1.1.1
             ssllib: openssl
             extraconf: "--disable-lzo --disable-lz4"
-          - os: ubuntu-20.04
+          - img: "ubuntu:20.04"
             sslpkg: "libssl-dev"
             libname: OpenSSL 1.1.1
             ssllib: openssl
             extraconf: "--enable-dco"
             nlpkg: "libnl-genl-3-dev"
 
-    name: "gcc - ${{matrix.os}} - ${{matrix.libname}} ${{matrix.extraconf}}"
+    name: "gcc - ${{matrix.img}} - ${{matrix.libname}} ${{matrix.extraconf}}"
     env:
       SSLPKG: "${{matrix.sslpkg}}"
       NLPKG: "${{matrix.nlpkg}}"
 
-    runs-on: ${{matrix.os}}
+    runs-on: ubuntu-latest
     steps:
-      - name: Install dependencies
-        run: sudo apt update && sudo apt install -y liblzo2-dev libpam0g-dev 
liblz4-dev libcap-ng-dev linux-libc-dev man2html libcmocka-dev python3-docutils 
libtool automake autoconf ${SSLPKG} ${NLPKG}
       - name: Checkout OpenVPN
         uses: actions/checkout@v3
+      - name: Setup Container
+        run: docker run --name ovpn --detach --rm --cap-add NET_ADMIN 
--network host -v "$PWD:/wd" --workdir=/wd "${{matrix.img}}" sleep 3600
+      - name: Install dependencies
+        run: docker exec ovpn sh -c "apt update && apt install -y liblzo2-dev 
libpam0g-dev liblz4-dev libcap-ng-dev linux-libc-dev man2html libcmocka-dev 
python3-docutils build-essential pkgconf libtool automake autoconf iproute2 git 
${SSLPKG} ${NLPKG}"
       - name: autoconf
-        run: autoreconf -fvi
+        run: docker exec ovpn autoreconf -fvi
       - name: configure
-        run: ./configure --with-crypto-library=${{matrix.ssllib}} 
${{matrix.extraconf}} --enable-werror
+        run: docker exec ovpn ./configure 
--with-crypto-library=${{matrix.ssllib}} ${{matrix.extraconf}} --enable-werror
       - name: make all
-        run: make -j3
+        run: docker exec ovpn make -j3
       - name: make check
-        run: make check
+        run: docker exec ovpn make check
+      - name: Docker Cleanup
+        if: always()
+        run: docker kill ovpn || true
 
   ubuntu-clang-asan:
     strategy:
-- 
2.34.1



_______________________________________________
Openvpn-devel mailing list
Openvpn-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openvpn-devel

Reply via email to