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.

Reporting Issues

You can report issues to the #scap project on phabricator.wikimedia.org

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

Copyright 2014-2017 Wikimedia Foundation & Contributors.

Scap is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, version 3.

Scap is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.

Increment T184118

Increment this number when you work around #T184118: 5

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.