Skip to content

Commit

Permalink
Merge branch 'main' into develop
Browse files Browse the repository at this point in the history
  • Loading branch information
Vylpes committed Sep 23, 2023
2 parents 38e433c + e866f2e commit 0f7e47c
Show file tree
Hide file tree
Showing 4 changed files with 167 additions and 18 deletions.
63 changes: 45 additions & 18 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,38 +7,65 @@ on:

jobs:
build:
environment: prod

runs-on: ubuntu-latest

strategy:
matrix:
node-version: [18.x, 20.x]

steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
- name: Use Node.js
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- run: yarn install
node-version: 18.x
- run: yarn install --frozen-lockfile
- run: yarn build
- run: yarn test

- name: RSync to Stage Server
uses: D3rHase/rsync-deploy-action@v0.2
with:
HOST: ${{ secrets.SSH_HOST }}
PORT: ${{ secrets.SSH_PORT }}
USER: ${{ secrets.SSH_USER }}
PRIVATE_SSH_KEY: ${{ secrets.SSH_KEY }}
REPOSITORY_PATH: ${{ secrets.SSH_REPO_PATH }}
SERVER_PATH: ${{ secrets.SSH_SERVER_PATH }}

deploy:
environment: prod
needs: build
runs-on: ubuntu-latest
steps:
- uses: appleboy/ssh-action@v1.0.0
env:
DB_NAME: ${{ secrets.DB_PROD_NAME }}
DB_AUTH_USER: ${{ secrets.DB_PROD_AUTH_USER }}
DB_AUTH_PASS: ${{ secrets.DB_PROD_AUTH_PASS }}
DB_ROOT_HOST: ${{ secrets.DB_PROD_ROOT_HOST }}
BOT_TOKEN: ${{ secrets.BOT_PROD_TOKEN }}
DB_NAME: ${{ secrets.DB_NAME }}
DB_AUTH_USER: ${{ secrets.DB_AUTH_USER }}
DB_AUTH_PASS: ${{ secrets.DB_AUTH_PASS }}
DB_HOST: ${{ secrets.DB_HOST }}
DB_PORT: ${{ secrets.DB_PORT }}
DB_ROOT_HOST: ${{ secrets.DB_ROOT_HOST }}
DB_SYNC: ${{ secrets.DB_SYNC }}
DB_LOGGING: ${{ secrets.DB_LOGGING }}
DB_DATA_LOCATION: ${{ secrets.DB_DATA_LOCATION }}
BOT_TOKEN: ${{ secrets.BOT_TOKEN }}
BOT_VER: ${{ vars.BOT_VER }}
BOT_AUTHOR: ${{ vars.BOT_AUTHOR }}
BOT_OWNERID: ${{ vars.BOT_OWNERID }}
BOT_CLIENTID: ${{ vars.BOT_CLIENTID }}
ABOUT_FUNDING: ${{ vars.ABOUT_FUNDING }}
ABOUT_REPO: ${{ vars.ABOUT_FUNDING }}
with:
host: ${{ secrets.SSH_PROD_HOST }}
username: ${{ secrets.SSH_PROD_USER }}
key: ${{ secrets.SSH_PROD_KEY }}
port: ${{ secrets.SSH_PROD_PORT }}
script: ${{ secrets.SSH_PROD_COMMAND }}
envs: DB_NAME,DB_AUTH_USER,DB_AUTH_PASS,DB_ROOT_HOST,BOT_TOKEN
host: ${{ secrets.SSH_HOST }}
username: ${{ secrets.SSH_USER }}
key: ${{ secrets.SSH_KEY }}
port: ${{ secrets.SSH_PORT }}
envs: DB_NAME,DB_AUTH_USER,DB_AUTH_PASS,DB_HOST,DB_PORT,DB_ROOT_HOST,DB_SYNC,DB_LOGGING,DB_DATA_LOCATION,BOT_TOKEN,BOT_VER,BOT_AUTHOR,BOT_OWNERID,BOT_CLIENTID,ABOUT_FUNDING,ABOUT_REPO
script: |
cd ~/apps/vylbot/ \
&& docker compose down \
&& (pm2 stop vylbot || true) \
&& (pm2 delete vylbot || true) \
&& docker compose up -d \
&& sleep 10 \
&& yarn run db:up \
&& pm2 start --name vylbot dist/vylbot.js
26 changes: 26 additions & 0 deletions infrastructure/prod/.terraform.lock.hcl

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

