| #!/bin/bash |
| |
| # this script packages up all the binaries, and a script (deploy.sh) |
| # to twiddle with the server and the binaries |
| |
| set -ex |
| |
| # Put the date first so we can sort. |
| if [[ -z "$VERSION" ]]; then |
| VERSION=$(date --iso-8601=minutes | tr -d ':' | sed 's|\+.*$||') |
| if [[ -d .git ]]; then |
| VERSION=${VERSION}-$(git show --pretty=format:%h -q) |
| fi |
| fi |
| |
| set -u |
| |
| out=zoekt-${VERSION} |
| mkdir -p ${out} |
| |
| for d in $(find cmd -maxdepth 1 -type d) |
| do |
| go build -tags netgo -ldflags "-X github.com/google/zoekt.Version=$VERSION" -o ${out}/$(basename $d) github.com/google/zoekt/$d |
| done |
| |
| cat <<EOF > ${out}/deploy.sh |
| #!/bin/bash |
| |
| echo "Set the following in the environment." |
| echo "" |
| echo ' export PATH="'$PWD'/bin:$PATH' |
| echo "" |
| |
| set -eux |
| |
| # Allow sandbox to create NS's |
| sudo sh -c 'echo 1 > /proc/sys/kernel/unprivileged_userns_clone' |
| |
| # we mmap the entire index, but typically only want the file contents. |
| sudo sh -c 'echo 1 >/proc/sys/vm/overcommit_memory' |
| |
| # allow bind to 80 and 443 |
| sudo setcap 'cap_net_bind_service=+ep' bin/zoekt-webserver |
| |
| EOF |
| |
| chmod 755 ${out}/* |
| |
| tar --owner=root --group=root -czf zoekt-deploy-${VERSION}.tar.gz ${out}/* |
| |
| rm -rf ${out} |