108
loading...
This website collects cookies to deliver better user experience
SSH_PRIVATE_KEY
private key variable listed, you can skip this step.SSH_PRIVATE_KEY
<ssh_private_key_details>
. (To generate a new SSH public and private key pair, follow steps from this guide. Make sure to not accidentally overwrite any existing key pairs.)Variable
authorized_keys
in the production server.ssh [email protected]
)Add the SSH public key to authorized_keys
nano ~/.ssh/authorized_keys
Paste the SSH public key(starts withssh-rsa
) in a new line
Save the file
.gitlab-ci.yml
in the root folder of your repository for CI/CD pipeline configurations.gitlab-ci.yml
in the root folderbefore_script:
- apt-get update -qq
- apt-get install -qq git
# Setup SSH deploy keys
- "which ssh-agent || ( apt-get install -qq openssh-client )"
- eval $(ssh-agent -s)
- ssh-add <(echo "$SSH_PRIVATE_KEY")
- mkdir -p ~/.ssh
- '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
deploy:
stage: deploy
environment:
name: production
url: https://example.com
script:
- bash deploy/deploy.sh
only:
- master
ubuntu
docker packagegit
package and then configure it to add our SSH_PRIVATE_KEY
StrictHostKeyChecking
to no
, to ensure git doesn't show manual prompt during initial connection.deploy
with a single pipeline stage deploy
which listens to commits on master
and runs the script in deploy/deploy.sh
deploy.sh
in deploy
folder#!/bin/bash
DEPLOY_SERVER=$DEPLOY_SERVER
echo "Deploying to ${DEPLOY_SERVER}"
ssh root@${DEPLOY_SERVER} 'bash' < ./deploy/server.sh
DEPLOY_SERVER
with value domain.com
for the repository using step 1.deploy/server.sh
server.sh
in deploy
folder# Pull code
cd /var/www/html/folder-name/
git checkout master
git pull origin master
# Build and deploy
yarn install
yarn run build
pm2 restart server
folder-name
in the above script to match the folder name used in the prerequisite stepubuntu
and empty tags.gitlab-ci.yml
and deploy/deploy.sh
, deploy/server.sh
files to master to start the automated deployment.active
, protected
and tags
to see if any of the conditions are incorrect.