Scap

        ___ ____
      ⎛   ⎛ ,----
       \  //==--'
  _//| .·//==--'    ____________________________
 _OO≣=-  ︶ ᴹw ⎞_§ ______  ___\ ___\ ,\__ \/ __ \
(∞)_, )  (     |  ______/__  \/ /__ / /_/ / /_/ /
  ¨--¨|| |- (  / _______\___/ \___/ \__^_/  .__/
      ««_/  «_/ jgs/bd808               /_/

Scap is the deployment script used by Wikimedia Foundation to publish code and configuration on production web servers.

Reporting Issues

You can report issues to the #scap3 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/>.

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 tin.

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.