Phabricator: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
Phabricator is a solid agile project manager and issue tracker | Phabricator is a solid agile project manager and issue tracker, with a customizable workflow. | ||
=== My Workflow === | |||
{| class="mw-collapsible wikitable" | {| class="mw-collapsible wikitable" | ||
Line 21: | Line 23: | ||
| <span style="font-size:88%; line-height: 0.8em;">This will hide the task on the CI dashboard. It will also immediately remove the task from the board if you are only showing '''Open''' statuses. You can also drag the task from ''In Progress'' to ''Fixed''; this has no real effect on the task, but will keep your board better organized.</span> | | <span style="font-size:88%; line-height: 0.8em;">This will hide the task on the CI dashboard. It will also immediately remove the task from the board if you are only showing '''Open''' statuses. You can also drag the task from ''In Progress'' to ''Fixed''; this has no real effect on the task, but will keep your board better organized.</span> | ||
|} | |} | ||
=== Tips === | |||
If you are viewing a board by priority, and drag, the dropped task will have its priority automatically adjusted to fit in drag zone. This works great if you can drag a new item from ''Backlog'' to a spot '''above''' an existing ''In Progress'' item. | |||
I changed the [https://thedigitalage.org/config/edit/maniphest.default-priority/ default task priority] from "Needs Triage" (90) to "Normal" (50) to make my flow simpler. I don't need someone else to set the initial priority. | I changed the [https://thedigitalage.org/config/edit/maniphest.default-priority/ default task priority] from "Needs Triage" (90) to "Normal" (50) to make my flow simpler. I don't need someone else to set the initial priority. | ||
Line 31: | Line 34: | ||
Wikipedia is done with Phabricator and is a great resource, for example [https://www.mediawiki.org/wiki/Phabricator/Project_management their project management guidelines]. | Wikipedia is done with Phabricator and is a great resource, for example [https://www.mediawiki.org/wiki/Phabricator/Project_management their project management guidelines]. | ||
=== Maintenance === | |||
* Install | |||
Installing Phabricator is as simple as any other LAMP installation. We grabbed the three primary git repos, here: | |||
m@bitpost cd development/phabricator | m@bitpost cd development/phabricator | ||
git clone https://github.com/phacility/libphutil.git | git clone https://github.com/phacility/libphutil.git | ||
git clone https://github.com/phacility/arcanist.git | git clone https://github.com/phacility/arcanist.git | ||
git clone https://github.com/phacility/phabricator.git | git clone https://github.com/phacility/phabricator.git | ||
Then set up an alias and directory in apache. Then a mysql user + db. Browse to the url to finish. Easy peasy. | Then set up an alias and directory in apache. Then a mysql user + db. Browse to the url to finish. Easy peasy. | ||
Line 53: | Line 55: | ||
Navigate via Config > Core settings > User interface. | Navigate via Config > Core settings > User interface. | ||
=== Upgrade === | |||
I am now using a [willcodeforcoffee] branch off master for my installation. Master can be updated at any time. I can rebase my branch to it on occasion. The only change so far has been: | |||
libphutil/.arcconfig | libphutil/.arcconfig | ||
Note that I have a COPY of the config in my config repo. Not ideal, but try to keep the copy up to date on any change. | Note that I have a COPY of the config in my config repo. Not ideal, but try to keep the copy up to date on any change. | ||
Line 84: | Line 87: | ||
m@bitpost cd development/phabricator/phabricator | m@bitpost cd development/phabricator/phabricator | ||
bin/phd start | bin/phd start | ||
* Notes on failed attempt to change url | |||
WARNING! No matter what I did, I couldn't get arcanist (or curl) to accept a subdomain's (agile.bitpost.com) CA certs. Browsers were fine. Shrug. Using a full domain worked fine. Maybe I'll revisit some time, but for now it's too much pain, move on. | |||
# Stop and reconfigure apache, restart | # Stop and reconfigure apache, restart | ||
# NOTE: currently we are using a 5-domain cert that includes bitpost.com, agile., www., ssl., mail. | # NOTE: currently we are using a 5-domain cert that includes bitpost.com, agile., www., ssl., mail. | ||
Line 96: | Line 98: | ||
# And make sure that the three phab folders (phabricator, arcanist, libphutil) point to it | # And make sure that the three phab folders (phabricator, arcanist, libphutil) point to it | ||
# You MAY need to run through some of the API steps again, below | # You MAY need to run through some of the API steps again, below | ||
=== API === | |||
The [https://thedigitalage.org/conduit/method/maniphest.query/ Phabricator API] can be used to extract a query of tasks. You need to get a (permanent) auth certificate from '''arcanist''': | |||
m@bitpost cd development/phabricator/arcanist | m@bitpost cd development/phabricator/arcanist | ||
bin/arc set-config default https://abettersoftware.org/ | bin/arc set-config default https://abettersoftware.org/ | ||
Line 123: | Line 123: | ||
View active tokens here: | View active tokens here: | ||
https://abettersoftware.org/settings/panel/apitokens/ | https://abettersoftware.org/settings/panel/apitokens/ | ||
Revision as of 22:10, 17 February 2018
Phabricator is a solid agile project manager and issue tracker, with a customizable workflow.
My Workflow
WORKFLOW | Description | |
---|---|---|
Workflow columns | Backlog => In Progress | There is a third column Fixed that can be shown, it's nice to move Resolved items there on occasion to clean up the board. |
Create a task | Click dropdown on Backlog, select Create Task. | Or you can click the large + in the top-right toolbar, select Create Task, and assign the correct Project in the tags box. |
Start a task | Drag it from Backlog to In Progress. | Drop above an existing task so the priority will be automatically set. If this is not possible, you need to manually change Priority to High so that the CI dashboard shows the task. |
Finish a task | Change Status to Resolved. | This will hide the task on the CI dashboard. It will also immediately remove the task from the board if you are only showing Open statuses. You can also drag the task from In Progress to Fixed; this has no real effect on the task, but will keep your board better organized. |
Tips
If you are viewing a board by priority, and drag, the dropped task will have its priority automatically adjusted to fit in drag zone. This works great if you can drag a new item from Backlog to a spot above an existing In Progress item.
I changed the default task priority from "Needs Triage" (90) to "Normal" (50) to make my flow simpler. I don't need someone else to set the initial priority.
Natural and By-priority sorting BOTH maintain their specific orders. Fucking weird. NEVER USE NATURAL. Ever. You have to set sort by priority and save as default for new boards.
Wikipedia is done with Phabricator and is a great resource, for example their project management guidelines.
Maintenance
- Install
Installing Phabricator is as simple as any other LAMP installation. We grabbed the three primary git repos, here:
m@bitpost cd development/phabricator git clone https://github.com/phacility/libphutil.git git clone https://github.com/phacility/arcanist.git git clone https://github.com/phacility/phabricator.git
Then set up an alias and directory in apache. Then a mysql user + db. Browse to the url to finish. Easy peasy.
After putting up haproxy as the front end, I needed to add a "preamble" script to confirm we were actually using https through haproxy:
🌵 m@bitpost [~/development/phabricator/phabricator/support] ls preamble.php lrwxrwxrwx 1 m m 78 Feb 17 15:03 preamble.php -> /home/m/development/config/bitpost/home/m/development/phabricator/preamble.php
You can customize the site banner now through the ui - yay thanks epriestley!
Navigate via Config > Core settings > User interface.
Upgrade
I am now using a [willcodeforcoffee] branch off master for my installation. Master can be updated at any time. I can rebase my branch to it on occasion. The only change so far has been:
libphutil/.arcconfig
Note that I have a COPY of the config in my config repo. Not ideal, but try to keep the copy up to date on any change.
Process:
- Stop phabricator (I usually ignore this step)
# stop apache m@bitpost cd development/phabricator/phabricator bin/phd stop
- Update code
m@bitpost cd development/phabricator/libphutil m@bitpost git checkout master && git pull m@bitpost git checkout willcodeforcoffee && git rebase -i master m@bitpost cd ../arcanist m@bitpost git checkout master && git pull m@bitpost git checkout willcodeforcoffee && git rebase -i master m@bitpost cd ../phabricator m@bitpost git checkout master && git pull m@bitpost git checkout willcodeforcoffee && git rebase -i master
- Upgrade the mysql schema
m@bitpost cd development/phabricator/phabricator bin/storage upgrade
- Restart phabricator
# restart apache m@bitpost cd development/phabricator/phabricator bin/phd start
- Notes on failed attempt to change url
WARNING! No matter what I did, I couldn't get arcanist (or curl) to accept a subdomain's (agile.bitpost.com) CA certs. Browsers were fine. Shrug. Using a full domain worked fine. Maybe I'll revisit some time, but for now it's too much pain, move on.
- Stop and reconfigure apache, restart
- NOTE: currently we are using a 5-domain cert that includes bitpost.com, agile., www., ssl., mail.
- Update phabricator config - this is different than and in addition to .arcconfig files!
phabricator/ $ ./bin/config set phabricator.base-uri 'https://agile.bitpost.com/'
- Update ~/development/config/bitpost/home/m/development/phabricator/.arcconfig
- And make sure that the three phab folders (phabricator, arcanist, libphutil) point to it
- You MAY need to run through some of the API steps again, below
API
The Phabricator API can be used to extract a query of tasks. You need to get a (permanent) auth certificate from arcanist:
m@bitpost cd development/phabricator/arcanist bin/arc set-config default https://abettersoftware.org/ emacs .arcconfig # and set phabricator.uri to the same emacs ../phabricator/.arcconfig # and set phabricator.uri to the same bin/arc install-certificate
That will tell you to browse here. You'll get an "API Token" once you log in, eg cli-5sdfksomkhgvasdlfkwfelk or whatever (NOT that one).
Paste API Token from that page: cli-5fxsvztkshgvtc7ssdf Writing ~/.arcrc... SUCCESS! API Token installed.
It then creates ~/.arcrc with the token, which is used by subsequent arc calls, like this:
Now you can use that in the API calls to authenticate, like this:
curl https://abettersoftware.org/api/maniphest.query -d api.token=cli-5fxsvztksdfsomkhgvczjtcdts
Pretty easy to use once you have the initial bullshit done. It certainly isn't secure to send over the wire though. The only viable solution is to use it server-side. See bitpost.com/ci.php code for details on using good old php to get the job done.
View active tokens here:
https://abettersoftware.org/settings/panel/apitokens/