parent
5c8e734e81
commit
35569f7db8
@ -0,0 +1,60 @@
|
||||
name: CI
|
||||
|
||||
# Controls when the action will run. Triggers the workflow on push to master or development
|
||||
# with a tag like v1.0.0 or v1.0.0-dev
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- v[0-9]+.[0-9]+.[0-9]+
|
||||
- v[0-9]+.[0-9]+.[0-9]+-[a-zA-Z]+
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
# Steps represent a sequence of tasks that will be executed as part of the job
|
||||
steps:
|
||||
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: Get Version
|
||||
id: get_version
|
||||
uses: battila7/get-version-action@v2.0.0
|
||||
|
||||
- name: install buildx
|
||||
id: buildx
|
||||
uses: crazy-max/ghaction-docker-buildx@v1
|
||||
with:
|
||||
version: latest
|
||||
|
||||
- name: Docker Login
|
||||
# You may pin to the exact commit or the version.
|
||||
# uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9
|
||||
uses: docker/login-action@v1.10.0
|
||||
with:
|
||||
registry: ${{ secrets.DR_URL }}
|
||||
# Username used to log against the Docker registry
|
||||
username: ${{ secrets.DH_USERNAME }}
|
||||
# Password or personal access token used to log against the Docker registry
|
||||
password: ${{ secrets.DH_PASSWORD }}
|
||||
# Log out from the Docker registry at the end of a job
|
||||
logout: true
|
||||
|
||||
- name: Docker Build & Push
|
||||
env:
|
||||
IMAGE_TAG: ${{ steps.get_version.outputs.version-without-v }}
|
||||
run: |
|
||||
docker buildx build --push \
|
||||
--tag ${{ secrets.DR_URL }}/quartermaster:$IMAGE_TAG \
|
||||
--platform linux/amd64,linux/arm/v7,linux/arm64 .
|
||||
- name: Update deployment file
|
||||
run: TAG=${{ steps.get_version.outputs.version-without-v }} && sed -i 's|<IMAGE>|${{ secrets.DR_URL }}/quartermaster:'${TAG}'|' $GITHUB_WORKSPACE/deployment.yml
|
||||
|
||||
- uses: azure/k8s-set-context@v1
|
||||
with:
|
||||
method: kubeconfig
|
||||
kubeconfig: ${{ secrets.KUBE_CONFIG }}
|
||||
id: setcontext
|
||||
|
||||
- name: Deploy to Kubernetes
|
||||
run: kubectl apply -f $GITHUB_WORKSPACE/deployment.yml
|
||||
@ -0,0 +1,32 @@
|
||||
FROM node:lts-alpine as frontend
|
||||
|
||||
WORKDIR /frontend
|
||||
|
||||
COPY pkg/ui/frontend/package*.json ./
|
||||
RUN npm install
|
||||
COPY pkg/ui/frontend .
|
||||
RUN npm run build
|
||||
|
||||
FROM golang:1.17-alpine as dev
|
||||
|
||||
WORKDIR /go/src/Quartermaster
|
||||
COPY ./go.mod .
|
||||
COPY ./go.sum .
|
||||
|
||||
RUN go mod download
|
||||
|
||||
COPY . .
|
||||
COPY --from=frontend /frontend/dist pkg/ui/frontend/dist
|
||||
RUN go build -tags prod -o quartermaster cmd/quartermaster/main.go
|
||||
|
||||
CMD [ "go", "run", "cmd/quartermaster/main.go"]
|
||||
|
||||
from alpine
|
||||
|
||||
WORKDIR /bin
|
||||
|
||||
COPY --from=dev /go/src/Quartermaster/quartermaster ./quartermaster
|
||||
RUN mkdir -p /internal/postgres/migrations
|
||||
COPY --from=dev /go/src/Quartermaster/internal/postgres/migrations /internal/postgres/migrations
|
||||
|
||||
CMD [ "quartermaster" ]
|
||||
@ -0,0 +1,105 @@
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: quartermaster
|
||||
namespace: quartermaster
|
||||
labels:
|
||||
app: quartermaster
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: quartermaster
|
||||
strategy:
|
||||
rollingUpdate:
|
||||
maxSurge: 1
|
||||
maxUnavailable: 1
|
||||
minReadySeconds: 120
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: quartermaster
|
||||
spec:
|
||||
containers:
|
||||
- name: pgbouncer
|
||||
image: timoha/pgbouncer:1.15.0
|
||||
resources:
|
||||
requests:
|
||||
memory: "256Mi"
|
||||
cpu: "0.5"
|
||||
limits:
|
||||
memory: "512Mi"
|
||||
cpu: "1"
|
||||
env:
|
||||
- name: DATABASE_URL
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: quartermaster
|
||||
key: pgbouncer_url
|
||||
- name: SERVER_TLS_SSLMODE
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: quartermaster
|
||||
key: pgbouncer_ssl
|
||||
- name: AUTH_TYPE
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: quartermaster
|
||||
key: pgbouncer_auth
|
||||
ports:
|
||||
- containerPort: 5432
|
||||
- name: quartermaster
|
||||
image: <IMAGE>
|
||||
resources:
|
||||
requests:
|
||||
memory: "512Mi"
|
||||
cpu: "1"
|
||||
limits:
|
||||
memory: "1Gi"
|
||||
cpu: "2"
|
||||
ports:
|
||||
- containerPort: 8000
|
||||
env:
|
||||
- name: DATABASE_URL
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: quartermaster
|
||||
key: database_url
|
||||
imagePullSecrets:
|
||||
- name: registry-1
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: quartermaster-service
|
||||
namespace: quartermaster
|
||||
labels:
|
||||
app: quartermaster
|
||||
spec:
|
||||
selector:
|
||||
app: quartermaster
|
||||
ports:
|
||||
- protocol: TCP
|
||||
name: http
|
||||
port: 8000
|
||||
targetPort: 8000
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: quartermaster
|
||||
namespace: quartermaster
|
||||
spec:
|
||||
rules:
|
||||
- host: quartermaster.djpianalto.com
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: quartermaster-service
|
||||
port:
|
||||
number: 8000
|
||||
|
||||
Loading…
Reference in new issue