add proper release and migrations
All checks were successful
Build and Publish / build-release (push) Successful in 1m48s
All checks were successful
Build and Publish / build-release (push) Successful in 1m48s
This commit is contained in:
@@ -52,9 +52,6 @@ if cookie = System.get_env("RELEASE_COOKIE") do
|
|||||||
config :elixir, :cookie, cookie
|
config :elixir, :cookie, cookie
|
||||||
end
|
end
|
||||||
|
|
||||||
config :policy_service, PolicyServiceWeb.Endpoint,
|
|
||||||
http: [port: String.to_integer(System.get_env("PORT", "4000"))]
|
|
||||||
|
|
||||||
if config_env() == :prod do
|
if config_env() == :prod do
|
||||||
database_url =
|
database_url =
|
||||||
System.get_env("DATABASE_URL") ||
|
System.get_env("DATABASE_URL") ||
|
||||||
@@ -67,13 +64,14 @@ if config_env() == :prod do
|
|||||||
|
|
||||||
config :policy_service, PolicyService.Repo,
|
config :policy_service, PolicyService.Repo,
|
||||||
url: database_url,
|
url: database_url,
|
||||||
pool_size: 1,
|
pool_size: String.to_integer(System.get_env("DATABASE_POOL_SIZE") || "1"),
|
||||||
socket_options: maybe_ipv6
|
socket_options: maybe_ipv6
|
||||||
|
|
||||||
config :policy_service, PolicyService.EventStore,
|
config :policy_service, PolicyService.EventStore,
|
||||||
serializer: Commanded.Serialization.JsonSerializer,
|
serializer: Commanded.Serialization.JsonSerializer,
|
||||||
url: database_url,
|
url: database_url,
|
||||||
pool_size: 1
|
schema: "eventstore",
|
||||||
|
pool_size: String.to_integer(System.get_env("EVENTSTORE_POOL_SIZE") || "1")
|
||||||
|
|
||||||
secret_key_base =
|
secret_key_base =
|
||||||
System.get_env("SECRET_KEY_BASE") ||
|
System.get_env("SECRET_KEY_BASE") ||
|
||||||
@@ -87,9 +85,10 @@ if config_env() == :prod do
|
|||||||
config :policy_service, :dns_cluster_query, System.get_env("DNS_CLUSTER_QUERY")
|
config :policy_service, :dns_cluster_query, System.get_env("DNS_CLUSTER_QUERY")
|
||||||
|
|
||||||
config :policy_service, PolicyServiceWeb.Endpoint,
|
config :policy_service, PolicyServiceWeb.Endpoint,
|
||||||
url: [host: host, port: 80, scheme: "http"],
|
url: [host: host, port: String.to_integer(System.get_env("PORT", "4000")), scheme: "http"],
|
||||||
http: [
|
http: [
|
||||||
ip: {0, 0, 0, 0, 0, 0, 0, 0}
|
ip: {0, 0, 0, 0, 0, 0, 0, 0},
|
||||||
|
port: String.to_integer(System.get_env("PORT", "4000"))
|
||||||
],
|
],
|
||||||
secret_key_base: secret_key_base
|
secret_key_base: secret_key_base
|
||||||
end
|
end
|
||||||
|
|||||||
37
lib/policy_service/release.ex
Normal file
37
lib/policy_service/release.ex
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
defmodule PolicyService.Release do
|
||||||
|
@moduledoc """
|
||||||
|
Used for executing DB release tasks when run in production without Mix
|
||||||
|
installed.
|
||||||
|
"""
|
||||||
|
@app :policy_service
|
||||||
|
|
||||||
|
def migrate do
|
||||||
|
load_app()
|
||||||
|
init_event_store()
|
||||||
|
|
||||||
|
for repo <- repos() do
|
||||||
|
{:ok, _, _} = Ecto.Migrator.with_repo(repo, &Ecto.Migrator.run(&1, :up, all: true))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def rollback(repo, version) do
|
||||||
|
load_app()
|
||||||
|
{:ok, _, _} = Ecto.Migrator.with_repo(repo, &Ecto.Migrator.run(&1, :down, to: version))
|
||||||
|
end
|
||||||
|
|
||||||
|
defp repos do
|
||||||
|
Application.fetch_env!(@app, :ecto_repos)
|
||||||
|
end
|
||||||
|
|
||||||
|
defp load_app do
|
||||||
|
Application.ensure_all_started(:ssl)
|
||||||
|
Application.ensure_all_started(:postgrex)
|
||||||
|
Application.ensure_loaded(@app)
|
||||||
|
end
|
||||||
|
|
||||||
|
def init_event_store do
|
||||||
|
config = PolicyService.EventStore.config()
|
||||||
|
|
||||||
|
:ok = EventStore.Tasks.Init.exec(config, [])
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -3,22 +3,33 @@ controllers:
|
|||||||
enabled: true
|
enabled: true
|
||||||
type: deployment
|
type: deployment
|
||||||
replicas: 1
|
replicas: 1
|
||||||
# initContainers:
|
initContainers:
|
||||||
# migrate:
|
migrate:
|
||||||
# image:
|
image:
|
||||||
# repository: gitea.corredorconect.com/software-engineering/policy-service
|
repository: gitea.corredorconect.com/software-engineering/policy-service
|
||||||
# tag: '{{ $.Chart.AppVersion }}'
|
tag: '{{ $.Chart.AppVersion }}'
|
||||||
# command:
|
command:
|
||||||
# - /bin/sh
|
- "/bin/policy_service"
|
||||||
# - -c
|
args:
|
||||||
# - "/opt/policy_service/bin/policy_service eval 'Mix.Tasks.Ecto.Create.run([])' --no-start && /opt/policy_service/bin/policy_service eval 'Mix.Tasks.Ecto.Migrate.run([])' --no-start && /opt/policy_service/bin/policy_service eval 'Mix.Tasks.EventStore.Create.run([])' --no-start && /opt/policy_service/bin/policy_service eval 'Mix.Tasks.EventStore.Init.run([])' --no-start"
|
- "eval"
|
||||||
# env:
|
- "PolicyService.Release.migrate"
|
||||||
# MIX_ENV: prod
|
env:
|
||||||
# DATABASE_URL:
|
MIX_ENV: prod
|
||||||
# valueFrom:
|
SECRET_KEY_BASE:
|
||||||
# secretKeyRef:
|
valueFrom:
|
||||||
# name: policy-service-pg-app
|
secretKeyRef:
|
||||||
# key: uri
|
name: '{{ include "bjw-s.common.lib.chart.names.fullname" $ }}-secrets'
|
||||||
|
key: secretKeyBase
|
||||||
|
RELEASE_COOKIE:
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: '{{ include "bjw-s.common.lib.chart.names.fullname" $ }}-secrets'
|
||||||
|
key: cookie
|
||||||
|
DATABASE_URL:
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: '{{ include "bjw-s.common.lib.chart.names.fullname" $ }}-pg-app'
|
||||||
|
key: uri
|
||||||
containers:
|
containers:
|
||||||
main:
|
main:
|
||||||
image:
|
image:
|
||||||
@@ -57,7 +68,7 @@ controllers:
|
|||||||
DATABASE_URL:
|
DATABASE_URL:
|
||||||
valueFrom:
|
valueFrom:
|
||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
name: policy-service-cluster-pg-app
|
name: '{{ include "bjw-s.common.lib.chart.names.fullname" $ }}-pg-app'
|
||||||
key: uri
|
key: uri
|
||||||
probes:
|
probes:
|
||||||
liveness:
|
liveness:
|
||||||
@@ -177,3 +188,18 @@ rawResources:
|
|||||||
owner: policy_service
|
owner: policy_service
|
||||||
storage:
|
storage:
|
||||||
size: 5Gi
|
size: 5Gi
|
||||||
|
|
||||||
|
database:
|
||||||
|
enabled: true
|
||||||
|
apiVersion: postgresql.cnpg.io/v1
|
||||||
|
kind: Database
|
||||||
|
suffix: database
|
||||||
|
spec:
|
||||||
|
spec:
|
||||||
|
name: policy_service
|
||||||
|
owner: policy_service
|
||||||
|
cluster:
|
||||||
|
name: '{{ include "bjw-s.common.lib.chart.names.fullname" $ }}-cluster-pg'
|
||||||
|
schemas:
|
||||||
|
- name: eventstore
|
||||||
|
owner: policy_service
|
||||||
|
|||||||
Reference in New Issue
Block a user