# In case something goes horribly wrong, you can fall back to `image: ruby:2.5` image: git-r3lab.uni.lu:4567/r3/docker/jekyll-lcsb:1.4 stages: - build - generate_index - deploy # !!!!!!! README !!!!! # We are in the transition period - and the website is deployed two times - to gitlab pages and to a separate VM # In order to migrate to a new deployment: # 1) remove "Old deployment" section - build_pages, generate the search index and pages tasks # 2) rename "new pages" to "pages" in the new deployment section, and "new_public" to "public"; you might also rename directories (skip "new" part) # 3) remove ".ci/deploy.sh", ".ci/build_indices.sh" # Old deployment ================================================================= build_pages: stage: build before_script: - apt-get -qq update - apt-get install -y -qq git-lfs - gem install bundler:2.0.2 && bundle install script: - bash .ci/deploy.sh variables: JEKYLL_ENV: production artifacts: expire_in: 1 day paths: - build generate the search index: stage: generate_index image: node:13.8.0-slim rules: - if: $CI_COMMIT_BRANCH == "master" - if: $CI_COMMIT_BRANCH == "develop" script: - bash .ci/build_indices.sh - mv build processed_build artifacts: expire_in: 1 day paths: - processed_build pages: image: alpine:3.11.3 stage: deploy rules: - if: $CI_COMMIT_BRANCH == "master" - if: $CI_COMMIT_BRANCH == "develop" script: - mv processed_build public artifacts: expire_in: 1 week paths: - public # New deployment ================================================================== build pages for VM deployment: stage: build variables: JEKYLL_ENV: production BUNDLER_VERSION: 2.0.2 artifacts: expire_in: 1 day paths: - new_build rules: - if: $CI_COMMIT_BRANCH - if: $CI_MERGE_REQUEST_ID before_script: - gem install bundler:$BUNDLER_VERSION && bundle install script: # Generate the configuration for forks (will use Gitlab Pages on personal namespaces) - 'echo "url: https://$CI_PROJECT_NAMESPACE.$CI_PAGES_DOMAIN" >> .ci/_config_gitlab_pages.yml' - 'echo "baseurl: /$CI_PROJECT_NAME" >> .ci/_config_gitlab_pages.yml' # If there is no config for the current branch, use the one for Gitlab Pages - 'if [ ! -f ".ci/_config_$CI_COMMIT_REF_NAME.yml" ]; then mv .ci/_config_gitlab_pages.yml .ci/_config_$CI_COMMIT_REF_NAME.yml; fi' # Display, which configuration is used - 'echo "Configuration: " && cat ".ci/_config_$CI_COMMIT_REF_NAME.yml"' # Run Jekyll with custom configuration - bundle exec jekyll build -d new_build --config "_config.yml,.ci/_config_$CI_COMMIT_REF_NAME.yml" generate the search index for VM deployment: stage: generate_index image: node:13.8.0-slim variables: LUNR_VERSION: 2.3.8 DIRECTORY: new_build script: - bash .ci/build_indices_new.sh - mv new_build new_processed_build rules: - if: $CI_COMMIT_BRANCH - if: $CI_MERGE_REQUEST_ID artifacts: expire_in: 1 day paths: - new_processed_build # Deploy to Gitlab Pages - to be run only by forks; change to pages once it's ready new pages: image: alpine:3.11.3 stage: deploy rules: - if: '$CI_PROJECT_NAMESPACE != "R3" && $CI_PROJECT_NAMESPACE != "R3-core"' - if: $CI_MERGE_REQUEST_ID script: - mv new_processed_build new_public artifacts: expire_in: 1 week paths: - new_public ## Deploys the website to a separate VM deploy to production: stage: deploy image: alpine:3.1 before_script: - 'which ssh-agent || ( apk add --update openssh )' - eval $(ssh-agent -s) - echo "$B64SSHPRIVKEY" | base64 -d | tr -d '\r' | ssh-add - > /dev/null - mkdir -p ~/.ssh && chmod 700 ~/.ssh - 'echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config' - echo "$KNOWNHOSTS" > ~/.ssh/known_hosts - chmod 644 ~/.ssh/known_hosts rules: - if: '$CI_COMMIT_BRANCH == "develop" && $CI_PROJECT_PATH == "R3/howto-cards"' - if: '$CI_COMMIT_BRANCH == "master" && $CI_PROJECT_PATH == "R3/howto-cards"' script: - ssh -p $SSHPORT $SSHCONNECT "mkdir -p ~/$CI_COMMIT_BRANCH/sources/public/$CI_JOB_ID ~/$CI_COMMIT_BRANCH/public" - scp -P $SSHPORT -r new_processed_build/* $SSHCONNECT:~/$CI_COMMIT_BRANCH/sources/public/$CI_JOB_ID - ssh -p $SSHPORT $SSHCONNECT "cd ~/$CI_COMMIT_BRANCH/public && ln -fs ../sources/public/$CI_JOB_ID/* . && cd ~/$CI_COMMIT_BRANCH/sources/public/ && find . -type d -not -newermt '-1 minutes' -exec rm -rf {} +;"