This manual is about setting up an automatic deploy workflow using nodejs, PM2, nginx and GitLab CI. It is tested on:
- Target server: Ubuntu 16.04 x64. This is suitable for Ubuntu 14.x.
- Windows 10 on my PC to work.
robocopy c:\Sourcepath c:\Destpath /E /XC /XN /XO | |
:: /E makes Robocopy recursively copy subdirectories, including empty ones. | |
:: /XC excludes existing files with the same timestamp, but different file sizes. Robocopy normally overwrites those. | |
:: /XN excludes existing files newer than the copy in the source directory. Robocopy normally overwrites those. | |
:: /XO excludes existing files older than the copy in the source directory. Robocopy normally overwrites those. | |
:: With the Changed, Older, and Newer classes excluded, Robocopy will exclude files existing in the destination directory. |
# Official framework image. Look for the different tagged releases at: | |
# https://hub.docker.com/r/library/node/tags/ | |
image: node:6 | |
before_script: | |
- npm install | |
# This folder is cached between builds | |
# http://docs.gitlab.com/ce/ci/yaml/README.html#cache | |
cache: |
/* | |
This file is now hosted here: | |
https://github.com/victornpb/undiscord | |
*/ |
Peter Naur's classic 1985 essay "Programming as Theory Building" argues that a program is not its source code. A program is a shared mental construct (he uses the word theory) that lives in the minds of the people who work on it. If you lose the people, you lose the program. The code is merely a written representation of the program, and it's lossy, so you can't reconstruct
# Used on Ubuntu 18.04 and 20.04 | |
# Find instructions for other OSes here: https://certbot.eff.org/instructions | |
# Install Certbot via Snaps | |
sudo snap install core; sudo snap refresh core | |
sudo snap install --classic certbot | |
sudo ln -s /snap/bin/certbot /usr/bin/certbot | |
# Install DNS CloudFlare plugin | |
sudo snap set certbot trust-plugin-with-root=ok |