QA:Phabricator

From FedoraProject

Jump to: navigation, search

We use a tool called Phabricator to manage our tickets and review commits. Our instance is available at:

https://phab.qa.fedoraproject.org

Authentication uses the Fedora Account System, so you do not need a separate account.

Contents

Getting help

If you have any trouble using Phabricator, especially with filing issues or code changes (diffs), you can always get in touch with us for help! Please mail qa-devel or ask in #fedora-qa[?] and someone will likely be able to help you out.

Filing issues

You can create a ticket for us there (report a bug, suggest a feature) against one of our tracked projects (including the Taskotron and ResultsDB components).

Proposing code changes ('diffs')

In the Phabricator system, code changes (often called 'pull requests' in git terms) are referred to as 'diffs'. For the projects which track code changes in Phabricator, you can use a tool called arcanist to submit diffs.

Warning.png
Don't follow upstream instructions
Do not follow the upstream guide to install arcanist! This will install whatever code is in git and may not match the server version we are using.

Fedora packages for arcanist are currently provided in a COPR repository. To enable it and install arcanist, run:

sudo dnf copr enable kanarip/phabricator
sudo dnf install arcanist

You may need to adjust PHP to load the system trusted CA certificate store. Create a file /etc/php.d/99-curl-systemtrust.ini with this content:

curl.cainfo=/etc/pki/tls/certs/ca-bundle.crt

Then from a checkout of any repository for which changes are tracked in Phabricator, run:

arc install-certificate

You will be prompted to visit a link for a generated certificate used for API calls. After visiting that link (and logging into Phabricator if necessary), you will see a string of characters in a text box. Copy those characters and paste them into the arc prompt.

The command to submit diffs is arc diff. The general workflow is to create your change on a local branch - it is not necessary to fork the repository or push your change to any remote - and then run arc diff from that branch. To update the diff, just modify the branch and run arc diff again; arcanist should detect the existing diff and update it, rather than creating a new one.

Many of the projects tracked in Phabricator use the gitflow model, which means their main development branch is called develop, not master. You can easily identify these as when you first check out the repo, you will be on the develop branch. When you first run arc diff, it will ask you which 'Default Commit Range' you want to use. For the gitflow projects, you should enter origin/develop. For projects which just use a master branch, you should enter origin/master. When running arc diff, you can always explicitly specify the starting point for the range, e.g. arc diff develop to start from the state of your local develop branch.

If the project you are contributing to has tests and/or linting enabled, you may need to ensure you have the appropriate packages installed, and/or run arc diff from a virtualenv, to ensure the tests and lint run correctly. Check the project's documentation and/or contribution guide (e.g. Taskotron contribution guide) for details.

For detailed instructions on arc usage, see the arcanist user guide.

FAQs

User FAQ

Do I need to create yet another account?
No. If you need to log in (to e.g. create a ticket), use your FAS email address (that is nick@fedoraproject.org). You'll be redirected to FAS where you supply your password and then back to Phabricator. No new account is necessary.

The main page is confusing.
Use the navigation toolbar on the left:

  • Differential will let you see all patch reviews or create a new one manually (see #issues-diffs for a better way to do this).
  • Maniphest will let you see current tickets (bugs, requests) or create a new one (look into the upper right screen corner).
  • Projects will show you a list of our projects. You will need this when creating a new ticket to provide a correct project name.
  • Feed (available from Applications) will show you the latest changes in Phabricator.

I receive too much email for the tickets I'm subscribed to. Every single ticket change is announced.
Go to your Email preferences and set which types of action you want to get email notifications for.

Developer FAQ

I want to be notified for all tickets in a certain project, even if I'm not directly subscribed to them.
Visit the desired project from the list of projects. Make sure you're looking at the project details page (the top icon in the left bar) - for certain projects, the workboard is displayed by default. Now click on Join Project and then on Watch Project. From now on, you'll receive notifications about every ticket change related to this project. You can cancel your subscription from here as well.

I want to watch for ticket changes with more complicated rules, not just per-project.
Use Herald tool. You'll be mostly interested in Maniphest Tasks (tickets) rules or Differential Revisions (patch reviews) rules. These rules are evaluated for every ticket/review change. For example you can specify that if a ticket has a certain keyword in its description, you'll get automatically subscribed to it. Example:

Name: kparal: track interesting keywords
Applies To: Maniphest Tasks

When any of these conditions are met:
  Title matches regexp /(upgradepath|depcheck|autoqa|rpmguard)/i
  Body matches regexp /(upgradepath|depcheck|autoqa|rpmguard)/i
Take these actions the first time this rule matches:
  Add emails to CC kparal

I want to be notified for all patch reviews for a certain project/repository, even if I'm not listed among reviewers.
Use Herald tool (see above). You'll either need to list the repositories you're interested in, or you can list the projects these repositories are related to (each repository can be related to one or more projects), see the list of all repositories and the relevant projects displayed next to each of them, looking like "tags". Example:

Name: kparal: watch revisions for selected repositories
Applies to: Differential Revisions

When all of these conditions are met:
  Repository is any of rWTCMS (python-wikitcms), rFAKE (fake_fedorainfra)
Take these actions the first time this rule matches:
  Send an email to kparal
Name: kparal: watch revisions for selected projects
Applies to: Differential Revisions

When all of these conditions are met:
  Repository's projects include any of repos-taskotron, infrastructure, papercuts, testCloud
Take these actions the first time this rule matches:
  Send an email to kparal

I want to be notified of tickets without any project set (usually bug reports from people not familiar with Phabricator).
Use Herald tool (see above). Example:

Name: kparal: notify me of tasks without project set
Applies To: Maniphest Tasks 

When any of these conditions are met:
  Projects does not exist
Take these actions the first time this rule matches:
  Send an email to kparal

I want to be notified just once when a ticket/patch is created, not for every change, or I want to selectively subscribe/unsubscribe from them.

  • If you start watching a certain project, you'll receive all changes of all tickets.
  • You'll also receive all changes of tickets/patches, if you use a Herald rule containing:
    Add emails to CC <name>

    But if you've set this to apply only the first time this rule matches, you'll be then able to unsubscribe later from that item using the Unsubscribe button.

  • If you want to receive the notification just once and not subscribe automatically, use this action in a Herald rule: Take these actions the first time this rule matches: Send an email to <name> You can then decide whether to subscribe to that ticket/patch using the Subscribe button and receive further notifications, or ignore it and not receive any further notifications for that item.

I want to be notified of new or edited wiki documents in Phabricator.
Use Herald tool (see above). You can watch just a certain document path (and everything below it), new or edited documents or both. You can again get either subscribed or receive just a one-time notification. Example:

kparal: add to CC to new wiki documents
Applies To: Phriction Documents

When all of these conditions are met:
  Path contains taskotron/
  Is newly created is true
Take these actions every time this rule matches:
  Add Subscribers kparal

Why haven't I received a notification?
Look at Herald Transcript for that particular item. It lists all the existing rules and shows whether they were acted on or not and why.
Tip: If you prefix your rule name with your nick, it will be much easier for you to distinguish which rules are yours.
You can also use the Herald Test Console to test your rules against particular objects.