Add CI/CD
This commit is contained in:
67
.gitlab-ci.yml
Normal file
67
.gitlab-ci.yml
Normal file
@@ -0,0 +1,67 @@
|
||||
# .gitlab-ci.yaml
|
||||
|
||||
# Define the default image to be used for all jobs.
|
||||
# This image should have bash and rsync/ssh client available.
|
||||
image: alpine/git:latest
|
||||
|
||||
# Define stages for the pipeline.
|
||||
# 'deploy' is the main stage responsible for deployment.
|
||||
stages:
|
||||
- deploy
|
||||
|
||||
# Define the 'deploy_website' job.
|
||||
deploy_website:
|
||||
stage: deploy
|
||||
|
||||
# Only run this job when changes are pushed to the 'main' branch.
|
||||
only:
|
||||
- main
|
||||
|
||||
# Define variables required for SSH connection and deployment path.
|
||||
variables:
|
||||
# Replace with your actual SSH user for the target server.
|
||||
SSH_USER: "root"
|
||||
# Replace with the IP address or hostname of your target server.
|
||||
# If the GitLab Runner is on the same machine as /var/www/jmpgames.it,
|
||||
# you can use 'localhost' or '127.0.0.1'.
|
||||
SSH_HOST: "localhost"
|
||||
# The absolute path on the target server where the website files will be deployed.
|
||||
DEPLOY_PATH: "/var/www/jmpgames.it"
|
||||
# The local path within the GitLab Runner's working directory where your website files are located.
|
||||
# Assuming your website files are in the root of your repository.
|
||||
WEBSITE_SOURCE_PATH: "./"
|
||||
|
||||
# Before the script runs, ensure SSH key is added and permissions are set.
|
||||
before_script:
|
||||
# Ensure the .ssh directory exists with correct permissions.
|
||||
- mkdir -p ~/.ssh
|
||||
- chmod 700 ~/.ssh
|
||||
|
||||
# Add the private SSH key. SSH_PRIVATE_KEY should be a CI/CD variable
|
||||
# configured in GitLab with your deployment key.
|
||||
# Make sure this variable is "masked" and "protected".
|
||||
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' > ~/.ssh/id_rsa
|
||||
- chmod 600 ~/.ssh/id_rsa
|
||||
|
||||
# Add your server's host key to known_hosts to avoid host key checking prompts.
|
||||
# This is crucial for non-interactive scripts.
|
||||
# Replace with your server's actual public host key.
|
||||
# You can get it by running `ssh-keyscan your_server_ip_or_hostname` on your local machine.
|
||||
- ssh-keyscan "$SSH_HOST" >> ~/.ssh/known_hosts
|
||||
- chmod 644 ~/.ssh/known_hosts
|
||||
|
||||
# The main script to execute for deployment.
|
||||
script:
|
||||
# Use rsync to synchronize files from the GitLab Runner to the target server.
|
||||
# -a: archive mode (preserves permissions, ownership, timestamps, recursive)
|
||||
# -v: verbose output
|
||||
# -z: compress file data during the transfer
|
||||
# --delete: delete extraneous files from dest dirs (DANGER: USE WITH CAUTION!)
|
||||
# Only use if you want to ensure the target directory exactly mirrors the source.
|
||||
# Otherwise, remove this flag.
|
||||
- rsync -avz --delete $WEBSITE_SOURCE_PATH $SSH_USER@$SSH_HOST:$DEPLOY_PATH
|
||||
|
||||
# Define what happens if the job succeeds or fails.
|
||||
after_script:
|
||||
# Optional: Clean up the SSH key from the runner's environment for security.
|
||||
- rm -f ~/.ssh/id_rsa
|
||||
Reference in New Issue
Block a user