Skip to content

Commit a66e804

Browse files
committedDec 23, 2015
Added GitHub release for deploy.
1 parent 1265212 commit a66e804

File tree

3 files changed

+369
-44
lines changed

3 files changed

+369
-44
lines changed
 

‎scripts/deploy.sh

+117-44
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ __dir__="$(cd "$(dirname "$0")" && pwd)"
44

55
# shellcheck source=scripts/configuration.sh
66
source "$__dir__/configuration.sh"
7+
# shellcheck source=scripts/github.sh
8+
source "$__dir__/github.sh"
79
# shellcheck source=scripts/aws.sh
810
source "$__dir__/aws.sh"
911
# shellcheck source=scripts/io.sh
@@ -59,64 +61,135 @@ function rbx_upload_files {
5961
}
6062

6163
# Build and upload the release tarball to S3.
62-
if [[ $TRAVIS_OS_NAME == osx ]]; then
63-
echo "Deploying release tarball $(rbx_release_name)..."
64+
function rbx_deploy_release_tarball {
65+
if [[ $1 == osx ]]; then
66+
echo "Deploying release tarball $(rbx_release_name)..."
6467

65-
"$__dir__/release.sh" || fail "unable to build release tarball"
68+
"$__dir__/release.sh" || fail "unable to build release tarball"
6669

67-
rbx_upload_files "$(rbx_release_bucket)" "$(rbx_release_name)" "$(rbx_release_name)"
68-
fi
70+
rbx_upload_files "$(rbx_release_bucket)" "$(rbx_release_name)" "$(rbx_release_name)"
71+
fi
72+
}
6973

7074
# Build and upload a Homebrew binary to S3.
71-
if [[ $TRAVIS_OS_NAME == osx ]]; then
72-
echo "Deploying Homebrew binary $(rbx_release_name)..."
75+
function rbx_deploy_homebrew_binary {
76+
if [[ $1 == osx ]]; then
77+
echo "Deploying Homebrew binary $(rbx_release_name)..."
7378

74-
"$__dir__/package.sh" homebrew || fail "unable to build Homebrew binary"
79+
"$__dir__/package.sh" homebrew || fail "unable to build Homebrew binary"
7580

76-
rbx_upload_files "$(rbx_binary_bucket)" "$(rbx_release_name)" \
77-
"$(rbx_release_name)" "/homebrew/"
78-
fi
81+
rbx_upload_files "$(rbx_binary_bucket)" "$(rbx_release_name)" \
82+
"$(rbx_release_name)" "/homebrew/"
83+
fi
84+
}
7985

