From 1a3cd157baaf04c6cc2a60b942fc5be7ac161e55 Mon Sep 17 00:00:00 2001 From: Kwangjin Lee <k.lee-5@student.tudelft.nl> Date: Thu, 22 Aug 2024 15:05:45 +0200 Subject: [PATCH] Update .gitlab-ci.yml file --- .gitlab-ci.yml | 95 ++++++++++++++++++++++++++++---------------------- 1 file changed, 54 insertions(+), 41 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 22581ec..2d1412e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,51 +1,64 @@ -image: alpine:latest +image: ruby:latest stages: + - build - deploy -deploy-to-2024-website: +variables: + GEM_HOME: $CI_PROJECT_DIR/vendor/bundle + +cache: + paths: + - vendor/bundle + +before_script: + - bundle config set --local path 'vendor/bundle' + - bundle install + +build: + stage: build + script: + - JEKYLL_ENV=production bundle exec jekyll build --destination public + artifacts: + paths: + - public + +deploy-draft: + stage: deploy + rules: + - if: $CI_COMMIT_BRANCH == "main" + script: + - | + curl -X POST https://mude.citg.tudelft.nl/hooks/website-deploy-draft \ + -H "Content-Type: application/json" \ + -H "X-Gitlab-Token: glpat-sQ82fiSMo1kCi2TpgSfr" \ + -d '{ + "object_kind": "pipeline", + "object_attributes": { + "status": "success", + "ref": "main" + } + }' + environment: + name: draft + url: https://mude.citg.tudelft.nl/2024/draft + +deploy-production: stage: deploy rules: - - if: $CI_COMMIT_BRANCH == "main" && $CI_PIPELINE_SOURCE == "push" - before_script: - # Install rsync and SSH client, set up SSH agent, and configure SSH - - apk update && apk add --no-cache rsync openssh - - eval $(ssh-agent -s) - - echo "$MUDE_DEPLOYER_SSH_KEY" | tr -d '\r' | ssh-add - - - mkdir -p ~/.ssh - - chmod 700 ~/.ssh - - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config + - if: $CI_COMMIT_BRANCH == "publish" script: - # Debug information: show current directory and list files - - 'echo "Current directory: $PWD"' - - ls -la - # Create and set permissions on the target directory on the remote server - - ssh $MUDE_SERVER_USER@$MUDE_SERVER_ADDRESS "sudo mkdir -p /var/web_server/htdocs/2024-website" - - ssh $MUDE_SERVER_USER@$MUDE_SERVER_ADDRESS "sudo chown -R $MUDE_SERVER_USER:$MUDE_SERVER_USER /var/web_server/htdocs/2024-website" - # Sync files to the remote server, excluding unnecessary directories - - rsync -avz --delete-after --exclude=".git/" --exclude=".cache/" ./ $MUDE_SERVER_USER@$MUDE_SERVER_ADDRESS:/var/web_server/htdocs/2024-website/ - # Install Jekyll and build the site on the remote server - | - ssh $MUDE_SERVER_USER@$MUDE_SERVER_ADDRESS " - # Update package lists - sudo apt-get update - # Install Ruby and other dependencies - sudo apt-get install -y ruby-full build-essential zlib1g-dev - # Set up Ruby Gems to install to the user's home directory - echo '# Install Ruby Gems to ~/gems' >> ~/.bashrc - echo 'export GEM_HOME=\"\$HOME/gems\"' >> ~/.bashrc - echo 'export PATH=\"\$HOME/gems/bin:\$PATH\"' >> ~/.bashrc - source ~/.bashrc - # Install Jekyll and Bundler - gem install jekyll bundler - # Navigate to the project directory and build the site - cd /var/web_server/htdocs/2024-website - bundle install - JEKYLL_ENV=production bundle exec jekyll build --destination _site - # Ensure correct permissions for the _site directory - sudo chown -R $MUDE_SERVER_USER:$MUDE_SERVER_USER _site - sudo chmod -R 755 _site - " + curl -X POST https://mude.citg.tudelft.nl/hooks/website-deploy \ + -H "Content-Type: application/json" \ + -H "X-Gitlab-Token: glpat-sQ82fiSMo1kCi2TpgSfr" \ + -d '{ + "object_kind": "pipeline", + "object_attributes": { + "status": "success", + "ref": "publish" + } + }' environment: name: production - url: https://mude.citg.tudelft.nl/2024-website \ No newline at end of file + url: https://mude.citg.tudelft.nl/2024 \ No newline at end of file -- GitLab