| #!/bin/bash | |
| # | |
| # Copyright (c) 2019 Oracle and/or its affiliates. All rights reserved. | |
| # | |
| # This program and the accompanying materials are made available under the | |
| # terms of the Eclipse Public License v. 2.0, which is available at | |
| # http://www.eclipse.org/legal/epl-2.0. | |
| # | |
| # This Source Code may also be made available under the following Secondary | |
| # Licenses when the conditions for such availability set forth in the | |
| # Eclipse Public License v. 2.0 are satisfied: GNU General Public License, | |
| # version 2 with the GNU Classpath Exception, which is available at | |
| # https://www.gnu.org/software/classpath/license.html. | |
| # | |
| # SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 | |
| # | |
| # IMPORTANT - modify environmen.sh before running the script. | |
| source environment.sh | |
| #Script REQUIRES Curl, Perl and Python to be present in environment | |
| #Generates and sends release notes to GitHub. Release notes are generated by milestone which corresponds to version name. | |
| #if it is required to generate release notes by label, script shall be modified accordingly | |
| WEB_DIR=$WORKSPACE/target/jersey-web | |
| WEB_SRC_DIR=$WORKSPACE/target/jersey-web-src | |
| cd $WEB_DIR | |
| # [] add pull requests to the release notes | |
| MILESTONE_ID=$(curl 'https://api.github.com/repos/eclipse-ee4j/jersey/milestones' | python -c " | |
| import json,sys,os | |
| obj=json.load(sys.stdin) | |
| [sys.stdout.write(str(a['number']) + os.linesep if a['title']=='"$RELEASE_VERSION"' else '') for a in obj] | |
| ") | |
| PULL_REQUESTS="" | |
| [ "$MILESTONE_ID" -eq "$MILESTONE_ID" ] && PULL_REQUESTS=$(curl 'https://api.github.com/repos/eclipse-ee4j/jersey/issues?state=closed&milestone='$MILESTONE_ID | python -c " | |
| import json,sys,os; | |
| obj=json.load(sys.stdin); | |
| output = '' | |
| for a in obj: | |
| if 'pull_request' in a: | |
| output += ' <li>[<a href=\'{0}\'>Pull {1}</a>] - {2}</li>\n'.format(str(a['pull_request']['html_url']), str(a['number']), str(a['title'])) | |
| else: | |
| output += ' <li>[<a href=\'{0}\'>Issue {1}</a>] - {2}</li>\n'.format(str(a['html_url']), str(a['number']), str(a['title'])) | |
| if output != '': | |
| print '<h2>Issues and Pull Requests</h2>\n<ul>\n{}</ul>'.format(output) | |
| ") | |
| GITHUB_RELEASE_NOTES='{ | |
| "tag_name": "'"$RELEASE_VERSION"'", | |
| "name": "'"$RELEASE_VERSION"'", | |
| "body": "'"$(printf '%s' "$PULL_REQUESTS" | sed -e 's/["]/\\&/g' | perl -pe 's/\n/\\n/')"'" | |
| }' | |
| echo "Github release notes: $GITHUB_RELEASE_NOTES" | |
| echo "Publishing release on Github" | |
| curl -u "${USER_NAME}:${USER_TOKEN}" -X POST -vvv --data "$GITHUB_RELEASE_NOTES" \ | |
| -H "Content-type: application/json" https://api.github.com/repos/eclipse-ee4j/jersey/releases | |
| echo "Pushing Web sources to $WEBSITE_URL" |