Skip to content
Snippets Groups Projects
.gitlab-ci.yml 2.78 KiB
Newer Older
Anton Akhmerov's avatar
Anton Akhmerov committed
image: gitlab.kwant-project.org:5005/qt/research-docker
Anton Akhmerov's avatar
Anton Akhmerov committed

build lectures:
  before_script:
    - pip install -Ur requirements.txt
  script:
    - mkdocs build
  artifacts:
    paths:
      - site
    expire_in: 1 week
Anton Akhmerov's avatar
Anton Akhmerov committed
  needs: []

compile mathjax:
  image: gitlab.kwant-project.org:5005/qt-restricted/registry/mathjax-jsdom
  script:
    - find site -name "*.html" | xargs -L1 mathjax-jsdom-mod
  artifacts:
    paths:
      - site
    expire_in: 1 week
  needs:
    - build lectures

.prepare_deploy: &prepare_deploy
  only:
    - branches@solidstate/lectures
Anton Akhmerov's avatar
Anton Akhmerov committed
  before_script:
    ## Install ssh-agent if not already installed, it is required by Docker.
    ## (change apt-get to yum if you use an RPM-based image)
    - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'

    ## Run ssh-agent (inside the build environment)
    - eval $(ssh-agent -s)

    ## Add the SSH key stored in SSH_PRIVATE_KEY variable to the agent store
    ## We're using tr to fix line endings which makes ed25519 keys work
    ## without extra base64 encoding.
    ## https://gitlab.com/gitlab-examples/ssh-private-key/issues/1#note_48526556
    - echo "$WEBSITE_UPLOAD_KEY" | tr -d '\r' | ssh-add - > /dev/null

    ## Create the SSH directory and give it the right permissions
Anton Akhmerov's avatar
Anton Akhmerov committed
    - mkdir -p ~/.ssh
    - chmod 700 ~/.ssh
    - ssh-keyscan tnw-tn1.tudelft.net >> ~/.ssh/known_hosts
    - chmod 644 ~/.ssh/known_hosts
Anton Akhmerov's avatar
Anton Akhmerov committed
  script:
    - "rsync -rv site/* solidstate@tnw-tn1.tudelft.net:$DEPLOY_PATH"
Anton Akhmerov's avatar
Anton Akhmerov committed
  needs:
    - compile mathjax

deploy delft version:
  <<: *prepare_deploy
Anton Akhmerov's avatar
Anton Akhmerov committed
  only:
  variables:
    DEPLOY_PATH: ""
  environment:
    name: $CI_COMMIT_REF_NAME
    url: "https://solidstate.quantumtinkerer.tudelft.nl/"

deploy test version:
  <<: *prepare_deploy
  except:
    - local@solidstate/lectures
  variables:
    DEPLOY_PATH: "test_builds/$CI_COMMIT_REF_NAME"
  environment:
    name: $CI_COMMIT_REF_NAME
    url: "https://solidstate.quantumtinkerer.tudelft.nl/test_builds/$CI_COMMIT_REF_NAME"
    on_stop: undeploy test version

undeploy test version:
  <<: *prepare_deploy
  except:
    - local@solidstate/lectures
  when: manual
  variables:
    DEPLOY_PATH: "test_builds/$CI_COMMIT_REF_NAME"
  script:
    - mkdir empty/
    - "rsync -rlv --delete empty/ solidstate@tnw-tn1.tudelft.net:$DEPLOY_PATH"
  environment:
    name: $CI_COMMIT_REF_NAME
    action: stop

merge into local:
  only:
    - master@solidstate/lectures
  script:
Anton Akhmerov's avatar
Anton Akhmerov committed
    - git checkout master; git reset --hard origin/master
Anton Akhmerov's avatar
Anton Akhmerov committed
    - git checkout local; git reset --hard origin/local
    - git diff-index --quiet master || git -c "user.name=$GITLAB_USER_NAME" -c "user.email=$GITLAB_USER_EMAIL" merge master
Anton Akhmerov's avatar
Anton Akhmerov committed
    - "git push https://$GITLAB_PUSH_KEY@gitlab.kwant-project.org/solidstate/lectures.git local"
Anton Akhmerov's avatar
Anton Akhmerov committed
  needs:
    - build lectures