feat/infrastructure-upgrade #3
52
.github/workflows/ci.yml
vendored
52
.github/workflows/ci.yml
vendored
@@ -65,33 +65,33 @@ jobs:
|
|||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v3
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
# - name: Build and Push Image
|
- name: Build and Push Image
|
||||||
# uses: docker/build-push-action@v6
|
uses: docker/build-push-action@v6
|
||||||
# with:
|
with:
|
||||||
# file: Dockerfile
|
file: Dockerfile
|
||||||
# push: true
|
push: true
|
||||||
# tags: ${{ steps.metadata.outputs.tags }}
|
tags: ${{ steps.metadata.outputs.tags }}
|
||||||
# labels: ${{ steps.metadata.outputs.labels }}
|
labels: ${{ steps.metadata.outputs.labels }}
|
||||||
# build-args: |
|
build-args: |
|
||||||
# DATABASE_URL=${{ secrets.DATABASE_URL }}
|
DATABASE_URL=${{ secrets.DATABASE_URL }}
|
||||||
|
|
||||||
# - name: Install dependencies
|
- name: Install dependencies
|
||||||
# run: pnpm install --frozen-lockfile
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
# - name: Run Migrations
|
- name: Run Migrations
|
||||||
# run: pnpm --filter amoc payload migrate
|
run: pnpm --filter amoc payload migrate
|
||||||
# env:
|
env:
|
||||||
# DATABASE_URL: ${{ secrets.DATABASE_URL }}
|
DATABASE_URL: ${{ secrets.DATABASE_URL }}
|
||||||
|
|
||||||
# - name: Setup Nomad
|
- name: Setup Nomad
|
||||||
# uses: hashicorp/setup-nomad@main
|
uses: hashicorp/setup-nomad@main
|
||||||
# with:
|
with:
|
||||||
# nomad_version: '1.10.5'
|
nomad_version: '1.10.5'
|
||||||
|
|
||||||
# - name: Deploy Job to Nomad
|
- name: Deploy Job to Nomad
|
||||||
# run: |
|
run: |
|
||||||
# export DEPLOYMENT_VERSION="${GITHUB_SHA:0:7}-$(date +%s)"
|
export DEPLOYMENT_VERSION="${GITHUB_SHA:0:7}-$(date +%s)"
|
||||||
# nomad job run -var="deployment_version=$DEPLOYMENT_VERSION" infra/nomad/portfolio.nomad.hcl
|
nomad job run -var="deployment_version=$DEPLOYMENT_VERSION" infra/nomad/portfolio.nomad.hcl
|
||||||
# env:
|
env:
|
||||||
# NOMAD_ADDR: ${{ vars.NOMAD_ADDR }}
|
NOMAD_ADDR: ${{ vars.NOMAD_ADDR }}
|
||||||
# NOMAD_TOKEN: ${{ secrets.NOMAD_TOKEN }}
|
NOMAD_TOKEN: ${{ secrets.NOMAD_TOKEN }}
|
||||||
70
infra/portfolio.nomad.hcl
Normal file
70
infra/portfolio.nomad.hcl
Normal 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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user