File: upload-travis-build-artifacts

package info (click to toggle)
yaws 2.0.8%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 8,084 kB
  • sloc: erlang: 42,190; sh: 2,543; javascript: 1,459; ansic: 890; makefile: 878; lisp: 79; python: 34; xml: 12; php: 1
file content (75 lines) | stat: -rwxr-xr-x 2,626 bytes parent folder | download
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#!/usr/bin/env bash

if test ${TRAVIS} != true; then
    echo "WARNING: upload skipped: not a travis build"
    exit 0
fi
if ! test -d ${TRAVIS_BUILD_DIR}/testsuite/logs; then
    echo "WARNING: Upload skipped: build artifacts not found"
    exit 0
fi
if test -z ${TRAVIS_OTP_RELEASE} || test -z ${TRAVIS_BRANCH} || test -z ${TRAVIS_BUILD_NUMBER}; then
    echo "ERROR; missing travis env variables"
    exit 1
fi
if test -z ${GH_TOKEN}; then
    echo "ERROR; missing github token"
    exit 1
fi

GH_USER=capflam
GH_REPO=yaws-travis-build-artifacts
GH_URL="https://api.github.com/repos/${GH_USER}/${GH_REPO}"
GH_SECURE_URL="https://${GH_TOKEN}@api.github.com/repos/${GH_USER}/${GH_REPO}"
GH_UPLOADS_URL="https://${GH_TOKEN}@uploads.github.com/repos/${GH_USER}/${GH_REPO}"

echo "Upload build artifacts from the travis buils ${TRAVIS_BUILD_NUMBER} on the \
branch ${TRAVIS_BRANCH} using Erlang release ${TRAVIS_OTP_RELEASE}..."

# Create the tarball to upload
ARTIFACT=testsuite_logs-build_${TRAVIS_BUILD_NUMBER}-branch_${TRAVIS_BRANCH}-erlang_${TRAVIS_OTP_RELEASE}
ARCHIVE=${ARTIFACT}.tar.gz
echo "  * Create ${ARCHIVE}"
(
    cd /tmp
    cp -r ${TRAVIS_BUILD_DIR}/testsuite/logs ${ARTIFACT}
    tar zcf ${ARCHIVE} ${ARTIFACT}
)
if ! test -f /tmp/${ARCHIVE}; then
    echo "ERROR: failed to create ${ARCHIVE}"
    exit 1
fi

# Check if the release corresponding to this travis build exists
if ! $(curl -fs "${GH_URL}/releases/tags/travis_build_${TRAVIS_BUILD_NUMBER}" -o /dev/null); then
    # It does not exist, so create it now
    curl -fs -X POST  -H "Content-Type: application/json"             \
         -d "{\"tag_name\": \"travis_build_${TRAVIS_BUILD_NUMBER}\"}" \
         "${GH_SECURE_URL}/releases" -o /dev/null
    if test $? -ne 0; then
        echo "ERROR: Failed to create release travis_build_${TRAVIS_BUILD_NUMBER} !"
    else
        echo "  * Release travis_build_${TRAVIS_BUILD_NUMBER} created"
    fi
else
    echo "  * Release travis_build_${TRAVIS_BUILD_NUMBER} already exists"
fi

# Get release id
RELEASE=$(curl -fs "${GH_URL}/releases/tags/travis_build_${TRAVIS_BUILD_NUMBER}");
if test $? -ne 0; then
    echo "ERROR: failed to retrive release ID corresponding to travis_build_${TRAVIS_BUILD_NUMBER}"
    exit 1
fi
RELEASE_ID=$(echo ${RELEASE} | jq '.id')

echo "  * Upload ${ARCHIVE}"
curl -fs -X POST  -H "Content-Type: application/gzip" \
     --data-binary @/tmp/${ARCHIVE}                   \
     "${GH_UPLOADS_URL}/releases/${RELEASE_ID}/assets?name=${ARCHIVE}&label=${ARTIFACT}" -o /dev/null
if test $? -ne 0; then
    echo "ERROR: Failed to upload ${ARCHIVE}"
    exit 1
fi

echo "[DONE]"