mirror of
https://github.com/zardus/ctf-tools
synced 2024-11-10 08:24:12 +00:00
Merge pull request #120 from StevenVanAcker/improved-build-status
Improved build status
This commit is contained in:
commit
14600cd006
16 changed files with 303 additions and 70 deletions
88
.travis.yml
88
.travis.yml
|
@ -10,73 +10,25 @@ before_install:
|
|||
|
||||
env:
|
||||
|
||||
# Tests for fedora
|
||||
- DISTRO="fedora" TOOL="apktool binwalk burpsuite capstone checksec commix
|
||||
cribdrag dirsearch elfkickers evilize exetractor foresight gdb gdb-heap gef
|
||||
jdgui libheap pdf-parser peda peepdf pkcrack python-paddingoracle pyvmmonitor
|
||||
radare2 reveng ropper rp++ scrdec18 shellnoob shellsploit ssh_decoder
|
||||
steganabara stegsolve subbrute unicorn virtualsocket"
|
||||
- DISTRO="fedora" TOOL="xortool yafu z3"
|
||||
- DISTRO="fedora" EXPECTFAIL=1 TOOL="afl android-sdk angr barf beef bindead
|
||||
codereason df dirb dislocker elfparser featherduster firmware-mod-kit
|
||||
hash-identifier hashkill hashpump hashpump-partialhash honggfuzz keystone
|
||||
littleblackbox mitmproxy msieve panda pathgrind pemcrack preeny pwndbg pwntools
|
||||
python-pin qemu qira snowman sonic-visualizer sqlmap sslsplit stegdetect
|
||||
taintgrind testdisk tor-browser veles villoc wcc xrop xspy zsteg"
|
||||
# - DISTRO="fedora" TOOL="cross2 crosstool" ### takes too long for travis-ci
|
||||
|
||||
# Tests for archlinux
|
||||
- DISTRO="archlinux" TOOL="afl android-sdk apktool binwalk burpsuite checksec
|
||||
commix cribdrag df dirb dirsearch evilize exetractor featherduster
|
||||
firmware-mod-kit foresight gdb gdb-heap gef"
|
||||
- DISTRO="archlinux" TOOL="hashpump hashpump-partialhash jdgui keystone libheap
|
||||
msieve pdf-parser peda peepdf pemcrack pkcrack pwndbg pwntools
|
||||
python-paddingoracle pyvmmonitor radare2 reveng rp++ scrdec18 shellnoob
|
||||
ssh_decoder sslsplit steganabara stegsolve subbrute testdisk tor-browser
|
||||
unicorn veles virtualsocket xortool xrop yafu zsteg elfkickers honggfuzz"
|
||||
- DISTRO="archlinux" EXPECTFAIL=1 TOOL="angr barf beef bindead capstone
|
||||
codereason dislocker elfparser hash-identifier hashkill littleblackbox
|
||||
mitmproxy panda pathgrind preeny qira ropper shellsploit"
|
||||
- DISTRO="archlinux" EXPECTFAIL=1 TOOL="snowman sonic-visualizer sqlmap
|
||||
stegdetect taintgrind villoc wcc xspy z3 python-pin"
|
||||
# - DISTRO="archlinux" TOOL="cross2 crosstool qemu" ### takes too long for travis-ci
|
||||
|
||||
# Tests for trusty, grouped together to most optimally use a single build process
|
||||
- DISTRO="trusty" TOOL="afl android-sdk apktool barf binwalk burpsuite capstone
|
||||
checksec codereason"
|
||||
- DISTRO="trusty" TOOL="commix cribdrag df dirb dirsearch dislocker elfkickers
|
||||
elfparser evilize exetractor jdgui keystone libheap littleblackbox mitmproxy
|
||||
msieve pdf-parser peda peepdf pemcrack scrdec18 shellnoob shellsploit snowman
|
||||
sqlmap ssh_decoder sslsplit steganabara stegsolve subbrute bindead hashkill
|
||||
python-pin qira stegdetect villoc zsteg"
|
||||
- DISTRO="trusty" TOOL="featherduster firmware-mod-kit foresight gdb gdb-heap
|
||||
gef hash-identifier hashpump hashpump-partialhash honggfuzz testdisk
|
||||
tor-browser unicorn virtualsocket xortool xspy yafu z3"
|
||||
- DISTRO="trusty" TOOL="pkcrack preeny pwndbg python-paddingoracle pyvmmonitor
|
||||
radare2 reveng ropper rp++"
|
||||
- DISTRO="trusty" TOOL="qemu"
|
||||
- DISTRO="trusty" EXPECTFAIL=1 TOOL="angr beef panda pathgrind pwntools
|
||||
sonic-visualizer taintgrind veles wcc xrop"
|
||||
# - DISTRO="trusty" TOOL="cross2 crosstool" ### takes too long for travis-ci
|
||||
|
||||
# Tests for xenial, grouped together to most optimally use a single build process
|
||||
- DISTRO="xenial" TOOL="afl android-sdk angr apktool barf binwalk burpsuite
|
||||
capstone checksec codereason"
|
||||
- DISTRO="xenial" TOOL="commix cribdrag df dirb dirsearch dislocker elfkickers
|
||||
elfparser evilize exetractor jdgui keystone libheap littleblackbox mitmproxy
|
||||
msieve pdf-parser peda peepdf pemcrack scrdec18 shellnoob shellsploit snowman
|
||||
sqlmap ssh_decoder sslsplit steganabara stegsolve subbrute"
|
||||
- DISTRO="xenial" TOOL="featherduster firmware-mod-kit foresight gdb gdb-heap
|
||||
gef hash-identifier hashpump hashpump-partialhash honggfuzz testdisk
|
||||
tor-browser unicorn veles virtualsocket xortool xspy yafu z3"
|
||||
- DISTRO="xenial" TOOL="pkcrack preeny pwndbg python-paddingoracle pyvmmonitor
|
||||
radare2 reveng ropper rp++"
|
||||
- DISTRO="xenial" TOOL="qemu"
|
||||
- DISTRO="xenial" EXPECTFAIL=1 TOOL="beef bindead hashkill panda pathgrind
|
||||
pwntools python-pin qira sonic-visualizer stegdetect taintgrind villoc wcc xrop
|
||||
zsteg"
|
||||
# - DISTRO="xenial" TOOL="cross2 crosstool" ### takes too long for travis-ci
|
||||
|
||||
- DISTRO='archlinux' TOOL='afl android-sdk apktool binwalk burpsuite checksec df dirb elfkickers evilize featherduster firmware-mod-kit gdb hashpump hashpump-partialhash honggfuzz jdgui keystone libheap msieve pkcrack pwndbg pwntools python-paddingoracle pyvmmonitor radare2 sqlmap sslsplit testdisk tor-browser unicorn veles virtualsocket xortool xrop yafu zsteg' # estimated 2000 seconds
|
||||
- DISTRO='archlinux' TOOL='commix cribdrag dirsearch exetractor foresight gef pdf-parser peda peepdf pemcrack rp++ scrdec18 shellnoob ssh_decoder steganabara stegsolve subbrute' # estimated 16 seconds
|
||||
- DISTRO='archlinux' EXPECTFAIL=1 TOOL='qira taintgrind z3' # estimated 1831 seconds
|
||||
- DISTRO='archlinux' EXPECTFAIL=1 TOOL='angr barf beef bindead capstone codereason dislocker elfparser gdb-heap hash-identifier hashkill littleblackbox mitmproxy panda pathgrind preeny python-pin reveng ropper shellsploit snowman sonic-visualizer stegdetect villoc wcc xspy' # estimated 764 seconds
|
||||
# - DISTRO='archlinux' TOOL='qemu' # unknown duration...
|
||||
- DISTRO='fedora' TOOL='apktool binwalk burpsuite capstone checksec commix cribdrag dirsearch elfkickers evilize exetractor foresight gdb gef jdgui libheap pdf-parser peda peepdf pkcrack python-paddingoracle pyvmmonitor radare2 ropper rp++ scrdec18 shellnoob shellsploit ssh_decoder steganabara stegsolve subbrute unicorn virtualsocket xortool yafu z3' # estimated 1779 seconds
|
||||
- DISTRO='fedora' EXPECTFAIL=1 TOOL='afl android-sdk angr barf beef bindead codereason df dirb dislocker elfparser featherduster firmware-mod-kit gdb-heap hash-identifier hashkill hashpump hashpump-partialhash honggfuzz keystone littleblackbox mitmproxy msieve panda pathgrind pemcrack preeny pwndbg pwntools python-pin qemu qira reveng snowman sonic-visualizer sqlmap sslsplit stegdetect taintgrind testdisk tor-browser veles villoc wcc xrop xspy zsteg' # estimated 549 seconds
|
||||
- DISTRO='trusty' TOOL='barf capstone jdgui stegdetect yafu z3' # estimated 1995 seconds
|
||||
- DISTRO='trusty' TOOL='qemu' # estimated 2160 seconds
|
||||
- DISTRO='trusty' TOOL='apktool bindead featherduster gdb qira snowman' # estimated 1976 seconds
|
||||
- DISTRO='trusty' TOOL='afl android-sdk burpsuite codereason df firmware-mod-kit hashkill keystone mitmproxy pwndbg pwntools radare2 unicorn' # estimated 1976 seconds
|
||||
- DISTRO='trusty' TOOL='binwalk checksec commix cribdrag dirb dirsearch dislocker elfkickers elfparser evilize exetractor foresight gef hash-identifier hashpump hashpump-partialhash honggfuzz libheap littleblackbox msieve pdf-parser peda peepdf pemcrack pkcrack preeny python-paddingoracle python-pin pyvmmonitor ropper rp++ scrdec18 shellnoob shellsploit sqlmap ssh_decoder sslsplit steganabara stegsolve subbrute testdisk tor-browser villoc virtualsocket xortool xspy zsteg' # estimated 374 seconds
|
||||
- DISTRO='trusty' EXPECTFAIL=1 TOOL='angr panda sonic-visualizer' # estimated 1877 seconds
|
||||
- DISTRO='trusty' EXPECTFAIL=1 TOOL='beef gdb-heap pathgrind reveng taintgrind veles wcc xrop' # estimated 303 seconds
|
||||
- DISTRO='xenial' TOOL='qemu' # estimated 1928 seconds
|
||||
- DISTRO='xenial' TOOL='barf keystone mitmproxy z3' # estimated 1920 seconds
|
||||
- DISTRO='xenial' TOOL='afl android-sdk angr firmware-mod-kit gdb snowman' # estimated 1985 seconds
|
||||
- DISTRO='xenial' TOOL='apktool binwalk burpsuite capstone checksec codereason commix cribdrag df dirb dirsearch dislocker elfkickers elfparser evilize exetractor featherduster foresight gef hash-identifier hashpump hashpump-partialhash honggfuzz jdgui libheap littleblackbox msieve pdf-parser peda peepdf pemcrack pkcrack preeny pwndbg python-paddingoracle pyvmmonitor radare2 ropper rp++ scrdec18 shellnoob shellsploit sqlmap ssh_decoder sslsplit steganabara stegsolve subbrute testdisk tor-browser unicorn veles virtualsocket xortool xspy yafu' # estimated 1230 seconds
|
||||
- DISTRO='xenial' EXPECTFAIL=1 TOOL='beef bindead gdb-heap hashkill panda pathgrind pwntools python-pin qira reveng sonic-visualizer stegdetect taintgrind villoc wcc xrop zsteg' # estimated 457 seconds
|
||||
script:
|
||||
- ./bin/travis-ci.sh
|
||||
- travis_wait 50 ./bin/travis-ci.sh
|
||||
|
||||
|
|
3
.travis.yml.footer
Normal file
3
.travis.yml.footer
Normal file
|
@ -0,0 +1,3 @@
|
|||
script:
|
||||
- travis_wait 50 ./bin/travis-ci.sh
|
||||
|
12
.travis.yml.header
Normal file
12
.travis.yml.header
Normal file
|
@ -0,0 +1,12 @@
|
|||
language: bash
|
||||
sudo: required
|
||||
services:
|
||||
- docker
|
||||
before_install:
|
||||
- if [ "$DISTRO" = "archlinux" ]; then docker build -t ctftools -f Dockerfile.archlinux .; fi
|
||||
- if [ "$DISTRO" = "fedora" ]; then docker build -t ctftools -f Dockerfile.fedora .; fi
|
||||
- if [ "$DISTRO" = "xenial" ]; then docker build -t ctftools -f Dockerfile.xenial .; fi
|
||||
- if [ "$DISTRO" = "trusty" ]; then docker build -t ctftools -f Dockerfile .; fi
|
||||
|
||||
env:
|
||||
|
|
@ -20,7 +20,7 @@ RUN pacman -Syu --noconfirm --needed \
|
|||
python2-pip python-pip \
|
||||
unzip python-virtualenvwrapper \
|
||||
zsh grml-zsh-config \
|
||||
sudo \
|
||||
sudo which \
|
||||
&& pacman -Scc --noconfirm
|
||||
|
||||
RUN useradd -m ctf
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
This is a collection of setup scripts to create an install of various security research tools.
|
||||
Of course, this isn't a hard problem, but it's really nice to have them in one place that's easily deployable to new machines and so forth.
|
||||
The install-scripts for these tools are checked regularly, the results can be found on [the build status page](_buildstatus/index.md).
|
||||
|
||||
Installers for the following tools are included:
|
||||
|
||||
|
|
BIN
_buildstatus/fail.png
Normal file
BIN
_buildstatus/fail.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.3 KiB |
93
_buildstatus/index.md
Normal file
93
_buildstatus/index.md
Normal file
|
@ -0,0 +1,93 @@
|
|||
| archlinux | fedora | trusty | xenial
|
||||
----- | ----- | ----- | ----- | -----
|
||||
![success](success.png) | 54 | 37 | 73 | 67
|
||||
![fail](fail.png) | 29 | 47 | 11 | 17
|
||||
![unknown](unknown.png) | 1 | 0 | 0 | 0
|
||||
total | 84 | 84 | 84 | 84
|
||||
|
||||
| archlinux | fedora | trusty | xenial
|
||||
----- | ----- | ----- | ----- | -----
|
||||
afl | ![success](success.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
|
||||
android-sdk | ![success](success.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
|
||||
angr | ![fail](fail.png) | ![fail](fail.png) | ![fail](fail.png) | ![success](success.png)
|
||||
apktool | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
|
||||
barf | ![fail](fail.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
|
||||
beef | ![fail](fail.png) | ![fail](fail.png) | ![fail](fail.png) | ![fail](fail.png)
|
||||
bindead | ![fail](fail.png) | ![fail](fail.png) | ![success](success.png) | ![fail](fail.png)
|
||||
binwalk | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
|
||||
burpsuite | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
|
||||
capstone | ![fail](fail.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
|
||||
checksec | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
|
||||
codereason | ![fail](fail.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
|
||||
commix | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
|
||||
cribdrag | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
|
||||
df | ![success](success.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
|
||||
dirb | ![success](success.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
|
||||
dirsearch | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
|
||||
dislocker | ![fail](fail.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
|
||||
elfkickers | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
|
||||
elfparser | ![fail](fail.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
|
||||
evilize | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
|
||||
exetractor | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
|
||||
featherduster | ![success](success.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
|
||||
firmware-mod-kit | ![success](success.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
|
||||
foresight | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
|
||||
gdb | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
|
||||
gdb-heap | ![fail](fail.png) | ![fail](fail.png) | ![fail](fail.png) | ![fail](fail.png)
|
||||
gef | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
|
||||
hash-identifier | ![fail](fail.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
|
||||
hashkill | ![fail](fail.png) | ![fail](fail.png) | ![success](success.png) | ![fail](fail.png)
|
||||
hashpump | ![success](success.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
|
||||
hashpump-partialhash | ![success](success.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
|
||||
honggfuzz | ![success](success.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
|
||||
jdgui | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
|
||||
keystone | ![success](success.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
|
||||
libheap | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
|
||||
littleblackbox | ![fail](fail.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
|
||||
mitmproxy | ![fail](fail.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
|
||||
msieve | ![success](success.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
|
||||
panda | ![fail](fail.png) | ![fail](fail.png) | ![fail](fail.png) | ![fail](fail.png)
|
||||
pathgrind | ![fail](fail.png) | ![fail](fail.png) | ![fail](fail.png) | ![fail](fail.png)
|
||||
pdf-parser | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
|
||||
peda | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
|
||||
peepdf | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
|
||||
pemcrack | ![success](success.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
|
||||
pkcrack | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
|
||||
preeny | ![fail](fail.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
|
||||
pwndbg | ![success](success.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
|
||||
pwntools | ![success](success.png) | ![fail](fail.png) | ![success](success.png) | ![fail](fail.png)
|
||||
python-paddingoracle | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
|
||||
python-pin | ![fail](fail.png) | ![fail](fail.png) | ![success](success.png) | ![fail](fail.png)
|
||||
pyvmmonitor | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
|
||||
qemu | ![unknown](unknown.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
|
||||
qira | ![fail](fail.png) | ![fail](fail.png) | ![success](success.png) | ![fail](fail.png)
|
||||
radare2 | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
|
||||
reveng | ![fail](fail.png) | ![fail](fail.png) | ![fail](fail.png) | ![fail](fail.png)
|
||||
ropper | ![fail](fail.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
|
||||
rp++ | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
|
||||
scrdec18 | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
|
||||
shellnoob | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
|
||||
shellsploit | ![fail](fail.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
|
||||
snowman | ![fail](fail.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
|
||||
sonic-visualizer | ![fail](fail.png) | ![fail](fail.png) | ![fail](fail.png) | ![fail](fail.png)
|
||||
sqlmap | ![success](success.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
|
||||
ssh_decoder | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
|
||||
sslsplit | ![success](success.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
|
||||
steganabara | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
|
||||
stegdetect | ![fail](fail.png) | ![fail](fail.png) | ![success](success.png) | ![fail](fail.png)
|
||||
stegsolve | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
|
||||
subbrute | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
|
||||
taintgrind | ![fail](fail.png) | ![fail](fail.png) | ![fail](fail.png) | ![fail](fail.png)
|
||||
testdisk | ![success](success.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
|
||||
tor-browser | ![success](success.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
|
||||
unicorn | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
|
||||
veles | ![success](success.png) | ![fail](fail.png) | ![fail](fail.png) | ![success](success.png)
|
||||
villoc | ![fail](fail.png) | ![fail](fail.png) | ![success](success.png) | ![fail](fail.png)
|
||||
virtualsocket | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
|
||||
wcc | ![fail](fail.png) | ![fail](fail.png) | ![fail](fail.png) | ![fail](fail.png)
|
||||
xortool | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
|
||||
xrop | ![success](success.png) | ![fail](fail.png) | ![fail](fail.png) | ![fail](fail.png)
|
||||
xspy | ![fail](fail.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
|
||||
yafu | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
|
||||
z3 | ![fail](fail.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
|
||||
zsteg | ![success](success.png) | ![fail](fail.png) | ![success](success.png) | ![fail](fail.png)
|
BIN
_buildstatus/success.png
Normal file
BIN
_buildstatus/success.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.5 KiB |
BIN
_buildstatus/unknown.png
Normal file
BIN
_buildstatus/unknown.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 633 B |
13
bin/travis-ci-status/Dockerfile
Normal file
13
bin/travis-ci-status/Dockerfile
Normal file
|
@ -0,0 +1,13 @@
|
|||
FROM ubuntu:xenial
|
||||
|
||||
RUN apt-get update
|
||||
RUN apt-get -y install python-software-properties software-properties-common build-essential git python-pip ipython vim
|
||||
RUN apt-add-repository ppa:brightbox/ruby-ng
|
||||
RUN apt-get update
|
||||
RUN apt-get -y install ruby2.1 ruby2.1-dev ruby-switch
|
||||
RUN ruby-switch --set ruby2.1
|
||||
|
||||
RUN gem install travis -v 1.8.8 --no-rdoc --no-ri
|
||||
RUN pip install binpacking
|
||||
|
||||
WORKDIR /gitdata
|
23
bin/travis-ci-status/fetch_latest_timingdata.inside-docker.sh
Executable file
23
bin/travis-ci-status/fetch_latest_timingdata.inside-docker.sh
Executable file
|
@ -0,0 +1,23 @@
|
|||
#!/bin/bash
|
||||
|
||||
tmpfile=$(mktemp)
|
||||
|
||||
# Fetch data
|
||||
(
|
||||
for i in $(travis show --skip-completion-check --no-interactive | grep '^#' | awk '{print $1}' | tr "#" " ");
|
||||
do
|
||||
travis logs --skip-completion-check --no-interactive "$i" | grep '^\[ACCOUNTING\]=====\[' | cut -d' ' -f2-5
|
||||
done
|
||||
) > $tmpfile
|
||||
|
||||
# generate travis-ci data
|
||||
(
|
||||
cat /gitdata/.travis.yml.header
|
||||
/gitdata/bin/travis-ci-status/make_binpacked_travis_ci_conf.py $tmpfile
|
||||
cat /gitdata/.travis.yml.footer
|
||||
) > /gitdata/.travis.yml
|
||||
|
||||
# generate build status data
|
||||
/gitdata/bin/travis-ci-status/make_build_status_md.py $tmpfile > /gitdata/_buildstatus/index.md
|
||||
|
||||
rm -f $tmpfile
|
17
bin/travis-ci-status/fetch_latest_timingdata.sh
Executable file
17
bin/travis-ci-status/fetch_latest_timingdata.sh
Executable file
|
@ -0,0 +1,17 @@
|
|||
#!/bin/bash
|
||||
|
||||
dockerimage=ctf-tools-travisbuildcheck
|
||||
gitdir=$(git rev-parse --show-toplevel)
|
||||
|
||||
if ! docker history $dockerimage &> /dev/null;
|
||||
then
|
||||
echo "Docker image \"$dockerimage\" does not exist. Run"
|
||||
echo
|
||||
echo " docker build -t $dockerimage ."
|
||||
echo
|
||||
echo "first, then retry this command."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
docker run --rm -v $gitdir:/gitdata -ti $dockerimage /gitdata/bin/travis-ci-status/fetch_latest_timingdata.inside-docker.sh
|
||||
|
53
bin/travis-ci-status/make_binpacked_travis_ci_conf.py
Executable file
53
bin/travis-ci-status/make_binpacked_travis_ci_conf.py
Executable file
|
@ -0,0 +1,53 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
import binpacking, sys, pprint
|
||||
|
||||
MAXBINDURATION = 2000 # seconds
|
||||
|
||||
def parseOutput(fn):
|
||||
lines = [l.strip() for l in open(fn).readlines()]
|
||||
out = {}
|
||||
|
||||
for l in lines:
|
||||
[distro, tool, success, duration] = l.split(" ")
|
||||
if not distro in out:
|
||||
out[distro] = {}
|
||||
out[distro][tool] = {
|
||||
"success": success == "SUCCEEDED",
|
||||
"duration": int(duration)
|
||||
}
|
||||
return out
|
||||
|
||||
def printBins(timingdata, distro, expectfail):
|
||||
inputs = dict([(t, v["duration"]) for (t, v) in timingdata[distro].items() if v["success"] != expectfail])
|
||||
bins = binpacking.to_constant_volume(inputs, MAXBINDURATION)
|
||||
|
||||
for b in bins:
|
||||
tools = " ".join(sorted(b.keys()))
|
||||
duration = sum(b.values())
|
||||
if expectfail:
|
||||
print("- DISTRO='{}' EXPECTFAIL=1 TOOL='{}' # estimated {} seconds".format(distro, tools, duration))
|
||||
else:
|
||||
print("- DISTRO='{}' TOOL='{}' # estimated {} seconds".format(distro, tools, duration))
|
||||
|
||||
def getToolsFromTimingdata(timingdata):
|
||||
out = {}
|
||||
for d, dd in timingdata.items():
|
||||
for t, td in dd.items():
|
||||
out[t] = 1
|
||||
return out.keys()
|
||||
|
||||
if __name__ == "__main__":
|
||||
timingdata = parseOutput(sys.argv[1])
|
||||
distros = sorted(timingdata.keys()) # all distros seen during previous build
|
||||
tools = sorted(getToolsFromTimingdata(timingdata)) # all tools seen during previous build
|
||||
|
||||
for distro in distros:
|
||||
printBins(timingdata, distro, False)
|
||||
printBins(timingdata, distro, True)
|
||||
|
||||
# no timing data, assume the build took too long for this tool on this distro
|
||||
nodata = [t for t in tools if t not in timingdata[distro]]
|
||||
for tool in nodata:
|
||||
print("# - DISTRO='{}' TOOL='{}' # unknown duration...".format(distro, tool))
|
||||
|
44
bin/travis-ci-status/make_build_status_md.py
Executable file
44
bin/travis-ci-status/make_build_status_md.py
Executable file
|
@ -0,0 +1,44 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
from make_binpacked_travis_ci_conf import *
|
||||
|
||||
if __name__ == "__main__":
|
||||
timingdata = parseOutput(sys.argv[1])
|
||||
distros = sorted(timingdata.keys()) # all distros seen during previous build
|
||||
tools = sorted(getToolsFromTimingdata(timingdata)) # all tools seen during previous build
|
||||
|
||||
fulltable = []
|
||||
summarytable = []
|
||||
|
||||
fulltable += [" | ".join([""] + distros)]
|
||||
fulltable += [" | ".join(["-----"] * (1+len(distros)))]
|
||||
|
||||
summary = {}
|
||||
for tool in tools:
|
||||
parts = []
|
||||
for distro in distros:
|
||||
val = "unknown"
|
||||
if tool in timingdata[distro]:
|
||||
val = "success" if timingdata[distro][tool]["success"] else "fail"
|
||||
parts += [val]
|
||||
if distro not in summary:
|
||||
summary[distro] = {
|
||||
"unknown": 0,
|
||||
"success": 0,
|
||||
"fail": 0,
|
||||
"total": 0,
|
||||
}
|
||||
summary[distro][val] += 1
|
||||
summary[distro]["total"] += 1
|
||||
fulltable += [" | ".join([tool] + ["![{0}]({0}.png)".format(x) for x in parts])]
|
||||
|
||||
summarytable += [" | ".join([""] + distros)]
|
||||
summarytable += [" | ".join(["-----"] * (1+len(distros)))]
|
||||
for x in ["success", "fail", "unknown"]:
|
||||
summarytable += [" | ".join(["![{0}]({0}.png)".format(x)] + ["{}".format(summary[d][x]) for d in distros])]
|
||||
for x in ["total"]:
|
||||
summarytable += [" | ".join([x] + ["{}".format(summary[d][x]) for d in distros])]
|
||||
|
||||
print("\n".join(summarytable))
|
||||
print("")
|
||||
print("\n".join(fulltable))
|
|
@ -2,6 +2,25 @@
|
|||
|
||||
export EXPECTFAIL=${EXPECTFAIL:-0}
|
||||
|
||||
function flipstatus() {
|
||||
if [ $EXPECTFAIL -eq 0 ];
|
||||
then
|
||||
echo $1
|
||||
else
|
||||
case $1 in
|
||||
FAILED)
|
||||
echo SUCCEEDED
|
||||
;;
|
||||
SUCCEEDED)
|
||||
echo FAILED
|
||||
;;
|
||||
*)
|
||||
echo $1
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
}
|
||||
|
||||
starttime=$SECONDS
|
||||
failed=""
|
||||
for t in $TOOL;
|
||||
|
@ -12,6 +31,9 @@ do
|
|||
if ! docker run -e EXPECTFAIL="$EXPECTFAIL" -e TOOL="$t" --rm ctftools bash -ic 'manage-tools -s -f -v test $TOOL';
|
||||
then
|
||||
failed="$failed$t "
|
||||
echo "[ACCOUNTING]=====[ $DISTRO $t $(flipstatus FAILED) $((SECONDS - toolstarttime)) ]"
|
||||
else
|
||||
echo "[ACCOUNTING]=====[ $DISTRO $t $(flipstatus SUCCEEDED) $((SECONDS - toolstarttime)) ]"
|
||||
fi
|
||||
echo "[-] TOOL $t TEST ENDED: $((SECONDS - toolstarttime)) seconds, $((SECONDS - starttime)) seconds since start of script."
|
||||
set -e
|
||||
|
|
|
@ -2,6 +2,6 @@
|
|||
|
||||
git clone --depth 1 https://github.com/BR903/ELFkickers
|
||||
cd ELFkickers
|
||||
make -j
|
||||
make -j $(nproc)
|
||||
cd ..
|
||||
mv ELFkickers/bin ./bin
|
||||
|
|
Loading…
Reference in a new issue