lnav/.github/workflows/c-cpp.yml
2022-09-10 09:48:42 -07:00

192 lines
6.1 KiB
YAML

name: ci-build
on:
push:
branches: [ master ]
tags: ['*']
pull_request:
branches: [ master ]
jobs:
coverage:
runs-on: self-hosted
steps:
- uses: actions/checkout@v2
# - 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@v2
- 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@v2
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@v2
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@v2
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