Fixed payload_sock not being cleared #47
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
name: Testing | |
# yamllint disable-line rule:truthy | |
on: | |
pull_request: | |
release: | |
types: | |
- published | |
- created | |
- edited | |
workflow_dispatch: | |
jobs: | |
analyse: | |
name: Code Analysers | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: true | |
matrix: | |
flags: | |
- -fsanitize=address -static-libasan | |
- -fsanitize=undefined -static-libubsan | |
# This option results in timeouts sending RPC requests during the | |
# test_integration_supernode.sh test when running in github actions. | |
# Disable it until more investigation can be done. | |
# - -fsanitize=leak | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Fix Checkout | |
run: | | |
git fetch --force --tags | |
- name: Make the makefiles | |
run: | | |
./autogen.sh | |
export CFLAGS="${{ matrix.flags }}" | |
export LDFLAGS="${{ matrix.flags }}" | |
./configure | |
- name: Install essential | |
run: | | |
sudo apt update | |
make build-dep | |
- name: Run the analysis | |
run: | | |
make test | |
- if: ${{ failure() }} | |
name: Upload tests output | |
uses: actions/upload-artifact@v3 | |
with: | |
name: "analysis${{ matrix.flags }}" | |
path: tests | |
test_linux: | |
name: Test Linux | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: true | |
matrix: | |
os: | |
- ubuntu-20.04 | |
- ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Fix Checkout | |
run: | | |
git fetch --force --tags | |
- name: Install essential | |
run: | | |
sudo apt-get update | |
sudo apt-get install build-essential autoconf | |
- name: generate a makefile and use it to install more packages | |
run: | | |
./autogen.sh | |
./configure | |
make build-dep | |
shell: bash | |
- name: Run the real configure step | |
run: | | |
export CFLAGS="-fprofile-arcs -ftest-coverage" | |
export LDFLAGS="--coverage" | |
./configure | |
shell: bash | |
- name: Run embedded unit tests | |
run: make test.builtin test.units | |
shell: bash | |
- if: ${{ failure() }} | |
name: Move test outputs to an arch specific location | |
shell: bash | |
run: | | |
mkdir -p tests/${{ matrix.os }} | |
touch tests/dummy.out | |
mv tests/*.out tests/${{ matrix.os }} | |
- if: ${{ failure() }} | |
name: Upload tests output | |
uses: actions/upload-artifact@v3 | |
with: | |
name: tests-linux | |
path: tests | |
- name: Generate coverage reports | |
run: | | |
make gcov | |
make cover COVERAGEDIR=coverage/${{ matrix.os }} | |
shell: bash | |
- name: Upload gcovr report artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: coverage | |
path: coverage | |
- name: Upload data to codecov | |
uses: codecov/codecov-action@v3 | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
test_macos: | |
name: Test MacOS | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: true | |
matrix: | |
os: | |
- macos-11 | |
- macos-12 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Fix Checkout | |
run: | | |
git fetch --force --tags | |
- name: Install packages | |
run: | | |
brew install automake | |
- name: generate a makefile and use it to install more packages | |
run: | | |
./autogen.sh | |
./configure | |
make build-dep | |
shell: bash | |
- name: Run the real configure step | |
run: | | |
export CFLAGS="-fprofile-arcs -ftest-coverage" | |
export LDFLAGS="--coverage" | |
./configure | |
shell: bash | |
- name: Run embedded unit tests | |
run: make test.builtin test.units | |
shell: bash | |
- if: ${{ failure() }} | |
name: Move test outputs to an arch specific location | |
shell: bash | |
run: | | |
mkdir -p tests/${{ matrix.os }} | |
touch tests/dummy.out | |
mv tests/*.out tests/${{ matrix.os }} | |
- if: ${{ failure() }} | |
name: Upload tests output | |
uses: actions/upload-artifact@v3 | |
with: | |
name: tests-macos | |
path: tests | |
- name: Generate coverage reports | |
run: | | |
make gcov | |
# This was working fine for tens of jobs, up until | |
# 2021-10-19T18:53+0100 and it still works fine when run from my | |
# personal github actions. The next run at 2021-10-19T19:08+0100 | |
# didnt work. | |
# Assume that they changed something on the runner - I cannot debug | |
# it as I do not have a Mac. | |
# | |
# make cover COVERAGEDIR=coverage/${{ matrix.os }} | |
shell: bash | |
# - name: Upload gcovr report artifact | |
# uses: actions/upload-artifact@v3 | |
# with: | |
# name: coverage | |
# path: coverage | |
- name: Upload data to codecov | |
uses: codecov/codecov-action@v3 | |
test_windows: | |
name: Test Windows | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: true | |
matrix: | |
os: | |
- windows-2019 | |
- windows-2022 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Fix Checkout | |
run: | | |
git fetch --force --tags | |
- name: Run a configure step | |
run: | | |
export CFLAGS="-fprofile-arcs -ftest-coverage" | |
export LDFLAGS="--coverage" | |
./scripts/hack_fakeautoconf.sh | |
shell: bash | |
- name: Build the project | |
run: make | |
shell: bash | |
- name: Run embedded unit tests | |
run: make test.builtin test.units | |
shell: bash | |
- if: ${{ failure() }} | |
name: Move test outputs to an arch specific location | |
shell: bash | |
run: | | |
mkdir -p tests/${{ matrix.os }} | |
touch tests/dummy.out | |
mv tests/*.out tests/${{ matrix.os }} | |
- if: ${{ failure() }} | |
name: Upload tests output | |
uses: actions/upload-artifact@v3 | |
with: | |
name: tests-windows | |
path: tests | |
package_dpkg: | |
name: Package for Debian/Ubuntu | |
needs: | |
- test_linux | |
runs-on: ubuntu-20.04 | |
strategy: | |
fail-fast: true | |
matrix: | |
arch: | |
- amd64 | |
- arm64 | |
- armhf | |
- i386 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Fix Checkout | |
run: | | |
git fetch --force --tags | |
- name: Install packages needed for build | |
run: | | |
sudo apt-get update | |
sudo apt-get install devscripts equivs \ | |
crossbuild-essential-${{ matrix.arch }} | |
sudo mk-build-deps -i | |
- name: Hack dpkg-shlibdeps | |
run: | | |
echo '#!/bin/bash' | sudo tee /usr/bin/dpkg-shlibdeps | |
- name: Configure | |
# The HOST_TRIPLET line is not easily foldable | |
# yamllint disable rule:line-length | |
run: | | |
# This will warn about CC, but we cannot set CC until we run it :-S | |
HOST_TRIPLET=$(dpkg-architecture -a${{ matrix.arch }} -q DEB_HOST_GNU_TYPE) | |
./autogen.sh | |
./configure --host $HOST_TRIPLET --prefix=/usr | |
# yamllint enable rule:line-length | |
- name: Build | |
run: | | |
make dpkg | |
mv ../n3n_*.deb ./ | |
echo "Package built." | |
ls n3n_*.deb | |
echo "-------------------------------" | |
dpkg -I n3n_*.deb | |
dpkg --contents n3n_*.deb | |
echo "-------------------------------" | |
git status | |
- name: Upload dpkg | |
uses: actions/upload-artifact@v3 | |
with: | |
name: packages-dpkg | |
path: "*.deb" | |
package_rpm: | |
name: Package for Redhat/RPM | |
needs: | |
- test_linux | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Fix Checkout | |
run: | | |
git fetch --force --tags | |
- name: Install packages needed for build | |
run: | | |
sudo apt-get install rpm | |
- name: Build | |
run: | | |
cd packages/rpm/ | |
make | |
cd ../../ | |
mv ~/rpmbuild ./ | |
- name: Upload rpm | |
uses: actions/upload-artifact@v3 | |
with: | |
name: packages-rpm | |
path: rpmbuild/RPMS/x86_64/*.rpm | |
package_ipk: | |
name: Package for OpenWrt | |
runs-on: ubuntu-latest | |
if: github.event_name != 'pull_request' | |
strategy: | |
fail-fast: true | |
matrix: | |
include: | |
- name: mips_24kc | |
sdk_ver: 22.03.3 | |
sdk: https://downloads.openwrt.org/releases/22.03.3/targets/lantiq/xrx200/openwrt-sdk-22.03.3-lantiq-xrx200_gcc-11.2.0_musl.Linux-x86_64.tar.xz | |
- name: i386_pentium4 | |
sdk_ver: 22.03.3 | |
sdk: https://downloads.openwrt.org/releases/22.03.3/targets/x86/generic/openwrt-sdk-22.03.3-x86-generic_gcc-11.2.0_musl.Linux-x86_64.tar.xz | |
- name: x86_64 | |
sdk_ver: 22.03.3 | |
sdk: https://downloads.openwrt.org/releases/22.03.3/targets/x86/64/openwrt-sdk-22.03.3-x86-64_gcc-11.2.0_musl.Linux-x86_64.tar.xz | |
defaults: | |
run: | |
working-directory: openwrt | |
steps: | |
- name: Cache entire openwrt dir | |
id: cache-openwrt | |
uses: actions/cache@v3 | |
with: | |
path: openwrt | |
key: openwrt-${{ matrix.sdk_ver }}-${{ matrix.name }} | |
- name: Get sdk | |
if: steps.cache-openwrt.outputs-cache-hit != 'true' | |
run: | | |
wget -q ${{ matrix.sdk }} -O openwrt-sdk.tar.xz | |
tar xf openwrt-sdk.tar.xz | |
mv openwrt-sdk-* openwrt | |
working-directory: ./ | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
path: n3n | |
fetch-depth: 0 | |
- name: Fix Checkout | |
run: | | |
git fetch --force --tags | |
working-directory: n3n | |
- name: Set environment for OpenWRT | |
run: | | |
echo "BUILD_VERSION=$(scripts/version.sh)" >> "$GITHUB_ENV" | |
echo "BUILD_SOURCE_URL=https://github.com/${{github.repository}}" >> "$GITHUB_ENV" | |
echo "BUILD_SOURCE_REF=$GITHUB_REF" >> "$GITHUB_ENV" | |
cat "$GITHUB_ENV" | |
working-directory: n3n | |
- name: Copy package definition into openwrt | |
run: | | |
cp -r n3n/packages/openwrt openwrt/package/n3n | |
working-directory: ./ | |
- name: Configure OpenWrt | |
run: | | |
make defconfig | |
- name: Build openwrt packages | |
run: | | |
echo "Build for $BUILD_VERSION" | |
export | |
make package/n3n/clean V=s | |
make package/n3n/prepare USE_SOURCE_DIR=$GITHUB_WORKSPACE/n3n V=s | |
make package/n3n/compile V=s | |
# FIXME: add a way to run the test suite! | |
# - name: Run embedded tests | |
# run: | | |
# make test | |
- name: Save config used | |
if: always() | |
run: | | |
cp openwrt/.config config.${{ matrix.name }} | |
working-directory: ./ | |
- name: Upload config file used for build | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: openwrt-config | |
path: config.* | |
- name: Upload ipk | |
uses: actions/upload-artifact@v3 | |
with: | |
name: packages-ipk | |
path: openwrt/bin/packages/*/base/*.ipk | |
binaries_windows: | |
name: Binaries for Windows (x86_64-pc-mingw64) | |
needs: | |
- test_windows | |
runs-on: windows-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Fix Checkout | |
run: | | |
git fetch --force --tags | |
- name: Configure and Build | |
shell: bash | |
run: | | |
./scripts/hack_fakeautoconf.sh | |
make | |
- name: Create binary dir | |
shell: bash | |
run: | | |
make install DESTDIR=binaries/x86_64-pc-mingw64 | |
- name: Upload binary artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: binaries | |
path: binaries | |
binaries_macos: | |
name: Binaries for MacOS | |
needs: | |
- test_macos | |
runs-on: macos-latest | |
strategy: | |
fail-fast: true | |
matrix: | |
arch: | |
- x86_64-apple-macos | |
- arm64-apple-macos | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Fix Checkout | |
run: | | |
git fetch --force --tags | |
- name: Install packages needed for build | |
run: | | |
brew install automake | |
- name: Configure and Build | |
shell: bash | |
run: | | |
# this is a hack! it assumes the default SDK is the 'right' one | |
export SDKROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk | |
./autogen.sh | |
export CFLAGS="-target ${{ matrix.arch }}" | |
export LDFLAGS="-target ${{ matrix.arch }}" | |
./configure --host=${{ matrix.arch }} | |
make | |
- if: ${{ failure() }} | |
name: Upload config.log output | |
uses: actions/upload-artifact@v3 | |
with: | |
name: config-log-${{ matrix.arch }} | |
path: config.log | |
- name: Create binary dir | |
shell: bash | |
run: | | |
make install DESTDIR=binaries/${{ matrix.arch }} | |
- name: Upload binary artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: binaries | |
path: binaries | |
binaries_macos_universal: | |
name: Binaries for MacOS (universal arch) | |
needs: | |
- test_macos | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Fix Checkout | |
run: | | |
git fetch --force --tags | |
- name: Install packages needed for build | |
run: | | |
brew install automake | |
- name: Configure and Build | |
shell: bash | |
run: | | |
# this is a hack! it assumes the default SDK is the 'right' one | |
export SDKROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk | |
./autogen.sh | |
export CFLAGS="-arch x86_64 -arch arm64" | |
export LDFLAGS="-arch x86_64 -arch arm64" | |
./configure | |
make | |
- name: Create binary dir | |
shell: bash | |
run: | | |
make install DESTDIR=binaries/universal-apple-darwin | |
- name: Upload binary artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: binaries | |
path: binaries | |
binaries_linux_crosscompile: | |
name: Binaries for linux | |
needs: | |
- test_linux | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: true | |
matrix: | |
include: | |
- arch: arm-linux-gnueabi | |
- arch: aarch64-linux-gnu | |
# Unfortunately, the ubnuts mingw package names dont follow the | |
# same naming convention as every other cross-compiler. | |
- arch: i686-w64-mingw32 | |
package_suffix: mingw-w64-i686 | |
- arch: x86_64-w64-mingw32 | |
package_suffix: mingw-w64-x86-64 | |
# I assume these architectures produce working code, but this has | |
# not been directly confirmed. | |
# They are compiled dynamically against normal libc, so will not | |
# work on openwrt. | |
- arch: mips-linux-gnu | |
- arch: mipsel-linux-gnu | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Fix Checkout | |
run: | | |
git fetch --force --tags | |
- name: Install cross compiler | |
run: | | |
sudo apt-get update | |
sudo apt-get install \ | |
binutils-${{ matrix.package_suffix || matrix.arch }} \ | |
gcc-${{ matrix.package_suffix || matrix.arch }} | |
- name: Configure and Build | |
shell: bash | |
run: | | |
./autogen.sh | |
./configure --host ${{ matrix.arch }} | |
make | |
- name: Create binary dir | |
shell: bash | |
run: | | |
make install DESTDIR=binaries/${{ matrix.arch }} | |
- name: Upload binary artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: binaries | |
path: binaries | |
# Given the clearly documented use of annotated tags to signal releases, | |
# it seems strange that there is no simple way to trigger actions if the | |
# tag is annotated. So we need to jump through some extra hoops. | |
# | |
# Looking at https://github.com/actions/checkout/issues/290 seems to show | |
# that github just doesnt care about how git expects annotated tags to be | |
# used. | |
# | |
# This workflow has added a `git fetch --force --tags` to every job that | |
# needs to have working tags | |
upload_release: | |
name: Upload Release Assets | |
if: startsWith(github.ref, 'refs/tags/') | |
needs: | |
- package_dpkg | |
- package_rpm | |
- package_ipk | |
- binaries_windows | |
- binaries_macos | |
- binaries_macos_universal | |
- binaries_linux_crosscompile | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Fix Checkout | |
run: | | |
git fetch --force --tags | |
- name: Get Tag Type | |
id: get_tagtype | |
run: | | |
TYPE=$(git cat-file -t $GITHUB_REF) | |
echo "::set-output name=TAGTYPE::$TYPE" | |
echo ========== | |
echo REF=$GITHUB_REF | |
echo TAGTYPE=$TYPE | |
- name: Fetch all Artifacts | |
if: steps.get_tagtype.outputs.TAGTYPE == 'tag' | |
uses: actions/download-artifact@v3 | |
with: | |
path: artifacts | |
- name: Upload Assets to Release | |
if: steps.get_tagtype.outputs.TAGTYPE == 'tag' | |
uses: softprops/action-gh-release@v1 | |
with: | |
prerelease: true | |
files: | | |
artifacts/packages-dpkg/*.deb | |
artifacts/packages-rpm/*.rpm | |
artifacts/packages-ipk/*/base/*.ipk | |
artifacts/binaries/x86_64-w64-mingw32/usr/local/sbin/*.exe |