#!/usr/bin/env bash set -o errexit set -o pipefail main() { local target="${1:-system0}" "_run_${target}" } _run_system0() { set -o xtrace cd /tmp sudo swapon --show | if ! grep -q /swap; then sudo fallocate -l 8G /swap sudo chmod 600 /swap sudo mkswap -L swap /swap sudo swapon /swap fi if ! grep -q ^LABEL=swap /etc/fstab &>/dev/null; then echo 'LABEL=swap none swap sw 0 0' | sudo tee -a /etc/fstab fi sudo sysctl vm.swappiness=10 echo 'vm.swappiness=10' | sudo tee /etc/sysctl.d/99-swappiness.conf sudo sysctl vm.vfs_cache_pressure=50 echo 'vm.vfs_cache_pressure=50' | sudo tee /etc/sysctl.d/99-cache-pressure.conf sudo apt-get update -y sudo apt-get install -y \ build-essential \ ca-certificates \ curl \ git \ gnupg \ nginx-full \ redis dpkg --get-selections || true | if ! grep -qE '^postgresql-client-11.+install$'; then echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list &>/dev/null curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - sudo apt-get update -y sudo apt-get install -y postgresql-11 postgresql-client-11 fi pg_ctlcluster 11 main start sudo -H -u postgres bash </dev/null nvm install 2>/dev/null nvm use 2>/dev/null cp -v /tmp/app.env /home/spoke/app/.env sha1sum /home/spoke/app/.env set -o allexport source /home/spoke/app/.env set +o allexport yarn --version yarn install --ignore-scripts --non-interactive --frozen-lockfile local git_head git_head="$(cat .git/HEAD || true)" local yarn_prod_build_ref yarn_prod_build_ref="$( cat /home/spoke/yarn_prod_build_ref 2>/dev/null || true )" if [[ "${git_head}" == "${yarn_prod_build_ref}" ]]; then echo "skipping yarn run prod-build" return fi yarn run prod-build rm -rf ./node_modules yarn install --production --ignore-scripts echo "${git_head}" >/home/spoke/yarn_prod_build_ref } main "${@}"