Merge branch 'master' into 10293-cr-log-and-output-in-wb
[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"
35
36 (cd sdk/python && python setup.py sdist)
37 sdk=$(cd sdk/python/dist && ls -t arvados-python-client-*.tar.gz | head -n1)
38
39 (cd sdk/cwl && python setup.py sdist)
40 runner=$(cd sdk/cwl/dist && ls -t arvados-cwl-runner-*.tar.gz | head -n1)
41
42 rm -rf sdk/cwl/cwltool_dist
43 mkdir -p sdk/cwl/cwltool_dist
44 if [[ -n "$CWLTOOL" ]] ; then
45     (cd "$CWLTOOL" && python setup.py sdist)
46     cwltool=$(cd "$CWLTOOL/dist" && ls -t cwltool-*.tar.gz | head -n1)
47     cp "$CWLTOOL/dist/$cwltool" $WORKSPACE/sdk/cwl/cwltool_dist
48 fi
49
50 . build/run-library.sh
51
52 python_sdk_ts=$(cd sdk/python && timestamp_from_git)
53 cwl_runner_ts=$(cd sdk/cwl && timestamp_from_git)
54
55 if [[ $python_sdk_ts -gt $cwl_runner_ts ]]; then
56     gittag=$(git log --first-parent --max-count=1 --format=format:%H sdk/python)
57 else
58     gittag=$(git log --first-parent --max-count=1 --format=format:%H sdk/cwl)
59 fi
60
61 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"
62 echo arv-keepdocker arvados/jobs $gittag
63 arv-keepdocker arvados/jobs $gittag