10647: Script + Dockerfile to build arvados/jobs image from local git checkout, for...
[arvados.git] / build / build-dev-docker-jobs-image.sh
1 #!/bin/bash
2
3 read -rd "\000" helpmessage <<EOF
4 Build an arvados/jobs Docker image from local git tree.
5
6 Intended for use by developers working on arvados-python-client or
7 arvados-cwl-runner and need to run a crunch job with a custom package
8 version.  Also supports building custom cwltool if CWLTOOL is set.
9
10 Syntax:
11         WORKSPACE=/path/to/arvados $(basename $0)
12
13 WORKSPACE=path         Path to the Arvados source tree to build packages from
14 CWLTOOL=path           (optional) Path to cwltool git repository.
15
16 EOF
17
18 set -e
19
20 if [[ -z "$WORKSPACE" ]] ; then
21     echo "$helpmessage"
22     echo
23     echo "Must set WORKSPACE"
24     exit 1
25 fi
26
27 if [[ -z "$ARVADOS_API_HOST" || -z "$ARVADOS_API_TOKEN" ]] ; then
28     echo "$helpmessage"
29     echo
30     echo "Must set ARVADOS_API_HOST and ARVADOS_API_TOKEN"
31     exit 1
32 fi
33
34 (cd "$WORKSPACE/sdk/python" && python setup.py sdist)
35 sdk=$(cd "$WORKSPACE/sdk/python/dist" && ls -t arvados-python-client-*.tar.gz | head -n1)
36
37 (cd "$WORKSPACE/sdk/cwl" && python setup.py sdist)
38 runner=$(cd "$WORKSPACE/sdk/cwl/dist" && ls -t arvados-cwl-runner-*.tar.gz | head -n1)
39
40 rm -rf "$WORKSPACE/sdk/cwl/cwltool_dist"
41 mkdir -p "$WORKSPACE/sdk/cwl/cwltool_dist"
42 if [[ -n "$CWLTOOL" ]] ; then
43     (cd "$CWLTOOL" && python setup.py sdist)
44     cwltool=$(cd "$CWLTOOL/dist" && ls -t cwltool-*.tar.gz | head -n1)
45     cp "$CWLTOOL/dist/$cwltool" $WORKSPACE/sdk/cwl/cwltool_dist
46 fi
47
48 gittag=$(cd "$WORKSPACE/sdk/cwl" && git log --first-parent --max-count=1 --format=format:%H)
49 docker build --build-arg sdk=$sdk --build-arg runner=$runner --build-arg cwltool=$cwltool -f "$WORKSPACE/sdk/dev-jobs.dockerfile" -t arvados/jobs:$gittag "$WORKSPACE/sdk"
50 echo arv-keepdocker arvados/jobs $gittag
51 arv-keepdocker arvados/jobs $gittag