nnn

mirror of https://github.com/jarun/nnn
Log | Files | Refs | README | LICENSE

config.yml (4364B)


      1 version: 2
      2 
      3 jobs:
      4   compile:
      5     docker:
      6       - image: ubuntu:24.04
      7         working_directory: ~/nnn
      8         environment:
      9           CI_FORCE_TEST: 1
     10     parallelism: 4
     11     steps:
     12       - run:
     13           command: |
     14             apt update -qq
     15             DEBIAN_FRONTEND="noninteractive" TZ="America/New_York" apt-get -y install tzdata
     16             apt install -y --no-install-recommends software-properties-common wget gpg-agent shellcheck
     17             apt install -y --no-install-recommends git make pkg-config libncurses-dev libreadline-dev
     18             apt install -y --no-install-recommends gcc-9 gcc-10 gcc-11 gcc-12 gcc-13 gcc-14
     19             apt install -y --no-install-recommends clang-14 clang-15 clang-16 clang-17 clang-18
     20             apt install -y --no-install-recommends clang-tidy-18
     21       - checkout
     22       - run:
     23           command: |
     24             export CFLAGS=-Werror
     25             make clean
     26             echo
     27             echo "########## gcc-9 ##########"
     28             CC=gcc-9 make strip
     29             ls -l nnn
     30             make clean
     31             echo
     32             echo "########## gcc-10 ##########"
     33             CC=gcc-10 make strip
     34             ls -l nnn
     35             make clean
     36             echo
     37             echo "########## gcc-11 ##########"
     38             CC=gcc-11 make strip
     39             ls -l nnn
     40             make clean
     41             echo
     42             echo "########## gcc-12 ##########"
     43             CC=gcc-12 make strip
     44             ls -l nnn
     45             make clean
     46             echo
     47             echo "########## gcc-13 ##########"
     48             CC=gcc-13 make strip
     49             ls -l nnn
     50             make clean
     51             echo
     52             echo "########## gcc-14 ##########"
     53             CC=gcc-14 make strip
     54             ls -l nnn
     55             make clean
     56             echo
     57             echo "########## clang-14 ##########"
     58             CC=clang-14 make strip
     59             ls -l nnn
     60             make clean
     61             echo
     62             echo "########## clang-15 ##########"
     63             CC=clang-15 make strip
     64             ls -l nnn
     65             make clean
     66             echo
     67             echo "########## clang-16 ##########"
     68             CC=clang-16 make strip
     69             ls -l nnn
     70             make clean
     71             echo
     72             echo "########## clang-17 ##########"
     73             CC=clang-17 make strip
     74             ls -l nnn
     75             make clean
     76             echo
     77             echo "########## clang-18 ##########"
     78             CC=clang-18 make strip
     79             ls -l nnn
     80             make clean
     81             echo
     82             echo "########## clang-tidy-18 ##########"
     83             clang-tidy-18 src/* -- -I/usr/include -I/usr/include/ncursesw
     84             echo "########## shellcheck ##########"
     85             find plugins/ -type f ! \( -name "*.md" -o -name "*-mac" \) -exec shellcheck {} +
     86 
     87   package-and-publish:
     88     machine: true
     89     working_directory: ~/nnn
     90     steps:
     91       - checkout
     92       - run:
     93           name: "auto-generate packages"
     94           command: |
     95             # Create dist directory if it doesn't exist
     96             mkdir ./dist
     97             # Clean up
     98             rm -rf ./dist/*
     99             # Pack source
    100             git archive -o ../${CIRCLE_PROJECT_REPONAME}-${CIRCLE_TAG}.tar.gz --format tar.gz --prefix=${CIRCLE_PROJECT_REPONAME}-${CIRCLE_TAG#v}/ ${CIRCLE_TAG}
    101             # Use latest installed python3 from pyenv
    102             export PYENV_VERSION="$(pyenv versions | grep -Po '\b3\.\d+\.\d+' | tail -1)"
    103             #pip install packagecore
    104             #packagecore -c misc/packagecore/packagecore.yaml -o ./dist/ ${CIRCLE_TAG#v}
    105             # Move source pack to dist
    106             mv ../${CIRCLE_PROJECT_REPONAME}-${CIRCLE_TAG}.tar.gz ./dist/
    107 
    108       - run:
    109           name: "publish to GitHub"
    110           command: |
    111             go install github.com/tcnksm/ghr@latest
    112             ghr -t ${GITHUB_API_TOKEN} -u ${CIRCLE_PROJECT_USERNAME} -r ${CIRCLE_PROJECT_REPONAME} -c ${CIRCLE_SHA1} -replace ${CIRCLE_TAG} ./dist/
    113 
    114 workflows:
    115   version: 2
    116 
    117   CircleCI:
    118     jobs: &all-tests
    119       - compile
    120 
    121   nightly:
    122     triggers:
    123       - schedule:
    124           cron: "0 0 * * 6"
    125           filters:
    126             branches:
    127               only:
    128                 - master
    129     jobs: *all-tests
    130 
    131   publish-github-release:
    132     jobs:
    133       - package-and-publish:
    134           filters:
    135             tags:
    136               only: /^v.*/
    137             branches:
    138               ignore: /.*/