Scap¶
___ ____
⎛ ⎛ ,----
\ //==--'
_//| .·//==--' ____________________________
_OO≣=- ︶ ᴹw ⎞_§ ______ ___\ ___\ ,\__ \/ __ \
(∞)_, ) ( | ______/__ \/ /__ / /_/ / /_/ /
¨--¨|| |- ( / _______\___/ \___/ \__^_/ .__/
««_/ «_/ jgs/bd808 /_/
Scap is the deployment script used by Wikimedia Foundation to publish code and configuration on production web servers.
Running tests¶
Scap comes with a unit test suite implemented using pytest and invoked using tox.
On Debian 10 (buster) you need the following packages installed to run the test suite:
build-essential locales-all git python2 python3 python-all-dev python3-all-dev tox php
After this, run the tox
command on the command line to run the
tests. It uses the tox.ini file to know what to do. Edit that file to
drop any Python3 versions you don’t have installed from the
envlist
line.
Alternatively, you can specify python environments against which to run the
test suite by selecting a custom envlist in tox
via the -e
option,
i.e., tox -e py27
.
Building a .deb¶
Run this command to build a scap.deb package under Docker, for your own use (not for SRE to install on production hosts):
./build-deb-in-docker ~/tmp/scap-deb
The directory given as an argument must exist. The resulting package files will be put into that directory.
Credits¶
ASCII art derived from original work by Joan Stark [1] and the speed figlet font [2].
[1] | http://www.oocities.com/spunk1111/farm.htm#pig |
[2] | http://www.jave.de/figlet/fonts/details/speed.html |
License¶
Background¶
Scap is a tool that was originally designed to deploy MediaWiki code on Wikimedia Foundation servers. In Summer/Fall 2015 functionality was added to Scap to allow it to deploy any git-based repositories on our deployment server.
What does “Scap” mean?¶
In about 2004, in the course of moving the wiki document roots from NFS to the local hard drives of the Apache servers, a number of shell scripts were introduced, probably written by Brion, notably:
- sync-common, which pulled the shared code into the local server
- sync-common-all, which ran sync-common on all servers
Tim added a script which would push the MW source code in common/php out to all servers, in addition to running a pre-deployment lint check, in order to reduce the (then frequent) incidents of site downtime due to PHP fatal errors. The natural name for this script, following the previous convention, would have sync-common-php-all, but this had two problems:
- It was too long
- Its acronym was not pronounceable
Tim noticed that if the last two components of the name were swapped, a short and catchy acronym could be contrived. Thus, scap was born.