summaryrefslogtreecommitdiff
path: root/Biz/Cloud/post-receive
blob: ede443fc07d1cfee113b14649d01282f423b3ccb (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
#!/usr/bin/env bash
#
# creates an archive of a git repo on push
#
# unfortunately the nixos gitolite module does not copy the 'commonHooks'
# properly, so we have to manually deploy this like so:
#
#     scp Biz/Cloud/post-receive \
#         root@simatime.com:/srv/git/.gitolite/hooks/common/post-receive
#
# One time only:
#
#     ssh root@simatime.com "sudo -u git gitolite setup -ho"
#
# Also on first-time setup, might need to manually check the permissions are
# correct on $webroot/archive or wherever else.
#
set -euo pipefail
while read oldrev newrev refname
do
    repo=$(basename $PWD | sed 's/.git//g')
    branch=$(git rev-parse --symbolic --abbrev-ref $refname)
    webroot="/srv/www/simatime.com/"
    outdir="$webroot/archive/$repo/$branch"
    mkdir -p $outdir
    echo " making:  https://simatime.com/archive/$repo/$branch/$newrev.tar.gz"
    git archive "$branch" --prefix "$repo-$branch/" --format tar \
        | gzip > "$outdir/$newrev.tar.gz"
    echo " making:  https://simatime.com/archive/$repo/$branch/$newrev.sha256"
    hash=$(nix-prefetch-url --unpack file://$outdir/$newrev.tar.gz 2>/dev/null)
    echo "$hash" > "$outdir/$newrev.sha256"
    echo " commit:  $newrev"
    echo " sha256:  $hash"
    echo " in biz:  deps update $repo --brach $branch --rev $newrev --attribute sha256=$hash"
    chmod -R 755 "$webroot/archive"
done