]>
Commit | Line | Data |
---|---|---|
08535e56 C |
1 | #!/bin/bash |
2 | ||
0e4ffb4b LA |
3 | set -eu |
4 | ||
6b2ef589 C |
5 | shutdown() { |
6 | # Get our process group id | |
6c42d96e | 7 | # shellcheck disable=SC2009 |
0e4ffb4b | 8 | PGID=$(ps -o pgid= $$ | grep -o "[0-9]*") |
6b2ef589 C |
9 | |
10 | # Kill it in a new new process group | |
0e4ffb4b | 11 | setsid kill -- -"$PGID" |
6b2ef589 C |
12 | exit 0 |
13 | } | |
14 | ||
15 | trap "shutdown" SIGINT SIGTERM | |
16 | ||
17 | if [ -z "$1" ]; then | |
18 | echo "Need version as argument" | |
19 | exit -1 | |
20 | fi | |
21 | ||
0e4ffb4b | 22 | if [ -z "$GITHUB_TOKEN" ]; then |
1e5c707b C |
23 | echo "Need GITHUB_TOKEN env set." |
24 | exit -1 | |
25 | fi | |
26 | ||
f6dd7f7d RK |
27 | maintainer_public_key=${MAINTAINER_GPG:-"583A612D890159BE"} |
28 | ||
65db089d C |
29 | peertube_directory=$(basename $(pwd)) |
30 | ||
f05a1c30 | 31 | branch=$(git symbolic-ref --short -q HEAD) |
107c5fcd | 32 | if [ "$branch" != "develop" ] && [[ "$branch" != release/* ]]; then |
5e319fb7 | 33 | echo "Need to be on develop or release branch." |
f05a1c30 C |
34 | exit -1 |
35 | fi | |
36 | ||
1e5c707b | 37 | version="v$1" |
87bec105 | 38 | github_prerelease_option="" |
225553a0 C |
39 | if [[ "$version" = *"-alpha."* ]] || [[ "$version" = *"-beta."* ]] || [[ "$version" = *"-rc."* ]]; then |
40 | echo -e "This is a pre-release.\n" | |
87bec105 C |
41 | github_prerelease_option="--pre-release" |
42 | fi | |
43 | ||
1e5c707b C |
44 | directory_name="peertube-$version" |
45 | zip_name="peertube-$version.zip" | |
6c42d96e | 46 | tar_name="peertube-$version.tar.xz" |
1e5c707b | 47 | |
b73ddc8a | 48 | changelog=$(awk -v version="$version" '/## v/ { printit = $2 == version }; printit;' CHANGELOG.md | grep -v "## $version" | sed '1{/^$/d}') |
e33b53ab | 49 | |
225553a0 | 50 | printf "Changelog will be:\\n\\n%s\\n\\n" "$changelog" |
e33b53ab C |
51 | |
52 | read -p "Are you sure to release? " -n 1 -r | |
53 | echo | |
fc96e83d | 54 | if [[ ! $REPLY =~ ^[Yy]$ ]]; then |
0e4ffb4b | 55 | exit 0 |
e33b53ab C |
56 | fi |
57 | ||
e82afde9 | 58 | ( |
6c42d96e | 59 | cd client |
0e4ffb4b LA |
60 | npm version --no-git-tag-version --no-commit-hooks "$1" |
61 | ) | |
6b2ef589 | 62 | |
0e4ffb4b | 63 | npm version -f --no-git-tag-version --no-commit-hooks "$1" |
6b2ef589 | 64 | |
6cc98dff | 65 | git commit package.json client/package.json ./support/doc/api/openapi.yaml -m "Bumped to version $version" |
1e5c707b | 66 | git tag -s -a "$version" -m "$version" |
6b2ef589 | 67 | |
cdce5af7 | 68 | npm run build -- --source-map |
50a04125 | 69 | rm -f "./client/dist/en-US/stats.json" |
2a068a15 | 70 | rm -f "./client/dist/embed-stats.json" |
08535e56 | 71 | |
6c42d96e R |
72 | # Creating the archives |
73 | ( | |
d788291d | 74 | # local variables |
e82afde9 C |
75 | directories_to_archive=("$directory_name/CREDITS.md" "$directory_name/FAQ.md" \ |
76 | "$directory_name/LICENSE" "$directory_name/README.md" \ | |
77 | "$directory_name/client/dist/" "$directory_name/client/yarn.lock" \ | |
78 | "$directory_name/client/package.json" "$directory_name/config" \ | |
79 | "$directory_name/dist" "$directory_name/package.json" \ | |
80 | "$directory_name/scripts" "$directory_name/support" \ | |
f8360396 | 81 | "$directory_name/yarn.lock") |
d788291d R |
82 | |
83 | # temporary setup | |
6c42d96e | 84 | cd .. |
65db089d | 85 | ln -s "$peertube_directory" "$directory_name" |
6c42d96e | 86 | |
d788291d | 87 | # archive creation + signing |
65db089d C |
88 | zip -9 -r "$peertube_directory/$zip_name" "${directories_to_archive[@]}" |
89 | gpg --armor --detach-sign -u "$maintainer_public_key" "$peertube_directory/$zip_name" | |
90 | XZ_OPT="-e9 -T0" tar cfJ "$peertube_directory/$tar_name" "${directories_to_archive[@]}" | |
91 | gpg --armor --detach-sign -u "$maintainer_public_key" "$peertube_directory/$tar_name" | |
d788291d R |
92 | |
93 | # temporary setup destruction | |
6c42d96e R |
94 | rm "$directory_name" |
95 | ) | |
1e5c707b | 96 | |
6c42d96e R |
97 | # Creating the release on GitHub, with the created archives |
98 | ( | |
6c42d96e | 99 | git push origin --tag |
f05a1c30 | 100 | |
fc96e83d C |
101 | if [ -z "$github_prerelease_option" ]; then |
102 | github-release release --user chocobozzz --repo peertube --tag "$version" --name "$version" --description "$changelog" | |
103 | else | |
104 | github-release release --user chocobozzz --repo peertube --tag "$version" --name "$version" --description "$changelog" "$github_prerelease_option" | |
105 | fi | |
106 | ||
d437596f C |
107 | # Wait for the release to be published, we had some issues when the files were not uploaded because of "unknown release" error |
108 | sleep 2 | |
109 | ||
6c42d96e R |
110 | github-release upload --user chocobozzz --repo peertube --tag "$version" --name "$zip_name" --file "$zip_name" |
111 | github-release upload --user chocobozzz --repo peertube --tag "$version" --name "$zip_name.asc" --file "$zip_name.asc" | |
112 | github-release upload --user chocobozzz --repo peertube --tag "$version" --name "$tar_name" --file "$tar_name" | |
113 | github-release upload --user chocobozzz --repo peertube --tag "$version" --name "$tar_name.asc" --file "$tar_name.asc" | |
0edf0581 | 114 | |
5e319fb7 | 115 | git push origin "$branch" |
f05a1c30 | 116 | |
87bec105 C |
117 | # Only update master if it is not a pre release |
118 | if [ -z "$github_prerelease_option" ]; then | |
119 | # Update master branch | |
120 | git checkout master | |
5e319fb7 | 121 | git merge "$branch" |
87bec105 | 122 | git push origin master |
5e319fb7 | 123 | git checkout "$branch" |
d8aa370f C |
124 | |
125 | # Release types package | |
126 | npm run generate-types-package "$version" | |
462a833e | 127 | cd packages/types/dist |
d8aa370f | 128 | npm publish --access public |
87bec105 | 129 | fi |
6c42d96e | 130 | ) |