name: ci-build on: push: branches: [master] paths-ignore: - docs - README.md - NEWS.md pull_request: types: [opened, synchronize, edited, ready_for_review] branches: [master] jobs: coverage: if: false runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Update apt run: sudo apt-get update - name: Install packages run: sudo apt-get install libncursesw5-dev libsqlite3-dev libbz2-dev libcurl4-openssl-dev zlib1g-dev lcov libunistring-dev - name: install cpp-coveralls run: pip install --user cpp-coveralls - name: autogen run: ./autogen.sh - name: configure run: ./configure --disable-static --enable-code-coverage --enable-debug --prefix=/usr/local CFLAGS=-g3 CXXFLAGS=-g3 - name: make run: make -j3 - name: make check run: env TEST_GIT_INSTALL=1 make check || (test -e src/tailer/test-suite.log && cat src/tailer/test-suite.log && false) || (test -e test/test-suite.log && cat test/test-suite.log && false) - name: upload cover env: COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }} TRAVIS_JOB_ID: ${{ github.run_id }}-${{ github.run_number }} run: >- coveralls --exclude src/doctest.hh --exclude src/fmtlib --exclude src/ghc --exclude src/k_merge_tree.h --exclude src/mapbox --exclude src/pugixml --exclude src/base/result.h --exclude src/safe --exclude src/spookyhash --exclude src/tailer/drive_tailer.cc --exclude src/third-party --exclude src/ww898 --exclude src/yajl --exclude src/yajlpp/drive_json_op.cc --exclude src/yajlpp/drive_json_ptr_walk.cc --exclude src/yajlpp/test_yajlpp.cc --exclude src/yajlpp/test_json_ptr.cc --exclude test --exclude src/data_scanner_re.cc --gcov-options '\-lp' build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Update apt run: sudo apt-get update - name: Install packages run: >- sudo apt-get install -y make automake autoconf g++ libpcre2-dev libncurses-dev libsqlite3-dev libbz2-dev libcurl4-openssl-dev libunistring-dev pipx tshark zlib1g-dev - name: Install python packages run: pipx install check-jsonschema - name: ulimit run: ulimit -s - name: autogen run: ./autogen.sh - name: configure run: ./configure --disable-static - name: make run: make -j4 - name: make distcheck run: timeout 15m make distcheck -j4 || (test -e lnav-*/_build/sub/src/tailer/test-suite.log && cat lnav-*/_build/sub/src/tailer/test-suite.log && false) || (test -e lnav-*/_build/sub/test/test-suite.log && cat lnav-*/_build/sub/test/test-suite.log && false) - name: Upload a Build Artifact uses: actions/upload-artifact@v4 with: # Artifact name name: lnav-tot-linux-64bit.zip # A file, directory or wildcard pattern that describes what to upload path: src/lnav build-windows: runs-on: self-hosted strategy: fail-fast: false matrix: include: - { icon: "🟦", sys: MSYS } name: ${{ matrix.icon }} ${{ matrix.sys }} defaults: run: shell: msys2 {0} steps: - name: "🧰 Checkout" uses: actions/checkout@v3 with: fetch-depth: 0 - name: "${{ matrix.icon }} Setup MSYS2" uses: msys2/setup-msys2@v2 with: msystem: ${{matrix.sys}} update: true install: >- autoconf automake gcc git make zip msys/libarchive-devel msys/libbz2-devel msys/libcurl-devel msys/libidn2-devel msys/liblzma-devel msys/libsqlite-devel msys/libunistring-devel msys/ncurses-devel msys/pcre2-devel msys/zlib-devel - name: "🔧 Generate and configure" run: | set -x ./autogen.sh mkdir -p ../lnav-build cd ../lnav-build export PREFIX=$PWD/lnav touch config.log # Corrected CPPFLAGS with proper source directory paths $GITHUB_WORKSPACE/configure \ --enable-static \ LDFLAGS="-static" \ CPPFLAGS="-I$GITHUB_WORKSPACE/src -I$GITHUB_WORKSPACE/src/fmtlib -O2 -DNCURSES_STATIC" \ CXXFLAGS="-fPIC" \ CFLAGS="-fPIC" \ LIBS="-larchive -lssh2 -llzma -llz4 -lz -lzstd -lssl -lcrypto -liconv -lunistring -lbrotlicommon -lcrypt32" \ --sysconfdir=/etc \ --prefix=$PREFIX || cat config.log - name: "🚧 Make (do not use -j)" run: | set -x pwd ls -la cd ../lnav-build pwd ls -la ls -l Makefile make CFLAGS="-c" strip -s src/lnav.exe - name: "📦 Package for distribution" run: | set -x cd ../lnav-build export PREFIX=$PWD/lnav make install ldd $PREFIX/bin/lnav.exe | grep /usr | cut -d' ' -f3 | xargs -I {} cp {} $PREFIX/bin/ mkdir -p lib/terminfo/78 cp -r /usr/lib/terminfo/78/xterm-256color lib/terminfo/78/ mkdir -p ../lnav zip -r ../lnav/lnav-${{ github.ref_name }}-windows-amd64.zip lnav lib - name: "💉 Basic test" run: | set -x cd ../lnav-build export PREFIX=$PWD/lnav $PREFIX/bin/lnav.exe -n ../lnav/test/logfile_multiline.0 - name: "⬆️ Upload a Build Artifact" uses: actions/upload-artifact@v4 with: name: lnav-${{ github.ref_name }}-windows-amd64.zip path: lnav-${{ github.ref_name }}-windows-amd64.zip if-no-files-found: error - name: "🎁 Create Release" id: create_release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ github.ref_name }} release_name: Release ${{ github.ref_name }} draft: false prerelease: false - name: "⬆️ Upload Release Asset" id: upload-release-asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps asset_path: ./lnav-${{ github.ref_name }}-windows-amd64.zip asset_name: lnav-${{ github.ref_name }}-windows-amd64.zip asset_content_type: application/zip