From 33534351092f4c0b6bb8d9d8cea667cfaf993995 Mon Sep 17 00:00:00 2001 From: Kwangjin Lee <k.lee-5@student.tudelft.nl> Date: Fri, 23 Aug 2024 10:30:04 +0200 Subject: [PATCH] Update .gitlab-ci.yml file --- .gitlab-ci.yml | 108 ++++++++++++++++++++++++++++++------------------- 1 file changed, 67 insertions(+), 41 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 22581ec..638c183 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,51 +1,77 @@ -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 + - apt-get update && apt-get install -y yq + +build-page: + stage: build + script: + - > + if [ "$CI_COMMIT_BRANCH" = "publish" ]; then + ./build_page.sh "/2024/" true + else + ./build_page.sh "/2024/draft/" false + fi + - echo "Listing contents of public directory:" + - ls -laR public + artifacts: + paths: + - public + expire_in: 1 week + rules: + - if: $CI_COMMIT_BRANCH == "main" || $CI_COMMIT_BRANCH == "publish" + +deploy-draft: + stage: deploy + needs: ["build-page"] + 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 + needs: ["build-page"] 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