Skip to content
Snippets Groups Projects
release.sh 1.48 KiB
Newer Older
Xiao Gui's avatar
Xiao Gui committed
#! /bin/bash

# This is an automated script for TravisCI
# It is triggered on push to master
# It will create a release and publish to the github repo

OWNER=HumanBrainProject
REPO=interactive-viewer
USER=xgui3783
EMAIL=xgui3783@gmail.com
#GITHUB_TOKEN should be populated by CI

test -z "$GITHUB_TOKEN" && exit 1

TAG=$(jq '.version' < package.json)
TAG=${TAG#\"}
TAG=v${TAG%\"}
OBJECT=$(git rev-parse HEAD)
DATE=$(date --iso-8601=seconds)
BODY='{
  "tag": "'$TAG'",
  "message": "Annotated release for '$TAG'",
  "object": "'$OBJECT'",
  "type": "commit",
  "tagger": {
    "name": "'$USER'",
    "email": "'$EMAIL'",
    "date": "'$DATE'"
  }
}'

# Create annotated tag

echo curl -XPOST \
  -H "Accept: application/vnd.github.v3+json" \
  -u "$USER:$GITHUB_TOKEN"\
  -d "$BODY" \
  https://api.github.com/repos/$OWNER/$REPO/git/tags

# Push tag to remote

CREATE_REF_BODY='{
  "ref":"refs/tags/'$TAG'",
  "sha":"'$OBJECT'"
}'

echo curl -XPOST\
  -u "$USER:$GITHUB_TOKEN"\
  -H "Accept: application/vnd.github.v3+json" \
  -d "$CREATE_REF_BODY"\
  https://api.github.com/repos/$OWNER/$REPO/git/refs

# Create release

RELEASE_NOTES=$(sed -e 's/$/\\n/' docs/releases/$TAG.md)

RELEASE_BODY='{
  "tag_name":"'$TAG'",
  "name":"'$TAG'",
  "body":"'$(echo $RELEASE_NOTES)'",
  "target_commitish": "master",
  "draft":false,
  "prerelease":false
}'

echo curl -XPOST\
  -u "$USER:$GITHUB_TOKEN"\
  -H "Accept: application/vnd.github.v3+json" \
  -d "$RELEASE_BODY" \
  https://api.github.com/repos/$OWNER/$REPO/releases