name: ci-build on: push: branches: [ master ] paths-ignore: - docs - README.md - NEWS.md pull_request: branches: [ master ] jobs: coverage: runs-on: self-hosted steps: - uses: actions/checkout@v3 # - name: Update apt # run: sudo apt-get update # - name: Install packages # run: sudo apt-get install libncursesw5-dev libpcre++-dev libsqlite3-dev libbz2-dev libcurl4-openssl-dev libreadline-dev zlib1g-dev lcov # - 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 CFLAGS=-g3 CXXFLAGS=-g3 - name: make run: make -j3 - name: make check run: make check - 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/third-party --exclude src/ww898 --exclude src/yajl --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 libpcre3-dev libncurses-dev libsqlite3-dev libbz2-dev libcurl4-openssl-dev libreadline-dev tshark zlib1g-dev - name: autogen run: ./autogen.sh - name: configure run: ./configure --disable-static - name: make run: make -j4 - name: make distcheck run: 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@v3 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: windows-latest 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/libreadline-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 ../lnav/configure \ --enable-static \ LDFLAGS="-static" \ CPPFLAGS="-I../src -I../../lnav/src -I../../lnav/src/fmtlib -O2 -DNCURSES_STATIC" \ CXXFLAGS="-fPIC" \ CFLAGS="-fPIC" \ LIBS="-larchive -lssh2 -llzma -llz4 -lz -lzstd -lssl -lcrypto -liconv -lunistring -lbrotlicommon" \ --sysconfdir=/etc \ --prefix=$PREFIX || cat config.log - name: '🚧 Make (do not use -j)' run: | set -x cd ../lnav-build 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/ 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@v3 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