aboutsummaryrefslogtreecommitdiff
path: root/tools/validate-binary-build.sh
blob: 4d12a5df3432646b79e54c09a57c175ddf4079d6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#!/bin/bash

# Move to top level directory
REAL_PATH=$(realpath $0)
cd "$(dirname "$REAL_PATH")/.."

RES=0

generate_templates () {
    echo Generating templates for $distro
    tools/build.py --template-only --type binary --base $distro --work-dir=$tmpdir
}

check_for_errors () {
    regex=$1
    # Look for all rendered Dockerfile.
    # TODO(mwhahaha): Skip kolla-toolbox for now as it's dependent on specific
    # set of pip installed items.
    find $tmpdir/docker -not -path "*kolla-toolbox*" -name Dockerfile -print0 |
        xargs -0 egrep --color "$regex"
    # NOTE(mandre) grep returns status code of 1 if the expression isn't found
    # xargs returns with status 123 when the command invocation returns with an
    # exit status 1-125, this is what we should be looking for as our "everything
    # is good" code.
    if [ $? -ne 123 ]; then
        RES=1
    fi
}

echo Looking for forbidden instructions in binary image templates

for distro in debian ubuntu centos rhel; do
    tmpdir=$(mktemp -d kolla-templates.XXXXXX --tmpdir)
    generate_templates
    check_for_errors "gem .*install"
    check_for_errors "pip .*install"
    check_for_errors "npm .*install"
    check_for_errors "git .*clone"
    check_for_errors "wget"
    check_for_errors "curl"
    rm -r $tmpdir
done

if [ $RES -eq 1 ]; then
    echo "ERROR Found forbidden instructions in binary image templates"
fi
# Let's not make it fail pep8 job for now
#exit $RES