apiVersion: batch/v1
kind: Job
metadata:
name: app-api-migrate-job
namespace: app
spec:
template:
spec:
containers:
- name: main
image: dev4cozy/app:api
command: ["/bin/sh", "-c"]
args: ["bin/rails db:migrate"]
env:
- name: RAILS_ENV
valueFrom:
configMapKeyRef:
name: app-config
key: RAILS_ENV
- name: RAILS_MASTER_KEY
valueFrom:
secretKeyRef:
name: app-secret
key: RAILS_MASTER_KEY
- name: POSTGRES_HOST
valueFrom:
secretKeyRef:
name: app-secret
key: POSTGRES_HOST
- name: POSTGRES_DB
valueFrom:
secretKeyRef:
name: app-secret
key: POSTGRES_DB
- name: POSTGRES_USER
valueFrom:
secretKeyRef:
name: app-secret
key: POSTGRES_USER
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: app-secret
key: POSTGRES_PASSWORD
restartPolicy: Never
stage('Run Database Migrations') {
steps {
container('kubectl') {
withCredentials([file(credentialsId: 'k8s-config', variable: 'KUBECONFIG')]) {
script {
// Ensure the job doesn't already exist
sh 'kubectl delete job squadefi-api-migrate-job --ignore-not-found=true -n squadefi'
// Apply the job definition
sh 'kubectl apply -f .helmcharts/k8s/squadefi-api-migrate-job.yaml'
// Wait for the job to complete
sh 'kubectl wait --for=condition=complete job/squadefi-api-migrate-job -n squadefi'
// Clean up the job after completion
sh 'kubectl delete job squadefi-api-migrate-job -n squadefi'
}
}
}
}
}