Compare commits
No commits in common. "main" and "feat/e2e-cnpg-contract" have entirely different histories.
main
...
feat/e2e-c
11
.maidn/database.yaml
Normal file
11
.maidn/database.yaml
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
apiVersion: postgresql.cnpg.io/v1
|
||||||
|
kind: Cluster
|
||||||
|
metadata:
|
||||||
|
name: maidn-e2e-secret
|
||||||
|
namespace: staging
|
||||||
|
labels:
|
||||||
|
maidn.io/e2e: "true"
|
||||||
|
spec:
|
||||||
|
instances: 1
|
||||||
|
storage:
|
||||||
|
size: 1Gi
|
||||||
4
.maidn/kustomization.yaml
Normal file
4
.maidn/kustomization.yaml
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- database.yaml
|
||||||
4
charts/maidn-e2e-secret/Chart.yaml
Normal file
4
charts/maidn-e2e-secret/Chart.yaml
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
apiVersion: v2
|
||||||
|
name: maidn-e2e-secret
|
||||||
|
description: Maidn E2E secret runtime fixture
|
||||||
|
version: 0.1.0
|
||||||
44
charts/maidn-e2e-secret/templates/deployment.yaml
Normal file
44
charts/maidn-e2e-secret/templates/deployment.yaml
Normal file
|
|
@ -0,0 +1,44 @@
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: {{ .Chart.Name }}
|
||||||
|
labels:
|
||||||
|
app: {{ .Chart.Name }}
|
||||||
|
spec:
|
||||||
|
replicas: {{ .Values.replicaCount }}
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: {{ .Chart.Name }}
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: {{ .Chart.Name }}
|
||||||
|
spec:
|
||||||
|
{{- with .Values.imagePullSecrets }}
|
||||||
|
imagePullSecrets:
|
||||||
|
{{- range . }}
|
||||||
|
- name: {{ . | quote }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
containers:
|
||||||
|
- name: {{ .Chart.Name }}
|
||||||
|
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
|
||||||
|
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 8080
|
||||||
|
env:
|
||||||
|
- name: E2E_SECRET
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: maidn-e2e-secret-runtime-staging
|
||||||
|
key: {{ .Values.runtimeSecret.key | quote }}
|
||||||
|
- name: DATABASE_URL
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: maidn-e2e-secret-app
|
||||||
|
key: uri
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /
|
||||||
|
port: http
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
apiVersion: external-secrets.io/v1
|
||||||
|
kind: ExternalSecret
|
||||||
|
metadata:
|
||||||
|
name: forgejo-registry-credentials
|
||||||
|
spec:
|
||||||
|
secretStoreRef:
|
||||||
|
kind: ClusterSecretStore
|
||||||
|
name: openbao
|
||||||
|
target:
|
||||||
|
name: forgejo-registry-credentials
|
||||||
|
creationPolicy: Owner
|
||||||
|
template:
|
||||||
|
type: kubernetes.io/dockerconfigjson
|
||||||
|
data:
|
||||||
|
.dockerconfigjson: "{{ `{{ .dockerconfigjson }}` }}"
|
||||||
|
data:
|
||||||
|
- secretKey: dockerconfigjson
|
||||||
|
remoteRef:
|
||||||
|
key: cicd/forgejo-registry
|
||||||
|
property: dockerconfigjson
|
||||||
17
charts/maidn-e2e-secret/templates/httproute.yaml
Normal file
17
charts/maidn-e2e-secret/templates/httproute.yaml
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
apiVersion: gateway.networking.k8s.io/v1
|
||||||
|
kind: HTTPRoute
|
||||||
|
metadata:
|
||||||
|
name: {{ .Chart.Name }}
|
||||||
|
spec:
|
||||||
|
parentRefs:
|
||||||
|
- name: {{ .Values.gateway.name }}
|
||||||
|
namespace: {{ .Values.gateway.namespace }}
|
||||||
|
sectionName: http
|
||||||
|
{{- with .Values.gateway.hostname }}
|
||||||
|
hostnames:
|
||||||
|
- {{ . | quote }}
|
||||||
|
{{- end }}
|
||||||
|
rules:
|
||||||
|
- backendRefs:
|
||||||
|
- name: {{ .Chart.Name }}
|
||||||
|
port: 8080
|
||||||
12
charts/maidn-e2e-secret/templates/service.yaml
Normal file
12
charts/maidn-e2e-secret/templates/service.yaml
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: {{ .Chart.Name }}
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
selector:
|
||||||
|
app: {{ .Chart.Name }}
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: 8080
|
||||||
|
targetPort: http
|
||||||
16
charts/maidn-e2e-secret/values.yaml
Normal file
16
charts/maidn-e2e-secret/values.yaml
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
replicaCount: 1
|
||||||
|
|
||||||
|
image:
|
||||||
|
repository: ""
|
||||||
|
tag: dev
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
imagePullSecrets:
|
||||||
|
- forgejo-registry-credentials
|
||||||
|
|
||||||
|
runtimeSecret:
|
||||||
|
key: e2e-secret
|
||||||
|
|
||||||
|
gateway:
|
||||||
|
name: public
|
||||||
|
namespace: gateway-system
|
||||||
|
hostname: ""
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
import { Client } from 'pg';
|
import { Client } from 'pg';
|
||||||
|
|
||||||
export async function isReady(selectOne = databaseSelectOne) {
|
export async function isReady(selectOne = databaseSelectOne) {
|
||||||
if (process.env.MAIDN_RUNTIME_REQUIRED !== 'true') return true;
|
|
||||||
if (!process.env.E2E_SECRET || !process.env.DATABASE_URL) return false;
|
if (!process.env.E2E_SECRET || !process.env.DATABASE_URL) return false;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
|
||||||
|
|
@ -5,13 +5,8 @@ const { isReady } = require('../dist/health.js');
|
||||||
test('readiness requires the secret and a successful database query', async () => {
|
test('readiness requires the secret and a successful database query', async () => {
|
||||||
const secret = process.env.E2E_SECRET;
|
const secret = process.env.E2E_SECRET;
|
||||||
const databaseUrl = process.env.DATABASE_URL;
|
const databaseUrl = process.env.DATABASE_URL;
|
||||||
const runtimeRequired = process.env.MAIDN_RUNTIME_REQUIRED;
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
delete process.env.MAIDN_RUNTIME_REQUIRED;
|
|
||||||
assert.equal(await isReady(async () => assert.fail('query should not run')), true);
|
|
||||||
|
|
||||||
process.env.MAIDN_RUNTIME_REQUIRED = 'true';
|
|
||||||
delete process.env.E2E_SECRET;
|
delete process.env.E2E_SECRET;
|
||||||
assert.equal(await isReady(async () => assert.fail('query should not run')), false);
|
assert.equal(await isReady(async () => assert.fail('query should not run')), false);
|
||||||
|
|
||||||
|
|
@ -27,7 +22,5 @@ test('readiness requires the secret and a successful database query', async () =
|
||||||
else process.env.E2E_SECRET = secret;
|
else process.env.E2E_SECRET = secret;
|
||||||
if (databaseUrl === undefined) delete process.env.DATABASE_URL;
|
if (databaseUrl === undefined) delete process.env.DATABASE_URL;
|
||||||
else process.env.DATABASE_URL = databaseUrl;
|
else process.env.DATABASE_URL = databaseUrl;
|
||||||
if (runtimeRequired === undefined) delete process.env.MAIDN_RUNTIME_REQUIRED;
|
|
||||||
else process.env.MAIDN_RUNTIME_REQUIRED = runtimeRequired;
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue