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: /.*/