# Blender Cloud Welcome to the [Blender Cloud](https://cloud.blender.org/) code repo! Blender Cloud runs on the [Pillar](https://pillarframework.org/) framework. ## Quick setup Set up a node with these commands. ``` #!/usr/bin/env bash sudo mkdir -p /data/{git,storage,config,certs} sudo apt-get update sudo apt-get -y install python3-pip pip3 install docker-compose cd /data/git git clone git://git.blender.org/pillar-python-sdk.git git clone git://git.blender.org/pillar.git -b production git clone git://git.blender.org/attract.git -b production git clone git://git.blender.org/flamenco.git -b production git clone git://git.blender.org/blender-cloud.git -b production git clone https://github.com/armadillica/grafista.git -b production echo '0 8 * * * root docker exec -d grafista bash manage.sh collect' > /etc/cron.d/grafista ``` After these commands, run `deploy.sh` to build the static files and deploy those too (see below). ## Deploying to production server First of all, add those aliases to the `[alias]` section of your `~/.gitconfig` ``` prod = "!git checkout production && git fetch origin production && gitk --all" ff = "merge --ff-only" pp = "!git push && if [ -e deploy.sh ]; then ./deploy.sh; fi && git checkout master" ``` The following commands should be executed for each subproject; specifically for Pillar and Attract: ``` cd $projectdir # Ensure there are no local, uncommitted changes. git status git stash # if you still have local stuff. # pull from master, run unittests, push your changes to master. git pull py.test git push # Switch to production branch, and investigate the situation. git prod # Fast-forward the production branch to the master branch. git ff master # Run tests again py.test # Push the production branch and run dummy deploy script. git pp # pp = "Push to Production" # The above alias waits for [ENTER] until all deploys are done. # Let it wait, perform the other commands in another terminal. ``` Now follow the above receipe on the Blender Cloud project as well. Contrary to the subprojects, `git pp` will actually perform the deploy for real. Now you can press `[ENTER]` in the Pillar, Attract, and Flamenco terminals that were still waiting for it. After everything is done, your (sub)projects should all be back on the master branch. ## Updating dependencies via Docker images To update dependencies that need compiling, you need the `2_build` docker container. To rebuild the lot, run `docker/build.sh`. Follow these steps to deploy the new container on production: 1. run `docker/build.sh` 2. `docker push armadillica/blender_cloud` On the production machine: 1. `docker pull armadillica/blender_cloud` 2. `docker-compose up -d` (from the `/data/git/blender-cloud/docker` directory)