mirror of
https://github.com/clearml/dropbear
synced 2025-06-26 18:17:32 +00:00
Add github actions build workflow, remove travis CI
This commit is contained in:
parent
e05945f67a
commit
6138bdc62f
141
.github/workflows/build.yml
vendored
Normal file
141
.github/workflows/build.yml
vendored
Normal file
@ -0,0 +1,141 @@
|
|||||||
|
# Can be used locally with https://github.com/nektos/act
|
||||||
|
|
||||||
|
name: BuildTest
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ${{ matrix.os || 'ubuntu-20.04' }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- name: plain linux
|
||||||
|
|
||||||
|
- name: multi binary
|
||||||
|
multi: 1
|
||||||
|
|
||||||
|
- name: bundled libtom, bionic , no writev()
|
||||||
|
# test can use an older distro with bundled libtommath
|
||||||
|
os: ubuntu-18.04
|
||||||
|
configure_flags: --enable-bundled-libtom
|
||||||
|
# NOWRITEV is unrelated, test here to save a job
|
||||||
|
nowritev: 1
|
||||||
|
# pytest relies on python3.7
|
||||||
|
skipcheck: True
|
||||||
|
|
||||||
|
- name: linux clang
|
||||||
|
cc: clang
|
||||||
|
|
||||||
|
- name: macos 10.15
|
||||||
|
os: macos-10.15
|
||||||
|
cc: clang
|
||||||
|
# OS X says daemon() and utmp are deprecated
|
||||||
|
wextraflags: -Wno-deprecated-declarations -Werror
|
||||||
|
|
||||||
|
- name: macos 11
|
||||||
|
os: macos-11
|
||||||
|
cc: clang
|
||||||
|
# OS X says daemon() and utmp are deprecated
|
||||||
|
wextraflags: -Wno-deprecated-declarations -Werror
|
||||||
|
|
||||||
|
# Fuzzers run standalone. A bit superfluous with cifuzz, but
|
||||||
|
# good to run the whole corpus to keep it working.
|
||||||
|
- name: fuzzing with address sanitizer
|
||||||
|
configure_flags: --enable-fuzz --disable-harden --enable-bundled-libtom
|
||||||
|
ldflags: -fsanitize=address
|
||||||
|
extracflags: -fsanitize=address
|
||||||
|
fuzz: True
|
||||||
|
cc: clang
|
||||||
|
|
||||||
|
# Undefined Behaviour sanitizer
|
||||||
|
- name: fuzzing with undefined behaviour sanitizer
|
||||||
|
configure_flags: --enable-fuzz --disable-harden --enable-bundled-libtom
|
||||||
|
ldflags: -fsanitize=undefined
|
||||||
|
# don't fail with alignment due to https://github.com/libtom/libtomcrypt/issues/549
|
||||||
|
extracflags: -fsanitize=undefined -fno-sanitize-recover=undefined -fsanitize-recover=alignment
|
||||||
|
fuzz: True
|
||||||
|
cc: clang
|
||||||
|
|
||||||
|
env:
|
||||||
|
MULTI: ${{ matrix.multi }}
|
||||||
|
WEXTRAFLAGS: ${{ matrix.wextraflags || '-Werror' }}
|
||||||
|
CC: ${{ matrix.cc || 'gcc' }}
|
||||||
|
LDFLAGS: ${{ matrix.ldflags }}
|
||||||
|
EXTRACFLAGS: ${{ matrix.extracflags }}
|
||||||
|
CONFIGURE_FLAGS: ${{ matrix.configure_flags }}
|
||||||
|
# for fuzzing
|
||||||
|
CXX: clang++
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: deps
|
||||||
|
run: |
|
||||||
|
apt-get -y update
|
||||||
|
apt-get -y install zlib1g-dev libtomcrypt-dev libtommath-dev mercurial python3-venv socat $CC
|
||||||
|
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: cache pip
|
||||||
|
uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: test/venv
|
||||||
|
key: ${{ runner.os }}-pip-${{ hashFiles('test/requirements.txt') }}
|
||||||
|
restore-keys: ${{ runner.os }}-pip-
|
||||||
|
|
||||||
|
- name: cache fuzzcorpus
|
||||||
|
uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: fuzzcorpus
|
||||||
|
key: "hg.ucc/fuzzcorpus"
|
||||||
|
|
||||||
|
- name: configure
|
||||||
|
run: ./configure $CONFIGURE_FLAGS CFLAGS="-O2 -Wall -Wno-pointer-sign $WEXTRAFLAGS $EXTRACFLAGS" --prefix="$HOME/inst" || (cat config.log; exit 1)
|
||||||
|
|
||||||
|
- name: nowritev
|
||||||
|
if: ${{ matrix.nowritev }}
|
||||||
|
run: sed -i -e s/HAVE_WRITEV/DONT_HAVE_WRITEV/ config.h
|
||||||
|
|
||||||
|
- name: make
|
||||||
|
run: make -j3
|
||||||
|
|
||||||
|
- name: multilink
|
||||||
|
if: ${{ matrix.multi }}
|
||||||
|
run: make multilink
|
||||||
|
|
||||||
|
- name: makefuzz
|
||||||
|
run: make fuzzstandalone
|
||||||
|
if: ${{ matrix.fuzz }}
|
||||||
|
|
||||||
|
# avoid concurrent install, osx/freebsd is racey (https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=208093)
|
||||||
|
- name: make install
|
||||||
|
run: make install
|
||||||
|
|
||||||
|
- name: keys
|
||||||
|
run: |
|
||||||
|
mkdir -p ~/.ssh
|
||||||
|
~/inst/bin/dropbearkey -t ecdsa -f ~/.ssh/id_dropbear | grep ^ecdsa > ~/.ssh/authorized_keys
|
||||||
|
|
||||||
|
- name: check
|
||||||
|
if: ${{ !matrix.skipcheck }}
|
||||||
|
# run in a TTY for some tests
|
||||||
|
run: socat - EXEC:"make check",pty
|
||||||
|
|
||||||
|
# Sanity check that the binary runs
|
||||||
|
- name: genrsa
|
||||||
|
run: ~/inst/bin/dropbearkey -t rsa -f testrsa
|
||||||
|
- name: gendss
|
||||||
|
run: ~/inst/bin/dropbearkey -t dss -f testdss
|
||||||
|
- name: genecdsa256
|
||||||
|
run: ~/inst/bin/dropbearkey -t ecdsa -f testec256 -s 256
|
||||||
|
- name: genecdsa384
|
||||||
|
run: ~/inst/bin/dropbearkey -t ecdsa -f testec384 -s 384
|
||||||
|
- name: genecdsa521
|
||||||
|
run: ~/inst/bin/dropbearkey -t ecdsa -f testec521 -s 521
|
||||||
|
- name: gened25519
|
||||||
|
run: ~/inst/bin/dropbearkey -t ed25519 -f tested25519
|
||||||
|
|
||||||
|
- name: fuzz
|
||||||
|
if: ${{ matrix.fuzz }}
|
||||||
|
run: ./fuzzers_test.sh
|
76
.travis.yml
76
.travis.yml
@ -1,76 +0,0 @@
|
|||||||
language: c
|
|
||||||
|
|
||||||
git:
|
|
||||||
depth: 3
|
|
||||||
|
|
||||||
# use focal which provides libtommath 1.20
|
|
||||||
dist: focal
|
|
||||||
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- name: "plain linux"
|
|
||||||
compiler: gcc
|
|
||||||
env: WEXTRAFLAGS=-Werror
|
|
||||||
- name: "multi binary"
|
|
||||||
env: MULTI=1 WEXTRAFLAGS=-Werror
|
|
||||||
- name: "bundled libtom, xenial, no writev()"
|
|
||||||
# NOWRITEV is unrelated to libtom/xenial, test here to save a job
|
|
||||||
env: CONFIGURE_FLAGS=--enable-bundled-libtom WEXTRAFLAGS=-Werror NOWRITEV=1
|
|
||||||
# can use an older distro with bundled libtom
|
|
||||||
dist: xenial
|
|
||||||
- name: "linux clang"
|
|
||||||
os: linux
|
|
||||||
compiler: clang
|
|
||||||
env: WEXTRAFLAGS=-Werror
|
|
||||||
- name: "osx"
|
|
||||||
os: osx
|
|
||||||
compiler: clang
|
|
||||||
# OS X says daemon() and utmp are deprecated
|
|
||||||
env: WEXTRAFLAGS="-Wno-deprecated-declarations -Werror"
|
|
||||||
# Note: the fuzzing malloc wrapper doesn't replace free() in system libtomcrypt, so need bundled.
|
|
||||||
# Address sanitizer
|
|
||||||
- name: "fuzz-asan"
|
|
||||||
env: DO_FUZZ=1 CONFIGURE_FLAGS="--enable-fuzz --disable-harden --enable-bundled-libtom" WEXTRAFLAGS=-Werror LDFLAGS=-fsanitize=address EXTRACFLAGS=-fsanitize=address CXX=clang++
|
|
||||||
compiler: clang
|
|
||||||
# Undefined Behaviour sanitizer
|
|
||||||
- name: "fuzz-ubsan"
|
|
||||||
# don't fail with alignment due to https://github.com/libtom/libtomcrypt/issues/549
|
|
||||||
env: DO_FUZZ=1 CONFIGURE_FLAGS="--enable-fuzz --disable-harden --enable-bundled-libtom" WEXTRAFLAGS=-Werror LDFLAGS=-fsanitize=undefined EXTRACFLAGS="-fsanitize=undefined -fno-sanitize-recover=undefined -fsanitize-recover=alignment" CXX=clang++
|
|
||||||
compiler: clang
|
|
||||||
|
|
||||||
# container-based builds
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
packages:
|
|
||||||
# packages list: https://github.com/travis-ci/apt-package-whitelist/blob/master/ubuntu-precise
|
|
||||||
- zlib1g-dev
|
|
||||||
- libtomcrypt-dev
|
|
||||||
- libtommath-dev
|
|
||||||
- mercurial
|
|
||||||
|
|
||||||
before_install:
|
|
||||||
- if [ "$CC" = "clang" ]; then WEXTRAFLAGS="$WEXTRAFLAGS -Wno-error=incompatible-library-redeclaration" ; fi # workaround
|
|
||||||
|
|
||||||
install:
|
|
||||||
- ./configure $CONFIGURE_FLAGS CFLAGS="-O2 -Wall -Wno-pointer-sign $WEXTRAFLAGS $EXTRACFLAGS" --prefix="$HOME/inst" || (cat config.log; exit 1)
|
|
||||||
- if [ "$NOWRITEV" = "1" ]; then sed -i -e s/HAVE_WRITEV/DONT_HAVE_WRITEV/ config.h ; fi
|
|
||||||
- make lint
|
|
||||||
- make -j3
|
|
||||||
- test -z $DO_FUZZ || make fuzzstandalone
|
|
||||||
# avoid concurrent install, osx/freebsd is racey (https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=208093)
|
|
||||||
- make install
|
|
||||||
|
|
||||||
script:
|
|
||||||
- ~/inst/bin/dropbearkey -t rsa -f testrsa
|
|
||||||
- ~/inst/bin/dropbearkey -t dss -f testdss
|
|
||||||
- ~/inst/bin/dropbearkey -t ecdsa -f testec256 -s 256
|
|
||||||
- ~/inst/bin/dropbearkey -t ecdsa -f testec384 -s 384
|
|
||||||
- ~/inst/bin/dropbearkey -t ecdsa -f testec521 -s 521
|
|
||||||
- ~/inst/bin/dropbearkey -t ed25519 -f tested25519
|
|
||||||
- test -z $DO_FUZZ || ./fuzzers_test.sh
|
|
||||||
|
|
||||||
branches:
|
|
||||||
only:
|
|
||||||
- master
|
|
||||||
- coverity
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user