| #!/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" |