mirror of
https://github.com/stedolan/jq.git
synced 2024-05-11 05:55:39 +00:00
211 lines
7.1 KiB
YAML
211 lines
7.1 KiB
YAML
sudo: false
|
|
|
|
language: c
|
|
|
|
stages:
|
|
- name: test
|
|
|
|
- name: build
|
|
# Don't run build stage for pull requests to save time and resources.
|
|
if: type != pull_request
|
|
|
|
|
|
jobs:
|
|
include:
|
|
# Build with gcc and run tests on Ubuntu.
|
|
- &test-ubuntu
|
|
stage: test
|
|
os: linux
|
|
compiler: gcc
|
|
python: 3.6
|
|
|
|
addons:
|
|
apt:
|
|
packages:
|
|
- valgrind
|
|
- bison
|
|
- automake
|
|
|
|
before_install:
|
|
- uname -s
|
|
- pyenv install -s 3.6.7
|
|
- rm src/{lexer,parser}.{c,h}
|
|
- sed -i.bak '/^AM_INIT_AUTOMAKE(\[-Wno-portability 1\.14\])$/s/14/11/' modules/oniguruma/configure.ac
|
|
|
|
install:
|
|
- pyenv global 3.6.7
|
|
- pip3 install pipenv
|
|
- pushd docs && pipenv sync && popd
|
|
- wget http://ftp.debian.org/debian/pool/main/b/bison/bison_3.0.2.dfsg-2_amd64.deb
|
|
- ar p bison_3.0.2.dfsg-2_amd64.deb data.tar.xz | tar xJ
|
|
- if [ -n "$COVERAGE" ]; then pip install --user cpp-coveralls; fi
|
|
|
|
before_script:
|
|
# If this is OS X we'll get bison from brew, else we'll get bison
|
|
# from the .deb unpacked above in the install section.
|
|
- PATH=/usr/local/opt/bison/bin:$PWD/usr/bin:$PATH
|
|
- echo SHELL=$SHELL
|
|
- echo PATH=$PATH
|
|
- which bison
|
|
- bison --version
|
|
- autoreconf -if
|
|
- ./configure --with-oniguruma=builtin YACC="$(which bison) -y" $COVERAGE
|
|
|
|
script:
|
|
# When using the bison from Debian we need to tell that bison where
|
|
# to find its data. Yay non-relocatable code. Not.
|
|
- echo PATH=$PATH
|
|
- which bison
|
|
- make BISON_PKGDATADIR=$PWD/usr/share/bison src/parser.c || make src/parser.c
|
|
# Make dist!
|
|
#
|
|
# Make it first to fail the build early, before we test with
|
|
# valgrind.
|
|
- make dist
|
|
# Build and test the dist (without valgrind)
|
|
- |
|
|
(
|
|
tar xvf jq-`scripts/version`.tar.gz &&
|
|
cd jq-`scripts/version` &&
|
|
pwd &&
|
|
./configure --disable-valgrind --with-oniguruma=builtin YACC="$(which bison) -y" $COVERAGE &&
|
|
make BISON_PKGDATADIR=$PWD/usr/share/bison src/parser.c || make src/parser.c &&
|
|
make -j4 &&
|
|
make check -j4 || true
|
|
)
|
|
# Build and test the HEAD
|
|
- make -j4
|
|
- make check -j4
|
|
|
|
after_failure:
|
|
- cat test-suite.log
|
|
- cat tests/*.log
|
|
|
|
|
|
# Build with clang and run tests on Ubuntu.
|
|
- <<: *test-ubuntu
|
|
compiler: clang
|
|
|
|
|
|
# Build with gcc and run tests with gcov on Ubuntu.
|
|
- <<: *test-ubuntu
|
|
env: COVERAGE="--disable-valgrind --enable-gcov"
|
|
|
|
after_script:
|
|
- rm -rf src/.libs # don't care about coverage for libjq
|
|
- coveralls --gcov-options '\-lp'
|
|
-e src/lexer.c -e src/parser.c -e src/jv_dtoa.c
|
|
|
|
|
|
# Build with gcc and run tests on macOS.
|
|
- &test-osx
|
|
<<: *test-ubuntu
|
|
os: osx
|
|
|
|
before_install:
|
|
- uname -s
|
|
- brew update
|
|
- brew install flex bison
|
|
- brew upgrade pyenv
|
|
- pyenv install -s 3.6.7
|
|
- rm src/{lexer,parser}.{c,h}
|
|
- sed -i.bak '/^AM_INIT_AUTOMAKE(\[-Wno-portability 1\.14\])$/s/14/11/' modules/oniguruma/configure.ac
|
|
|
|
install:
|
|
- pyenv global 3.6.7
|
|
- pip3 install pipenv
|
|
- pushd docs && pipenv sync && popd
|
|
- if [ -n "$COVERAGE" ]; then pip install --user cpp-coveralls; fi
|
|
|
|
|
|
# Build with clang and run tests on macOS.
|
|
- <<: *test-osx
|
|
compiler: clang
|
|
|
|
|
|
# Build with gcc and run tests on Alpine Linux v3.7 (inside chroot).
|
|
# Note: Alpine uses musl libc.
|
|
- &test-alpine
|
|
stage: test
|
|
os: linux
|
|
language: minimal
|
|
compiler: gcc
|
|
sudo: true
|
|
|
|
before_install:
|
|
- "wget 'https://raw.githubusercontent.com/alpinelinux/alpine-chroot-install/v0.7.0/alpine-chroot-install' \
|
|
&& echo '090d323d887ef3a2fd4e752428553f22a52b87bb alpine-chroot-install' | sha1sum -c || travis_terminate 1"
|
|
- alpine() { /alpine/enter-chroot -u "$USER" "$@"; }
|
|
|
|
install:
|
|
- sudo sh alpine-chroot-install -b v3.7 -a "$ARCH"
|
|
-p 'build-base automake autoconf bison git libtool oniguruma-dev python3 python3-dev libxml2-dev libxslt-dev'
|
|
- /alpine/enter-chroot pip3 install pipenv
|
|
- alpine sh -c 'cd docs && pipenv sync'
|
|
|
|
before_script:
|
|
- autoreconf -if
|
|
|
|
script:
|
|
- alpine ./configure --disable-docs
|
|
- alpine make
|
|
- alpine make check
|
|
|
|
after_failure:
|
|
- cat test-suite.log
|
|
- cat tests/*.log
|
|
|
|
# Build release binary statically linked with musl libc on Alpine Linux
|
|
# (inside chroot). If building a tagged commit, then deploy release
|
|
# tarball to GitHub Releases.
|
|
- &build-alpine
|
|
<<: *test-alpine
|
|
stage: build
|
|
env: ARCH=x86_64
|
|
|
|
script:
|
|
- alpine ./configure --disable-docs --enable-all-static
|
|
CFLAGS='-Os -static -no-pie' CXXFLAGS='-Os -static -no-pie'
|
|
- alpine make
|
|
- alpine strip jq
|
|
|
|
- jq -V
|
|
- ls -lah jq
|
|
- file jq
|
|
# Ensure that the built executable is really statically linked.
|
|
- file jq | grep -Fw 'statically linked'
|
|
|
|
before_deploy:
|
|
- PKGNAME="jq-$TRAVIS_TAG-$ARCH-linux"
|
|
- mkdir $PKGNAME && mv jq $PKGNAME/
|
|
- tar -czf $PKGNAME.tar.gz $PKGNAME/
|
|
- sha256sum $PKGNAME.tar.gz > $PKGNAME.tar.gz.sha256
|
|
|
|
deploy:
|
|
provider: releases
|
|
api_key:
|
|
secure: # TODO: put encrypted GitHub token here!
|
|
file: jq-$TRAVIS_TAG-*.tar.gz*
|
|
file_glob: true
|
|
skip_cleanup: true
|
|
on:
|
|
tags: true
|
|
|
|
# Build binaries for other architectures using QEMU user-mode emulation.
|
|
- <<: *build-alpine
|
|
env: ARCH=x86
|
|
|
|
- <<: *build-alpine
|
|
env: ARCH=aarch64
|
|
|
|
- <<: *build-alpine
|
|
env: ARCH=armhf
|
|
|
|
- <<: *build-alpine
|
|
env: ARCH=ppc64le
|
|
|
|
|
|
notifications:
|
|
email: false
|
|
|