incubator-airflow/dev
Ash Berlin-Taylor 8b7ff43f1f
[AIRFLOW-XXX] Improve airflow-jira script to make RelManager's life easier (#4857)
These changes do a number of things:

- Add colours to the output so  I can easily see which issues against a
  release are still open
- Order the Jira issues by update date (so oldest updated are at the
  bottom) - the older issuer will likely cherry-pick better if done in
  the bottom to top order
- Add an `--unmerged` flag to only show un-merged issues in the output
- Attempt to find the PR# and merge commit from master branch for a
  given jira issue. This won't cope with the case where we have multiple
  PRs targeting one issue.
2019-03-08 14:14:24 +00:00
..
README.md [AIRFLOW-3612] Remove incubation/incubator mention (#4419) 2019-01-05 14:05:25 +00:00
airflow-jira [AIRFLOW-XXX] Improve airflow-jira script to make RelManager's life easier (#4857) 2019-03-08 14:14:24 +00:00
airflow-license [AIRFLOW-2287] Update license notices 2018-04-09 00:32:09 -07:00
airflow-pr [AIRFLOW-3933] Fix various typos (#4747) 2019-02-21 11:50:05 +01:00
requirements.txt [AIRFLOW-1091] Add script that can compare jira target against merges 2017-04-17 11:24:54 +02:00
sign.sh [AIRFLOW-XXX] Don't publish md5 sigs as part of release (#4210) 2018-11-19 10:26:18 -08:00

README.md

Development Tools

Airflow Pull Request Tool

The airflow-pr tool interactively guides committers through the process of merging GitHub PRs into Airflow and closing associated JIRA issues.

It is very important that PRs reference a JIRA issue. The preferred way to do that is for the PR title to begin with [AIRFLOW-XXX]. However, the PR tool can recognize and parse many other JIRA issue formats in the title and will offer to correct them if possible.

Please note: this tool will restore your current branch when it finishes, but you will lose any uncommitted changes. Make sure you commit any changes you wish to keep before proceeding.

Execution

Simply execute the airflow-pr tool:

$ ./airflow-pr
Usage: airflow-pr [OPTIONS] COMMAND [ARGS]...

  This tool should be used by Airflow committers to test PRs, merge them
  into the master branch, and close related JIRA issues.

  Before you begin, make sure you have created the 'apache' and 'github' git
  remotes. You can use the "setup_git_remotes" command to do this
  automatically. If you do not want to use these remote names, you can tell
  the PR tool by setting the appropriate environment variables. For more
  information, run:

      airflow-pr merge --help

Options:
  --help  Show this message and exit.

Commands:
  close_jira         Close a JIRA issue (without merging a PR)
  merge              Merge a GitHub PR into Airflow master
  setup_git_remotes  Set up default git remotes
  work_local         Clone a GitHub PR locally for testing (no push)

Commands

Execute airflow-pr merge to be interactively guided through the process of merging a PR, pushing changes to master, and closing JIRA issues.

Execute airflow-pr work_local to only merge the PR locally. The tool will pause once the merge is complete, allowing the user to explore the PR, and then will delete the merge and restore the original development environment.

Execute airflow-pr close_jira to close a JIRA issue without needing to merge a PR. You will be prompted for an issue number and close comment.

Execute airflow-pr setup_git_remotes to configure the default (expected) git remotes. See below for details.

Configuration

Python Libraries

The merge tool requires the click and jira libraries to be installed. If the libraries are not found, the user will be prompted to install them:

pip install click jira

git Remotes

tl;dr run airflow-pr setup_git_remotes before using the tool for the first time.

Before using the merge tool, users need to make sure their git remotes are configured. By default, the tool assumes a setup like the one below, where the github repo remote is named github. If users have other remote names, they can be supplied by setting environment variables GITHUB_REMOTE_NAME.

Users can configure this automatically by running airflow-pr setup_git_remotes.

$ git remote -v
github	https://github.com/apache/airflow.git (fetch)
github	https://github.com/apache/airflow.git (push)
origin	https://github.com/<USER>/airflow (fetch)
origin	https://github.com/<USER>/airflow (push)

JIRA

Users should set environment variables JIRA_USERNAME and JIRA_PASSWORD corresponding to their ASF JIRA login. This will allow the tool to automatically close issues. If they are not set, the user will be prompted every time.

GitHub OAuth Token

Unauthenticated users can only make 60 requests/hour to the Github API. If you get an error about exceeding the rate, you will need to set a GITHUB_OAUTH_KEY environment variable that contains a token value. Users can generate tokens from their GitHub profile.

Airflow release signing tool

The release signing tool can be used to create the SHA512/MD5 and ASC files that required for Apache releases.

Execution

To create a release tarball execute following command from Airflow's root.

python setup.py compile_assets sdist --formats=gztar

Note: compile_assets command build the frontend assets (JS and CSS) files for the Web UI using webpack and npm. Please make sure you have npm installed on your local machine globally. Details on how to install npm can be found in CONTRIBUTING.md file.

After that navigate to relative directory i.e., cd dist and sign the release files.

../dev/sign.sh <the_created_tar_ball.tar.gz

Signing files will be created in the same directory.