39 changes: 39 additions & 0 deletions infrastructure/prod/cloud-config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#cloud-config

users:
- default
- name: vylpes
primary-group: vylpes
shell: /bin/bash
groups: users, docker, sudo
ssh-authorized-keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC/EDwCD5t3/WpyqDwpGAJMHTfbpPT9W5ffQfVqlMFl4TA8eVzPS+H/czy3PQOMUAgVKtO1Xup8GdFovN6dMVEk4IPNNS8w8OheSUKOCsRq1A1r2vDHZ/h393l4A9jWGq2HRBdUdQhy7SDXC/VBY2Yo5IQuAhI6gaXz/AENQ0Qf5PpMevfGs2jVu+0Ic5J1ccjX+8FWXZtRi0VF84WIixUfdyNgsi0RkywlRKyas7bDAWRtfB556qrxaQd0iTdyL0sCR+XAIx5cGbf5knFUXXeQvsASczgzn6X4Jzzgnv/MB0K/nALZeETxI9IXki4yQuGSomiR9WRYSIRLZsjrWxUTwk5RPMuAofW8hr20HL5QqBLVRzFVf7RipmCug8JAx8EE1uk8SLFOJCQBwzYTTbp1KAsJtVkUL+0YEIsgFuhPcXXIN1DbHCeKu5WHKnPxx9kwW/bx9q+Id1crYFWMm/a+MJPBNhIGmv9+HAWOeSZDeROCYd9Nx3yEdT15+hn5L/GZaMyk5AbCwjFWVwUVIAt5Pcn/AkBngRc5DuA+JE7TbbeWsYyN379gwswl/IYBP6fO13V80iDwwkQdizvBCtnmD3Q200aI1unpydR4lZlpPyP0ug0t7jJSEAn9nzQmsMSw7sI9BJ3uf49Y8Qf7LPd9llQeJl+qFXpvDBcji/qHYQ== vylpes@Ethans-MacBook-Pro.local
sudo: ['ALL=(ALL) NOPASSWD:ALL']

runcmd:
- ufw limit ssh
- ufw allow 80
- ufw allow 443
- ufw enable

apt:
sources:
docker.list:
source: deb [arch=amd64] https://download.docker.com/linux/debian $RELEASE stable
keyid: 9DC858229FC7DD38854AE2D88D81803C0EBFCD88
nodejs.list:
source: deb [signed-by=$KEY_FILE] https://deb.nodesource.com/node_18.x $RELEASE main
keyid: 9FD3B784BC1C6FC31A8A0A1C1655A0AB68576280

packages:
- git
- rsync
- docker-ce
- docker-ce-cli
- containerd.io
- docker-buildx-plugin
- docker-compose-plugin
- nodejs

runcmd:
- npm install -g yarn pm2
57 changes: 57 additions & 0 deletions infrastructure/prod/main.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# Variables
variable "VULTR_API_KEY" {
description = "The Vultr API Key"
}

variable "INSTANCE_PREFIX" {
description = "The prefix to be added before instance labels"
}

# Providers
terraform {
required_providers {
vultr = {
source = "vultr/vultr"
version = "2.16.1"
}
}
}

provider "vultr" {
api_key = var.VULTR_API_KEY
rate_limit = 100
retry_limit = 3
}

# Resources
resource "vultr_instance" "vps-app" {
label = "${var.INSTANCE_PREFIX}-ldn-vps-app"
hostname = "${var.INSTANCE_PREFIX}-ldn-vps-app"
plan = "vc2-1c-1gb"
region = "lhr"
os_id = "2136"
enable_ipv6 = false
user_data = file("./cloud-config.yml")
}

resource "vultr_block_storage" "bs-data" {
size_gb = 10
region = "lhr"
attached_to_instance = "${vultr_instance.vps-app.id}"
label = "${var.INSTANCE_PREFIX}-ldn-bs-data"

lifecycle {
prevent_destroy = true
}
}

resource "vultr_reserved_ip" "ip-app" {
region = "lhr"
ip_type = "v4"
instance_id = "${vultr_instance.vps-app.id}"
}

# Outputs
output "instance_ip" {
value = vultr_instance.vps-app.main_ip
}

0 comments on commit 0f7e47c

Please sign in to comment.