Python Mako Makefile Shell JavaScript CSS HTML
Switch branches/tags
Clone or download
Latest commit 9dd8fce Jul 19, 2018
Failed to load latest commit information.
apache Clean up unused stuff Apr 10, 2018
chsdi typo doc oereb services Jul 19, 2018
deploy Allow to remove branch on integration Nov 3, 2017
local_eggs Update mailto and terms and conditions Jan 22, 2018
scripts again update legends meteo Jun 27, 2018
tests deativated treasurehunt test until data will be updated Jun 25, 2018
.coveragerc Move tests folder Apr 20, 2018
.gitattributes Introduce end of line normalization Aug 20, 2014
.gitignore Move tests folder Apr 20, 2018
CHANGES.txt Replace buildout with make Feb 19, 2016
Jenkinsfile Move tests folder Apr 20, 2018 Add BSD 3-clause license Jun 2, 2016 adding services to the project Jun 20, 2013
Makefile Add meteo data May 28, 2018 Add meteo data May 28, 2018 Replace buildout with make Feb 19, 2016
package.json Add meteo data May 28, 2018 add ch.astra.sachplan-infrastruktur-strasse_anhoerung to empty_tables… Jul 17, 2018
rc_branch.mako changes in mako; removed all misspelled legends Sep 18, 2017
rc_ci matching cache behaviour to targets Jan 25, 2018
rc_dev change bucket for grid based data Jun 26, 2018
rc_int change bucket for grid based data Jun 26, 2018
rc_prod change bucket for grid based data Jun 26, 2018
rc_user Use instance role use and migrate bucket. Mar 15, 2018
requirements.txt Received an alert that pillow < 3.3.2 had a moderate security vulnera… Jul 16, 2018
setup.cfg Replace buildout with make Feb 19, 2016 Replace buildout with make Feb 19, 2016


next generation of

Jenkins Build Status: Jenkins Build Status

Getting started

Checkout the source code:

git clone

or when you're using ssh key (see

git clone

Add .pgpass to your environment

touch .pgpass
chmod 600 .pgpass

Open .pgpass and Add*:${username}:${pass}*:${username}:${pass}

Make sure PGUSER and PGPASS is set in your .bashrc (for nosetests, potranslate and sphinx)

export PGUSER=${username} // postgres user (won't be relevant soon)
export PGPASS=${pass}

Add .boto to your environment

touch .boto
chmod 600 .boto

Open .boto and Add (/etc/boto.cfg for main)

aws_access_key_id = ${keyid}
aws_secret_access_key = ${accesskey}

Nagios Check for Dynamodb Dumps

Create a developer specific build configuration:

touch rc_user_<username>

Add the port number in the newly created user rc file. You should at least edit your dev port. For instance:

export SERVER_PORT=9000

Add the API key to retrieve departure information from into the users rc file or directly in the .bashrc (keepass). For instance:

export OPENTRANS_API_KEY=dasffdjfjfjfjf566776jfjfjfj22243eac841ce7c9426355b

Every variables you export in rc_user_ will override the default ones in rc_dev and rc_user.

Where "username" is your specific rc configuration. To create the specific build:

make user

If you do this on mf1t, you need to make sure that a correct configuration exists under


that points to your working directory. If all is well, you can reach your pages at:<username>/

Deploying to dev, int, and prod

Do the following commands inside your working directory. Here's how a standard deploy process is done.

make deploydev SNAPSHOT=true

This updates the source in /var/www... to the latest master branch from github, creates a snapshot and runs nosetests against the test db. The snapshot directory will be shown when the script is done. Note: you can omit the -s parameter if you don't want to create a snapshot e.g. for intermediate releases on dev main.

Once a snapshot has been created, you are able to deploy this snapshot to a desired target. For integration, do

make deployint SNAPSHOT=201512011411

This will run the full nose tests from inside the 201512011411 snapshot directory against the integration db cluster. Only if these tests are successfull, the snapshot is deployed to the integration cluster.

make deployprod SNAPSHOT=201512011411

You can disable the running of the nosetests against the target backends by adding notests parameter to the snapshot command. This is handy in an emergency (when deploying an old known-to-work snapshot) or when you have to re-deploy a snapshot that you know has passed the tests for the given backend. To disable the tests, use the following command:

make deployint SNAPSHOT=201512011411 NO_TESTS=notests

Use notests parameter with care, as it removes a level of tests.

Per default the deploy command uses the deploy configuration of the snapshot directory. If you want to use the deploy configuration of directory from which you are executing this command, you can use:

make deployint SNAPSHOT=201512011411

Deploying a branch

Call the make deploybranch command in your working directory to deploy your current branch to test (Use make deploybranchint to also deploy it to integration). The code for deployment, however, does not come from your working directory, but does get cloned (first time) or pulled (if done once) directly from github. So you'll likely use this command after you push your branch to github.

The first time you use the command will take some time to execute.

The code of the deployed branch is in a specific directory /var/www/vhosts/mf-geoadmin3/private/branch on both test and integration. The command adds a branch specific configuration to /var/www/vhosts/mf-geoadmin3/conf. This way, the deployed branch behaves exactly the same as any user specific deploy.

Sample path: (Don't forget the slash at the end)

Deleting a branch

To list all the deployed branch: make deletebranch

To delete a given branch: make deletebranch BRANCH_TO_DELETE=my_deployed_branch

Get correct back-link to geoadmin3

Per default the back-link to geoadmin3 points to the main instance. If you want to change that, adapt the geoadminhost variable in the input file and commit it in your branch.

Run nosetests manual on different environments

We are able to run our integration tests against different staging environments

For this to work, you need to adapt your personal ~/.pgpass file. It has to include access information for all clusters (add pgcluster0i and pgcluster0)

To run against prod environment: scripts/ -p

To run against int environment: scripts/ -i

To run against dev/test environment: scripts/

To run against your private environment: make test

To execute all tests, including wmts and varnish ones, which are deactivated by default: scripts/ -a

Download WMS image legends

In order to download all images of a layer in the correct format and with the correct dimensions, simply use:

make legends BODID=ch.layername

Alternatively, you can also download a WMS legend for a specific scale.

make legends BODID=ch.layername WMSSCALELEGEND=1000

Make sure, you're using the desired echo $WMSHOST project variable (source rc_xxx or export WMSHOST=xxx)

Python Code Styling

We are currently using the FLAKES 8 convention for Python code. You can find more information about our code styling here:

You can find additional information about autopep8 here:

To check the code styling:

make lint

To autocorrect most linting mistakes

make autolint

Lint a JSON file

export PATH=$(npm bin):$PATH
jsonlint-cli --pretty temp.json > chsdi/static/vectorStyles/ch.meteoschweiz.messwerte-foehn-10min.json

Create legends

Install dependencies:

sudo apt-get install libcairo2-dev libjpeg-dev libpango1.0-dev libgif-dev build-essential g++

Run the script

node scripts/createlegends.js ch.meteoschweiz.messwerte-niederschlagn

Git hooks

3 git hooks are installed automatically when make user is called.

All the hooks check that we don't accidently publish sensitive AWS keys to github - in the files as well as in the commit messages. We also execute make lint in the pre-commit hook.

Other checks can be added freely to any hook.

pre-commit hook

Called before committing changes locally. The commands in the scripts/ script are executed.

commit-msg hook

Called before comitting changes locally and checks the commit message. The commands in the scripts/ script are executed.

prepare-commit-msg hook

Called before comitting changes locally and checks pre-commit messages (usually from --fast-forward merges. The commands in the scripts/ are executed.