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
|
||||
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
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