Skip to content
This repository was archived by the owner on Dec 9, 2024. It is now read-only.

Commit 775cbc6

Browse files
author
Andres
committed
Enable automatic releases
1 parent 427af1f commit 775cbc6

File tree

3 files changed

+80
-2
lines changed

3 files changed

+80
-2
lines changed

.travis.yml

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,22 @@ services:
1111
env:
1212
global:
1313
- KUBELESS_VERSION=0.1.0
14+
secure: "dPepHM5HTKrejZx4Ec3q2t/T0bqM6K5boZpVLdKAnHy4pIQ2+AQwYBRJO+DixQeD4vinhEEucDJuE9zJIe+nghB7RsdVMCMw8xDK7/QAW+rw+YO22sWcIye9kWYmHnteq6q+wAzcnOvyJ/UHY8ZhOXm42Lu6ZWc2u7ksibFGri2eC53Ot529P44Yy4gGUE+hZ14mXvivCSgiQp/cEEK/t7+t1ISl0BK97P7SeSCuNSZzXGu9aZTSjcaM52XqFwfnzn2Lb+qGqj8mthZOUBgnAnP5e9mmVPfeZURlFRDGZVY74erJarSlSNkko7RDZ5s8J0HQ/ur+KXWh9d9PICuJb5mPyfAVK9hYjd8R+hZ7MAH3UBQBIyJekflDCWiPVZLX3fsKsX4vX20lpYrEMwO7HSzrJiX2XHEnQU8aPJ+GtONpoeVH5c7MWhv5XpCo03nSMvxkIBe9P8tv4Wz1bTgU48NUn+noxz5aTu+G/35SCIeGfQOpWp1FSNFoB0NKOh9P15Uwlhot+gEA7XsxkCPpn4da8fs3rjcLhLCiZqUo1Anwitx3hMtViXqkR/QAlaEErIYqjLdIj15xfIND5JmveP7WveHotboprlblyMOqSDHc2B9L24RrlKNiZNS3W8Mr8qLh8S7kFqH9ixCPQRj+kfLrs/SWEbTY8tU/uTulHDA="
1415
install:
1516
- ./scripts/install-test-environment.sh
1617
- npm install -g serverless
17-
- npm install
18+
- npm install
19+
after_success:
20+
- |
21+
if [[ "$TRAVIS_BRANCH" == master && \
22+
"$TRAVIS_PULL_REQUEST" == false ]]; then
23+
REPO_DOMAIN=serverless REPO_NAME=serverless-kubeless ./scripts/release.sh
24+
fi
25+
deploy:
26+
provider: npm
27+
28+
api_key:
29+
secure: "rgqKaazC2RPDx4BJobB/XZcpClX7H4XZeZb2MHB6GYoibzf1EqDdHK3eGX2MwbtN9I2xMAn6h88gjbPSvPZrxIWQAfrrbwzPzOtteFfiRWWzlQpuNEuLTs3pAHpsYfrbJGMBBMLVq2X0+i1NGrEIlQfRfQvCBkV1xdCO0nRxheKhoikWCAVkd8MXDmmTre9+Uxk44MjjSKpn3eqM/IDMHDUoisLFnw4lsbM80TjMHNagQozBeoGQwLK81+0ZbFhW9qCSw8GeSznqJdkeJzz3iIYQs9JMqBv9VpLADTpPgUdbMvvtKhL5nGaJVDQCmLjVxmo9lZDNfrCjVq5zARt6s688tUqXZmC+pqJXPVqCTcs5UgcOUgU2hZejv0croE55lMNcCKTaICBg9MVBLUNEYXZVOKArAl9uvRc/FNOnnv7PVHMYC0iHBQADuIgskOBCboV6kC2EBH0h2mZdm4Y2hoFOD/ZEwfDtfWlrakKxPsD3zbDPhS31CjOQwp1UJqbj94w9ztXiqEI5B/Oo7OEpQ72aHbtlysQPKaa2BAyzxICJzB17otJjP7pcj3lmwiU3scIJjbzCAzPRKByQmyjGhHLZItJRMn6CMWY/EeodZXRrqej6ToTLNyzSt8c7r9xl8W9ViyRJxFbElYkZ/OLgLwc3sD1sB0vVvWfoM9xyzQI="
30+
on:
31+
tags: true
32+
repo: serverless/serverless-kubeless

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "serverless-kubeless",
3-
"version": "0.1.11",
3+
"version": "0.1.12",
44
"description": "This plugin enables support for Kubeless within the [Serverless Framework](https://github.com/serverless).",
55
"main": "index.js",
66
"directories": {

scripts/release.sh

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
#!/bin/bash
2+
set -e
3+
4+
function get_version {
5+
echo $(jq -r .version ./package.json)
6+
}
7+
8+
function check_tag {
9+
local tag=$1
10+
published_tags=`curl -s https://api.github.com/repos/$REPO_DOMAIN/$REPO_NAME/tags`
11+
already_published=`echo $published_tags | jq ".[] | select(.name == \"$tag\")"`
12+
echo $already_published
13+
}
14+
15+
function release_tag {
16+
local tag=$1
17+
git fetch --tags
18+
local last_tag=`curl -s https://api.github.com/repos/$REPO_DOMAIN/$REPO_NAME/tags | jq --raw-output '.[0].name'`
19+
local release_notes=`git log $last_tag..HEAD --oneline`
20+
# Parse relase notes like an list (e.g):
21+
# - 12345abcd Merge pull request #1 Title
22+
# - 12345efgh commit included 1
23+
# - 12345hijk commit included 2
24+
local parsed_release_notes=$(echo "$release_notes" | sed -n -e 'H;${x;s/\n/\\n - /g;s/^\\n//;p;}')
25+
parsed_release_notes=`echo "$parsed_release_notes" | sed -e '${s/ \( - [^ ]* Merge pull request\)/\1/g;}'`
26+
release=`curl -H "Authorization: token $ACCESS_TOKEN" -s --data "{
27+
\"tag_name\": \"$tag\",
28+
\"target_commitish\": \"master\",
29+
\"name\": \"$REPO_NAME-$tag\",
30+
\"body\": \"Release $tag includes the following commits: \n$parsed_release_notes\",
31+
\"draft\": false,
32+
\"prerelease\": false
33+
}" https://api.github.com/repos/$REPO_DOMAIN/$REPO_NAME/releases`
34+
echo $release | jq ".id"
35+
}
36+
37+
version=`get_version`
38+
39+
if [[ -z $REPO_NAME ]]; then
40+
echo "Github repository not specified" > /dev/stderr
41+
exit 1
42+
fi
43+
44+
repo_check=`curl -s https://api.github.com/repos/$REPO_DOMAIN/$REPO_NAME`
45+
if [[ $repo_check == *"Not Found"* ]]; then
46+
echo "Not found a Github repository for $REPO_DOMAIN/$REPO_NAME, it is not possible to publish it" > /dev/stderr
47+
exit 1
48+
else
49+
tag=v$version
50+
already_published=`check_tag $tag`
51+
if [[ -z $already_published ]]; then
52+
echo "Releasing $tag in Github"
53+
release_id=`release_tag $tag`
54+
if [ "$release_id" == "null" ]; then
55+
echo "There was an error trying to release $tag" > /dev/stderr
56+
exit 1
57+
else
58+
echo "Released $tag with ID $release_id"
59+
fi
60+
else
61+
echo "Skipping Github release since $tag was already released"
62+
fi
63+
fi

0 commit comments

Comments
 (0)