stages: - pages - calendar - deploy cache: paths: - ~/.cache/pip/ - public/ variables: GIT_SUBMODULE_STRATEGY: recursive build_pages: image: "golang:1.10-alpine3.8" stage: pages variables: SHELL: "/bin/sh" artifacts: expire_in: "1 week" untracked: true script: - rm -rf public/* - apk add --no-cache --upgrade hugo - hugo $(cat .hugo-params) build_calendar: image: "python:3.11.1-alpine3.17" stage: calendar dependencies: - build_pages artifacts: expire_in: "1 week" untracked: true variables: SHELL: "/bin/sh" script: - apk --no-cache update - pip install -r requirements.txt - python tools/merge_cals.py - cp static/all.ics public/all.ics - upcoming="$(python tools/gen_upcoming.py static/all.ics 20 5|tr '\n' ' ')" && sed -i "s#CALENDAR#$upcoming#g" public/index.html deploy_staging: image: "alpine:3.17" stage: deploy dependencies: - build_calendar variables: SHELL: "/bin/sh" script: - apk --no-cache --upgrade add openssh-client rsync - mkdir -p ~/.ssh - eval $(ssh-agent -s) - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config - echo "$PRIVATE_KEY" | ssh-add - - rsync -e "ssh -l deploy -p 31337" -av --delete public/ 195.160.173.9:staging when: on_success environment: name: staging url: https://staging.berlin.ccc.de/ artifacts: expire_in: "1 week" paths: - public/ only: - staging deploy_production: image: "alpine:3.17" stage: deploy dependencies: - build_calendar variables: SHELL: "/bin/sh" script: - apk --no-cache --upgrade add openssh-client rsync - mkdir -p ~/.ssh - eval $(ssh-agent -s) - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config - echo "$PRIVATE_KEY" | ssh-add - - rsync -e "ssh -l deploy -p 31337" -av --delete public/ 195.160.173.9:production when: on_success environment: name: production url: https://berlin.ccc.de/ artifacts: expire_in: "1 week" paths: - public/ only: - production