Reading/Web/Pixie.py rebase tool
Appearance
Setup
[edit]- Setup a Gerrit account on wikitech and setup a labs instance
- The web team uses BarryTheBrowserTestBot or Frankiebot
- Make sure you setup your Gerrit public key
- Make sure your user is in the stream-events Gerrit group or non-interactive user group
- Talk to release engineering (use irc) to request this permission.
- On the labs instance clone the repo that makes use of a build step e.g. Popups extension
- Upgrade npm to 6
- Install nvm
nvm install 6.11.0 nvm use x ~/git/rebasebot $ node -v v6.11.0
- Install git review (I recommend via the pip method on Linux)
- Setup gerrit branch making sure you use ssh
git remote add gerrit ssh://<username>@gerrit.wikimedia.org:29418/<project>.git git remote set-url gerrit ssh://<username>@gerrit.wikimedia.org:29418/<project>.git
- Before going any further ensure you can run `git commit && git review` without errors. In some repos you may find you need to add composer support for the precommit hook
touch x.test git add x.test git commit git review
sudo php composer-setup.php --install-dir=/usr/bin --filename=composer composer install # possibly needed # sudo apt-get install php-mbstring # sudo apt-get install php-xml
- If your labs instance differs from your Gerrit username edit ~/.ssh/config
- Make sure your public key is valid for running:
ssh -p 29418 gerrit.wikimedia.org gerrit stream-events
- Setup gerrit branch making sure you use ssh
- If in doubt, find your bot's username here: https://gerrit.wikimedia.org/r/#/settings/
- You may need to update your bot's git email address via
git config --global user.email "john@doe.org"
- If calling reports "Capability streamEvents is required to access this resource" you'll need to get added to the correct Gerrit group by release engineering (use irc).
ssh -p 29418 gerrit.wikimedia.org gerrit stream-events
Running
[edit]- Clone pixies.py on your labs instance
- Save the following in a sh file e.g. up_pixie.sh
export PIXIES_HOME=/home/pixies/
cd $PIXIES_HOME/barrybot/Popups #this is the repo you want to auto-rebase for
screen -c $PIXIES_HOME/pixies.conf -dmSL pixie $PIXIES_HOME/barrybot/pixies.py --project mediawiki/extensions/Popups
- Cross fingers!
In action
[edit]If set up correctly:
- Play Debaser by the pixies (adds to the magical effect)
- Go to a patch in the repo you just setup your bot for that has a rebase conflict that Gerrit cannot take care of.
- Either +2 it or comment with "rebase" (a bit like "recheck" for Jenkins)
- Watch the magic unfold.
Rebooting
[edit]An instance runs on reading-web-staging-3.eqiad.org under the pixies username. After sshing in there
Reboot:
sudo su mwvagrant cd /home/pixies/ cd barrybot/ # check manually that the git repo is in a healthy state cd /home/pixies/ ./up_pixie.sh # this launches a `screen` where Barry will watch for rebase commands
Folder structure
[edit]Folder structure is
- barrybot
- pixies.py
- Popups <working git repo to be targeted with git review setup>
- pixies.conf
- up_pixie.sh
up_pixie.sh:
cd $HOME/barrybot/Popups #this is the repo you want to auto-rebase for screen -c $HOME/pixies.conf -dmSL pixie $HOME/barrybot/pixies.py --project mediawiki/extensions/Popups
pixies.conf:
logfile pixiep.log logfile flush 1 log on logtstamp after 1 logtstamp string "[ %t: %Y-%m-%d %c:%s ]\012" logtstamp on
Debugging
[edit]- Debugging information is passed to pixies.log
- The bot should comment shortly after your rebase command with a "message received master!" to tell you that it's attempting to grant your request or reject swiftly if not possible.