8086
# Build and upload a binary to S3.
81-
echo "Deploying Travis binary $(rbx_release_name) for ${TRAVIS_OS_NAME}..."
87+
function rbx_deploy_travis_binary {
88+
local os_name vendor_llvm
8289

83-
# TODO: Remove this hack when LLVM 3.6/7 support lands.
84-
vendor_llvm="./vendor/llvm/Release/bin/llvm-config"
85-
if [[ -f "$vendor_llvm" ]]; then
86-
export RBX_BINARY_CONFIG="--llvm-config=$vendor_llvm"
87-
fi
90+
os_name=$1
91+
echo "Deploying Travis binary $(rbx_release_name) for $os_name..."
8892

89-
"$__dir__/package.sh" binary || fail "unable to build binary"
90-
91-
declare -a paths os_releases versions
92-
93-
if [[ $TRAVIS_OS_NAME == linux ]]; then
94-
os_releases=("12.04" "14.04" "15.10")
95-
for (( i=0; i < ${#os_releases[@]}; i++ )); do
96-
paths[i]="/ubuntu/${os_releases[i]}/x86_64/"
93+
# TODO: Remove this hack when LLVM 3.6/7 support lands.
94+
if [[ $os_name == linux ]]; then
95+
vendor_llvm="./vendor/llvm/Release/bin/llvm-config"
96+
if [[ -f "$vendor_llvm" ]]; then
97+
export RBX_BINARY_CONFIG="--llvm-config=$vendor_llvm"
98+
fi
99+
fi
100+
101+
"$__dir__/package.sh" binary || fail "unable to build binary"
102+
103+
declare -a paths os_releases versions
104+
105+
if [[ $os_name == linux ]]; then
106+
os_releases=("12.04" "14.04" "15.10")
107+
for (( i=0; i < ${#os_releases[@]}; i++ )); do
108+
paths[i]="/ubuntu/${os_releases[i]}/x86_64/"
109+
done
110+
elif [[ $os_name == osx ]]; then
111+
os_releases=("10.9" "10.10" "10.11")
112+
for (( i=0; i < ${#os_releases[@]}; i++ )); do
113+
paths[i]="/osx/${os_releases[i]}/x86_64/"
114+
done
115+
else
116+
echo "${FUNCNAME[1]}: no match for OS name"
117+
return
118+
fi
119+
120+
IFS="." read -r -a array <<< "$(rbx_revision_version)"
121+
122+
let i=0
123+
version=""
124+
versions[i]=""
125+
126+
for v in "${array[@]}"; do
127+
let i=i+1
128+
versions[i]="-$version$v"
129+
version="$v."
97130
done
98-
else
99-
os_releases=("10.9" "10.10" "10.11")
100-
for (( i=0; i < ${#os_releases[@]}; i++ )); do
101-
paths[i]="/osx/${os_releases[i]}/x86_64/"
131+
132+
for path in "${paths[@]}"; do
133+
for version in "${versions[@]}"; do
134+
rbx_upload_files "$(rbx_binary_bucket)" "rubinius$version.tar.bz2" \
135+
"$(rbx_release_name)" "$path"
136+
done
102137
done
103-
fi
138+
}
139+
140+
function rbx_deploy_github_release {
141+
local os_name upload_url
104142

105-
IFS="." read -r -a array <<< "$(rbx_revision_version)"
143+
os_name=$1
106144

107-
let i=0
108-
version=""
109-
versions[i]=""
145+
if [[ $os_name == osx ]]; then
146+
upload_url=$(rbx_github_release "$(rbx_revision_version)" "$(rbx_revision_date)")
147+
148+
rbx_github_release_assets "$upload_url" "$(rbx_release_name)"
149+
fi
150+
}
110151

111-
for v in "${array[@]}"; do
112-
let i=i+1
113-
versions[i]="-$version$v"
114-
version="$v."
115-
done
152+
function rbx_deploy_website_release {
153+
local os_name
116154

117-
for path in "${paths[@]}"; do
118-
for version in "${versions[@]}"; do
119-
rbx_upload_files "$(rbx_binary_bucket)" "rubinius$version.tar.bz2" \
120-
"$(rbx_release_name)" "$path"
155+
os_name=$1
156+
157+
if [[ $os_name == osx ]]; then
158+
echo rbx_deploy_website_release
159+
fi
160+
}
161+
162+
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
163+
if [[ -z $1 ]]; then
164+
"$0" release github travis homebrew website
165+
exit $?
166+
fi
167+
168+
for cmd in "${@}"; do
169+
case "$cmd" in
170+
"release")
171+
rbx_deploy_release_tarball "$TRAVIS_OS_NAME"
172+
;;
173+
"github")
174+
rbx_deploy_github_release "$TRAVIS_OS_NAME"
175+
;;
176+
"travis")
177+
rbx_deploy_travis_binary "$TRAVIS_OS_NAME"
178+
;;
179+
"homebrew")
180+
rbx_deploy_homebrew_binary "$TRAVIS_OS_NAME"
181+
;;
182+
"website")
183+
rbx_deploy_website_release "$TRAVIS_OS_NAME"
184+
;;
185+
*)
186+
cat >&2 <<-EOM
187+
Usage: ${0##*/} [release github travis homebrew website]
188+
189+
If no arguments are passed, all deploy tasks are run.
190+
EOM
191+
exit 1
192+
;;
193+
esac
121194
done
122-
done
195+
fi

‎scripts/github.sh

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
__dir__="$(cd "$(dirname "$0")" && pwd)"
2+
3+
function rbx_github_release_url {
4+
echo "https://api.github.com/repos/rubinius/rubinius/releases"
5+
}
6+
7+
function rbx_github_release {
8+
local version date request response upload_url
9+
10+
version=$1
11+
date=$2
12+
13+
request=$(printf '{
14+
"tag_name": "v%s",
15+
"target_commitish": "master",
16+
"name": "Release %s",
17+
"body": "Version %s (%s)",
18+
"draft": false,
19+
"prerelease": false
20+
}' "$version" "$version" "$version" "$date")
21+
22+
response=$(curl --data "$request" \
23+
"$(rbx_github_release_url)?access_token=$GITHUB_OAUTH_TOKEN")
24+
25+
if [ $? -ne 0 ]; then
26+
return
27+
fi
28+
29+
upload_url=$(echo "$response" | "$__dir__/json.sh" -b | \
30+
egrep '\["upload_url"\][[:space:]]\"[^"]+\"' | egrep -o '\"[^"]+{')
31+
32+
let i=${#upload_url}
33+
34+
echo "${upload_url:1:$i-2}"
35+
}
36+
37+
function rbx_github_release_assets {
38+
local upload_url name src file_exts
39+
40+
upload_url=$1
41+
name=$2
42+
43+
file_exts=("" ".sha512")
44+
45+
for ext in "${file_exts[@]}"; do
46+
src="$name$ext"
47+
48+
curl -X PUT -T "$src" \
49+
-H "Content-Type: $(file --mime-type -b "$src")" \
50+
"$upload_url?name=$src&access_token=$GITHUB_OAUTH_TOKEN"
51+
done
52+
}

0 commit comments

Comments
 (0)