feat/infrastructure-upgrade #3

Merged
LiamPietralla merged 5 commits from feat/infrastructure-upgrade into main 2026-01-16 16:11:46 +11:00
2 changed files with 96 additions and 26 deletions
Showing only changes of commit e15c6af515 - Show all commits

View File

@@ -65,33 +65,33 @@ jobs:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
# - name: Build and Push Image
# uses: docker/build-push-action@v6
# with:
# file: Dockerfile
# push: true
# tags: ${{ steps.metadata.outputs.tags }}
# labels: ${{ steps.metadata.outputs.labels }}
# build-args: |
# DATABASE_URL=${{ secrets.DATABASE_URL }}
- name: Build and Push Image
uses: docker/build-push-action@v6
with:
file: Dockerfile
push: true
tags: ${{ steps.metadata.outputs.tags }}
labels: ${{ steps.metadata.outputs.labels }}
build-args: |
DATABASE_URL=${{ secrets.DATABASE_URL }}
# - name: Install dependencies
# run: pnpm install --frozen-lockfile
- name: Install dependencies
run: pnpm install --frozen-lockfile
# - name: Run Migrations
# run: pnpm --filter amoc payload migrate
# env:
# DATABASE_URL: ${{ secrets.DATABASE_URL }}
- name: Run Migrations
run: pnpm --filter amoc payload migrate
env:
DATABASE_URL: ${{ secrets.DATABASE_URL }}
# - name: Setup Nomad
# uses: hashicorp/setup-nomad@main
# with:
# nomad_version: '1.10.5'
- name: Setup Nomad
uses: hashicorp/setup-nomad@main
with:
nomad_version: '1.10.5'
# - name: Deploy Job to Nomad
# run: |
# export DEPLOYMENT_VERSION="${GITHUB_SHA:0:7}-$(date +%s)"
# nomad job run -var="deployment_version=$DEPLOYMENT_VERSION" infra/nomad/portfolio.nomad.hcl
# env:
# NOMAD_ADDR: ${{ vars.NOMAD_ADDR }}
# NOMAD_TOKEN: ${{ secrets.NOMAD_TOKEN }}
- name: Deploy Job to Nomad
run: |
export DEPLOYMENT_VERSION="${GITHUB_SHA:0:7}-$(date +%s)"
nomad job run -var="deployment_version=$DEPLOYMENT_VERSION" infra/nomad/portfolio.nomad.hcl
env:
NOMAD_ADDR: ${{ vars.NOMAD_ADDR }}
NOMAD_TOKEN: ${{ secrets.NOMAD_TOKEN }}

70
infra/portfolio.nomad.hcl Normal file
View File

@@ -0,0 +1,70 @@
variable "deployment_version" {
type = string
description = "The deployment version from CI/CD"
default = "unknown"
}
job "portfolio_v2" {
datacenters = ["dc1"]
type = "service"
meta {
version = var.deployment_version
}
group "portfolio.v2" {
count = 1
network {
port "web" {
to = 3000
}
}
service {
name = "portfolio_v2"
port = "web"
# tags = [
# "traefik.enable=true",
# "traefik.http.routers.portfolio-v2.rule=Host(`liampietralla.com`)",
# "traefik.http.routers.portfolio-v2.entrypoints=websecure",
# "traefik.http.routers.portfolio-v2.tls.certresolver=letsencrypt"
# ]
check {
type = "http"
path = "/api/health"
interval = "10s"
timeout = "3s"
}
}
task "portfolio_v2" {
driver = "docker"
config {
image = "liamsgit.dev/liampietralla/liam-portfolio:latest"
force_pull = true
ports = ["web"]
}
template {
data = <<EOF
{{- range service "postgres" }}
DATABASE_URL=postgres://portfolio-user:{{ with nomadVar "nomad/jobs/portfolio_v2/portfolio_v2/portfolio_v2" }}{{ .DATABASE_URL_PASSWORD }}{{ end }}@{{ .Address }}:{{ .Port }}/portfolio
{{- end }}
PAYLOAD_SECRET={{ with nomadVar "nomad/jobs/portfolio_v2/portfolio_v2/portfolio_v2" }}{{ .PAYLOAD_SECRET }}{{ end }}
S3_BUCKET="portfolio"
S3_REGION="us-east-1"
{{- range service "s3-api" }}
S3_ENDPOINT=http://{{ .Address }}:{{ .Port }}
{{- end }}
S3_ACCESS_KEY_ID={{ with nomadVar "nomad/jobs/portfolio_v2/portfolio_v2/portfolio_v2" }}{{ .S3_ACCESS_KEY_ID }}{{ end }}
S3_SECRET_ACCESS_KEY={{ with nomadVar "nomad/jobs/portfolio_v2/portfolio_v2/portfolio_v2" }}{{ .S3_SECRET_ACCESS_KEY }}{{ end }}
EOF
destination = "secrets/env"
env = true
}
}
}
}