Kuniks ei ole paremat ja kergemat varianti, siis kasutame ära Gitlab CI, et see saadaks dev keskkonda kõik pushid, mis tehakse reposse.
Selle töötama panemiseks peab tegema reposse faili .gitlab-ci.yml vastava sisuga, mille korral saab Gitlab aru ning teeb ise edasi toimetusi.
Samuti tuleb ära seadistada repos muutujad, mille järgi see deployment toimub. Näide: https://gitlab.com/konekt/mediron-wp-theme/-/settings/ci_cd
Üldised muutujad (kõigil sama) konekt.site korral:
- DEPLOY_HOSTNAME: konekt.site
- DEPLOY_PORT: 22
- DEPLOY_USERNAME: virt85481
- DEPLOY_COMPOSER_INSTALL: /opt/zse/bin/composer
- DEPLOY_PRIVATE_KEY
Et push toimiks, peab lisama ka avaliku võtme vastavasse serverisse. Kui Zone server, siis lihtsalt haldusest saab lisada avaliku võtme, aga teistel juhtudel logi SSH kaudu sisse, ja lisa avalik võti:
echo "AVALIK_VÕTI" >> ~/.ssh/authorized_keys
Kui oled juba SSH-ga serveris sees, siis on lihtne võtta ka DEPLOY_PATH muutuja, kasutades pwd käsku.
Roots\Sage (wp repo)
- Struktuur: wp-content/themes/THEME_NAME
- Muutujad:
- THEME_NAME: dondella-2019
- DEPLOY_PATH: /data01/virt85481/domeenid/www.konekt.site/clients/dondella
image: tetraweb/php
before_script:
- npm install yarn
- cd /builds/${CI_PROJECT_PATH}/wp-content/themes/${THEME_NAME}
- yarn
- yarn run build:production
- rm -rf /builds/${CI_PROJECT_PATH}/node_modules
- rm -rf /builds/${CI_PROJECT_PATH}/wp-content/themes/${THEME_NAME}/node_modules
- rm -rf /builds/${CI_PROJECT_PATH}/wp-content/themes/${THEME_NAME}/.cache-loader
- rm -rf /builds/${CI_PROJECT_PATH}/wp-content/themes/${THEME_NAME}/.git
- rm -rf /builds/${CI_PROJECT_PATH}/wp-content/themes/${THEME_NAME}/vendor
- rm -rf /builds/${CI_PROJECT_PATH}/wp-content/themes/${THEME_NAME}/resources/assets
- rm -rf /builds/${CI_PROJECT_PATH}/wp-content/themes/${THEME_NAME}/{.editorconfig,.eslintrc.js,.gitignore,.gitlab-ci.yml,CHANGELOG.md,CODE_OF_CONDUCT.md,LICENSE.md,package-lock.json,package.json,phpcs.xml,README.md,yarn.lock,.stylelintrc.js}
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
- mkdir -p ~/.ssh
- ssh-keyscan ${DEPLOY_HOSTNAME} >> ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
- eval $(ssh-agent -s)
- '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
stage_deploy:
artifacts:
paths:
- /builds/${CI_PROJECT_PATH}
script:
- ssh-add <(echo "$DEPLOY_PRIVATE_KEY")
- echo "Creating directory ${DEPLOY_PATH}/.versions/${CI_COMMIT_SHORT_SHA}"
- ssh -p $DEPLOY_PORT ${DEPLOY_USERNAME}@${DEPLOY_HOSTNAME} "mkdir -p ${DEPLOY_PATH}/.versions/${CI_COMMIT_SHORT_SHA}"
- echo "Copying files from /builds/${CI_PROJECT_PATH}/ to ${DEPLOY_PATH}/.versions/${CI_COMMIT_SHORT_SHA}"
- scp -P $DEPLOY_PORT -r /builds/${CI_PROJECT_PATH}/* ${DEPLOY_USERNAME}@${DEPLOY_HOSTNAME}:${DEPLOY_PATH}/.versions/${CI_COMMIT_SHORT_SHA}
- echo "Installing theme composer packages"
- ssh -p $DEPLOY_PORT ${DEPLOY_USERNAME}@${DEPLOY_HOSTNAME} "cd ${DEPLOY_PATH}/.versions/${CI_COMMIT_SHORT_SHA}/wp-content/themes/${THEME_NAME} && ${DEPLOY_COMPOSER_INSTALL}"
- ssh -p $DEPLOY_PORT ${DEPLOY_USERNAME}@${DEPLOY_HOSTNAME} "rm -rf ${DEPLOY_PATH}/.versions/${CI_COMMIT_SHORT_SHA}/wp-content/themes/${THEME_NAME}/{composer.json,composer.lock}"
- echo "Removing files for symlinks and copying"
- ssh -p $DEPLOY_PORT ${DEPLOY_USERNAME}@${DEPLOY_HOSTNAME} "unlink ${DEPLOY_PATH}/wp-content/themes/${THEME_NAME} || true"
- ssh -p $DEPLOY_PORT ${DEPLOY_USERNAME}@${DEPLOY_HOSTNAME} "rm -rf ${DEPLOY_PATH}/wp-content/themes/${THEME_NAME} || true"
- ssh -p $DEPLOY_PORT ${DEPLOY_USERNAME}@${DEPLOY_HOSTNAME} "unlink ${DEPLOY_PATH}/wp-config.php || true"
- ssh -p $DEPLOY_PORT ${DEPLOY_USERNAME}@${DEPLOY_HOSTNAME} "rm -rf ${DEPLOY_PATH}/wp-config.php || true"
- ssh -p $DEPLOY_PORT ${DEPLOY_USERNAME}@${DEPLOY_HOSTNAME} "unlink ${DEPLOY_PATH}/index.php || true"
- ssh -p $DEPLOY_PORT ${DEPLOY_USERNAME}@${DEPLOY_HOSTNAME} "rm -rf ${DEPLOY_PATH}/index.php || true"
- ssh -p $DEPLOY_PORT ${DEPLOY_USERNAME}@${DEPLOY_HOSTNAME} "unlink ${DEPLOY_PATH}/composer.json || true"
- ssh -p $DEPLOY_PORT ${DEPLOY_USERNAME}@${DEPLOY_HOSTNAME} "unlink ${DEPLOY_PATH}/composer.lock || true"
- ssh -p $DEPLOY_PORT ${DEPLOY_USERNAME}@${DEPLOY_HOSTNAME} "rm -rf ${DEPLOY_PATH}/{composer.json,composer.lock} || true"
- echo "Creating symlinks & copying files"
- ssh -p $DEPLOY_PORT ${DEPLOY_USERNAME}@${DEPLOY_HOSTNAME} "ln -s ${DEPLOY_PATH}/.versions/${CI_COMMIT_SHORT_SHA}/wp-content/themes/${THEME_NAME} ${DEPLOY_PATH}/wp-content/themes/${THEME_NAME}"
- ssh -p $DEPLOY_PORT ${DEPLOY_USERNAME}@${DEPLOY_HOSTNAME} "cp ${DEPLOY_PATH}/.versions/${CI_COMMIT_SHORT_SHA}/wp-config.php ${DEPLOY_PATH}/wp-config.php"
- ssh -p $DEPLOY_PORT ${DEPLOY_USERNAME}@${DEPLOY_HOSTNAME} "cp ${DEPLOY_PATH}/.versions/${CI_COMMIT_SHORT_SHA}/index.php ${DEPLOY_PATH}/index.php"
- ssh -p $DEPLOY_PORT ${DEPLOY_USERNAME}@${DEPLOY_HOSTNAME} "ln -s ${DEPLOY_PATH}/.versions/${CI_COMMIT_SHORT_SHA}/composer.json ${DEPLOY_PATH}/composer.json"
- ssh -p $DEPLOY_PORT ${DEPLOY_USERNAME}@${DEPLOY_HOSTNAME} "ln -s ${DEPLOY_PATH}/.versions/${CI_COMMIT_SHORT_SHA}/composer.lock ${DEPLOY_PATH}/composer.lock"
Roots\Sage (theme repo)
- Struktuur: /
- Muutujad:
- THEME_NAME: laatsed24-2018
- DEPLOY_PATH: /data01/virt85481/domeenid/www.konekt.site/clients/laatsed24
image: node:8.15.1
stages:
- build
- deploy
- update
before_script:
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
- mkdir -p ~/.ssh
- ssh-keyscan ${DEPLOY_HOSTNAME} >> ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
- eval $(ssh-agent -s)
- '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
- ssh-add <(echo "$DEPLOY_PRIVATE_KEY")
stage_build:
stage: build
artifacts:
paths:
- /builds/${CI_PROJECT_PATH}
when: on_success
script:
- npm install yarn
- cd /builds/${CI_PROJECT_PATH}
- yarn
- yarn run build:production
- rm -rf /builds/${CI_PROJECT_PATH}/node_modules
- rm -rf /builds/${CI_PROJECT_PATH}/.cache-loader
- rm -rf /builds/${CI_PROJECT_PATH}/.git
- rm -rf /builds/${CI_PROJECT_PATH}/vendor
- rm -rf /builds/${CI_PROJECT_PATH}/resources/assets
- rm -rf /builds/${CI_PROJECT_PATH}/{.editorconfig,.eslintrc.js,.gitignore,.gitlab-ci.yml,CHANGELOG.md,CODE_OF_CONDUCT.md,LICENSE.md,package-lock.json,package.json,phpcs.xml,README.md,yarn.lock,.stylelintrc.js}
stage_deploy:
stage: deploy
script:
- echo "Creating directory ${DEPLOY_PATH}/.versions/${CI_COMMIT_SHORT_SHA}"
- ssh -p $DEPLOY_PORT ${DEPLOY_USERNAME}@${DEPLOY_HOSTNAME} "mkdir -p ${DEPLOY_PATH}/.versions/${CI_COMMIT_SHORT_SHA}"
- echo "Copying files from /builds/${CI_PROJECT_PATH}/ to ${DEPLOY_PATH}/.versions/${CI_COMMIT_SHORT_SHA}"
- scp -P $DEPLOY_PORT -r /builds/${CI_PROJECT_PATH}/* ${DEPLOY_USERNAME}@${DEPLOY_HOSTNAME}:${DEPLOY_PATH}/.versions/${CI_COMMIT_SHORT_SHA}
- echo "Installing theme composer packages"
- ssh -p $DEPLOY_PORT ${DEPLOY_USERNAME}@${DEPLOY_HOSTNAME} "cd ${DEPLOY_PATH}/.versions/${CI_COMMIT_SHORT_SHA}/ && ${DEPLOY_COMPOSER_INSTALL}"
- ssh -p $DEPLOY_PORT ${DEPLOY_USERNAME}@${DEPLOY_HOSTNAME} "rm -rf ${DEPLOY_PATH}/.versions/${CI_COMMIT_SHORT_SHA}/{composer.json,composer.lock}"
- echo "Removing files for symlinks and copying"
- ssh -p $DEPLOY_PORT ${DEPLOY_USERNAME}@${DEPLOY_HOSTNAME} "unlink ${DEPLOY_PATH}/wp-content/themes/${THEME_NAME} || true"
- ssh -p $DEPLOY_PORT ${DEPLOY_USERNAME}@${DEPLOY_HOSTNAME} "rm -rf ${DEPLOY_PATH}/wp-content/themes/${THEME_NAME} || true"
- echo "Creating symlinks & copying files"
- ssh -p $DEPLOY_PORT ${DEPLOY_USERNAME}@${DEPLOY_HOSTNAME} "ln -s ${DEPLOY_PATH}/.versions/${CI_COMMIT_SHORT_SHA} ${DEPLOY_PATH}/wp-content/themes/${THEME_NAME}"
stage_update:
stage: update
when: manual
script:
- ssh -p $DEPLOY_PORT ${DEPLOY_USERNAME}@${DEPLOY_HOSTNAME} "cd ${DEPLOY_PATH} && wp-cli plugin update --all"
- ssh -p $DEPLOY_PORT ${DEPLOY_USERNAME}@${DEPLOY_HOSTNAME} "cd ${DEPLOY_PATH} && wp-cli core update"
Roots Under Bootstrap (RUB)
- Struktuur: /
- Muutujad:
- THEME_NAME: mediron-wp-theme
- DEPLOY_PATH: /data01/virt85481/domeenid/www.konekt.site/clients/mediron
image: node:8.15.1
before_script:
- apt-get update
- apt-get install -y ruby ruby-dev rubygems-integration
- gem install sass
- cd /builds/${CI_PROJECT_PATH}
- npm install -g grunt-cli
- npm install
- grunt build
- rm -rf /builds/${CI_PROJECT_PATH}/node_modules
- rm -rf /builds/${CI_PROJECT_PATH}/.sass-cache
- rm -rf /builds/${CI_PROJECT_PATH}/.git
- rm -rf /builds/${CI_PROJECT_PATH}/vendor
- rm -rf /builds/${CI_PROJECT_PATH}/src
- rm -rf /builds/${CI_PROJECT_PATH}/{.editorconfig,.eslintrc.js,.gitignore,.gitlab-ci.yml,CHANGELOG.md,CODE_OF_CONDUCT.md,LICENSE.md,package-lock.json,package.json,phpcs.xml,README.md,yarn.lock,.stylelintrc.js,Gruntfile.js}
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
- mkdir -p ~/.ssh
- ssh-keyscan ${DEPLOY_HOSTNAME} >> ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
- eval $(ssh-agent -s)
- '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
- ssh-add <(echo "$DEPLOY_PRIVATE_KEY")
stage_deploy:
script:
- echo "Creating directory ${DEPLOY_PATH}/.versions/${CI_COMMIT_SHORT_SHA}"
- ssh -p $DEPLOY_PORT ${DEPLOY_USERNAME}@${DEPLOY_HOSTNAME} "mkdir -p ${DEPLOY_PATH}/.versions/${CI_COMMIT_SHORT_SHA}"
- echo "Copying files from /builds/${CI_PROJECT_PATH}/ to ${DEPLOY_PATH}/.versions/${CI_COMMIT_SHORT_SHA}"
- scp -P $DEPLOY_PORT -r /builds/${CI_PROJECT_PATH}/* ${DEPLOY_USERNAME}@${DEPLOY_HOSTNAME}:${DEPLOY_PATH}/.versions/${CI_COMMIT_SHORT_SHA}
- echo "Removing files for symlinks and copying"
- ssh -p $DEPLOY_PORT ${DEPLOY_USERNAME}@${DEPLOY_HOSTNAME} "unlink ${DEPLOY_PATH}/wp-content/themes/${THEME_NAME} || true"
- ssh -p $DEPLOY_PORT ${DEPLOY_USERNAME}@${DEPLOY_HOSTNAME} "rm -rf ${DEPLOY_PATH}/wp-content/themes/${THEME_NAME} || true"
- echo "Creating symlinks & copying files"
- ssh -p $DEPLOY_PORT ${DEPLOY_USERNAME}@${DEPLOY_HOSTNAME} "ln -s ${DEPLOY_PATH}/.versions/${CI_COMMIT_SHORT_SHA} ${DEPLOY_PATH}/wp-content/themes/${THEME_NAME} || true"