Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 28 additions & 14 deletions .github/workflows/lint-test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,24 +7,38 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Fetch history
run: git fetch --prune --unshallow
- name: Set up Helm
uses: azure/setup-helm@v4
with:
version: v3.16.2

- name: Run chart-testing (lint)
id: lint
uses: helm/chart-testing-action@v1.0.0
- name: Set up Python
uses: actions/setup-python@v5
with:
command: lint
config: ct.yaml
python-version: '3.x'

- name: Set up chart-testing
uses: helm/chart-testing-action@v2.6.1

- name: Run chart-testing (list-changed)
id: list-changed
run: |
changed=$(ct list-changed --config ct.yaml)
if [[ -n "$changed" ]]; then
echo "changed=true" >> "$GITHUB_OUTPUT"
fi

- name: Run chart-testing (lint)
run: ct lint --config ct.yaml

- name: Create kind cluster
uses: helm/kind-action@v1.0.0
if: steps.lint.outputs.changed == 'true'
uses: helm/kind-action@v1.10.0
if: steps.list-changed.outputs.changed == 'true'

- name: Run chart-testing (install)
uses: helm/chart-testing-action@v1.0.0
with:
command: install
config: ct.yaml
run: ct install --config ct.yaml
if: steps.list-changed.outputs.changed == 'true'
15 changes: 8 additions & 7 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,24 +8,25 @@ on:
jobs:
release:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout
uses: actions/checkout@v2

- name: Fetch history
run: git fetch --prune --unshallow
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Configure Git
run: |
git config user.name "$GITHUB_ACTOR"
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"

- name: Install Helm
uses: azure/setup-helm@v1
uses: azure/setup-helm@v4
with:
version: v3.4.0
version: v3.16.2

- name: Run chart-releaser
uses: helm/chart-releaser-action@v1.0.0
uses: helm/chart-releaser-action@v1.6.0
env:
CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
4 changes: 2 additions & 2 deletions charts/maildev/Chart.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
apiVersion: v2
name: maildev
version: 0.1.3
appVersion: 1.1.0
version: 0.2.0
appVersion: 2.2.1
type: application
description: SMTP Server + Web Interface for viewing and testing emails during development.
keywords:
Expand Down
37 changes: 18 additions & 19 deletions charts/maildev/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,30 +16,29 @@ even if the `/tmp/maildev` folder, where MailDev stores mails, is persisted.

MailDev source code can be found here: https://github.com/maildev/maildev.

## Known issue with Env Vars

GitHub issue: https://github.com/maildev/maildev/issues/315

So, not every option can be configured using env vars, so, a few options are hardcoded in the deployment:
`["--verbose", "--outgoing-secure", "--auto-relay"]`

## Configuration

Table with the most relevant parameters for MailDev.
Not listing here the more general paramaters such as tolerations, nodeSelectors, etc.

| Parameter | Description | Default |
|------------------------------:|:--------------------------------------------------------------------------------------------------|:--------------------------------------------|
| **outgoing_relay.host** | SMTP Relay host, `MAILDEV_OUTGOING_HOST`. | `` |
| **outgoing_relay.port** | SMTP Relay port, `MAILDEV_OUTGOING_PORT`. | `` |
| **outgoing_relay.user** | SMTP Relay user, `MAILDEV_OUTGOING_USER`. | `` |
| **outgoing_relay.pass** | SMTP Relay password, `MAILDEV_OUTGOING_PASS`. | `` |
| **outgoing_relay.secure** | Use SMTP SSL for outgoing emails, `MAILDEV_OUTGOING_SECURE`. | `true`. Hardcoded in the deployment due to a bug. |
| **ports.smtp** | Port where the SMTP service is listening. (Irrelevant for OCP/K8S), `MAILDEV_SMTP_PORT`. | `1025` |
| **ports.web** | Port where the Web interface service is listening. (Irrelevant for OCP/K8S), `MAILDEV_WEB_PORT`. | `1080` |
| **web.disable** | Disable Web interface. `MAILDEV_DISABLE_WEB`. | `false` |
| **web.user** | Web interface user, `MAILDEV_WEB_USER`. | `admin` |
| **web.pass** | Web interface password, `MAILDEV_WEB_PASS`. | `` |
| Parameter | Description | Default |
|-------------------------------------:|:--------------------------------------------------------------------------------------------------|:--------------------------------------------|
| **verbose** | Enable verbose logging, `--verbose`. | `false` |
| **extraArgs** | Extra CLI args appended after the chart-generated flags, for options not modelled below. | `[]` |
| **extraEnv** | Extra container env vars (list of `name`/`value` or `valueFrom` entries), for options not modelled below. | `[]` |
| **outgoingRelay.host** | SMTP Relay host, `MAILDEV_OUTGOING_HOST`. Only set when defined. | `` |
| **outgoingRelay.port** | SMTP Relay port, `MAILDEV_OUTGOING_PORT`. Only set when defined. | `` |
| **outgoingRelay.user** | SMTP Relay user, `MAILDEV_OUTGOING_USER`. Only set when defined. | `` |
| **outgoingRelay.pass** | SMTP Relay password, `MAILDEV_OUTGOING_PASS`. Only set when defined. | `` |
| **outgoingRelay.secure** | Use SMTP SSL for outgoing emails, `--outgoing-secure`. | `false` |
| **outgoingRelay.autoRelay.enabled** | Relay all incoming emails to the outgoing relay, `--auto-relay`. | `false` |
| **outgoingRelay.autoRelay.receiver** | Relay to a single receiver instead of the original recipient, `MAILDEV_AUTO_RELAY`. | `` |
| **outgoingRelay.autoRelay.rules** | Auto relay rules rendered to `auto-relay-rules.json`, `MAILDEV_AUTO_RELAY_RULES`. | `[{allow: '*'}]` |
| **ports.smtp** | Port where the SMTP service is listening. (Irrelevant for OCP/K8S), `MAILDEV_SMTP_PORT`. | `1025` |
| **ports.web** | Port where the Web interface service is listening. (Irrelevant for OCP/K8S), `MAILDEV_WEB_PORT`. | `1080` |
| **web.disable** | Disable Web interface, `--disable-web`. | `false` |
| **web.user** | Web interface user, `MAILDEV_WEB_USER`. Only set when defined. | `` |
| **web.pass** | Web interface password, `MAILDEV_WEB_PASS`. Only set when defined. | `` |
| **https.enabled** | Switch from http to https protocol, `MAILDEV_HTTPS`. | `false` |
| **https.key** | The file path to the ssl private key, `MAILDEV_HTTPS_KEY`. | |
| **https.cert** | The file path to the ssl cert file, `MAILDEV_HTTPS_CERT`. | |
Expand Down
4 changes: 3 additions & 1 deletion charts/maildev/templates/cm-auto-relay-rules.yaml
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
{{- if .Values.outgoingRelay.autoRelay.enabled -}}
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ include "maildev.fullname" . }}-relay-rules
labels:
{{- include "maildev.labels" . | nindent 4 }}
data:
auto-relay-rules.json: "[\n\t{ \"allow\": \"*\" }\n]\n"
auto-relay-rules.json: '{{ .Values.outgoingRelay.autoRelay.rules | toJson }}'
{{- end -}}
68 changes: 48 additions & 20 deletions charts/maildev/templates/deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,11 @@ spec:
{{- include "maildev.selectorLabels" . | nindent 6 }}
template:
metadata:
{{- with .Values.podAnnotations }}
annotations:
checksum/cm-auto-relay-rules: {{ include (print $.Template.BasePath "/cm-auto-relay-rules.yaml") . | sha256sum }}
{{- with .Values.podAnnotations }}
{{- toYaml . | nindent 8 }}
{{- end }}
{{- end }}
labels:
{{- include "maildev.selectorLabels" . | nindent 8 }}
spec:
Expand All @@ -30,8 +31,22 @@ spec:
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
command: ["/usr/src/app/bin/maildev"]
args: ["--verbose", "--outgoing-secure", "--auto-relay"]
args:
{{- if .Values.verbose }}
- "--verbose"
{{- end }}
{{- if .Values.outgoingRelay.autoRelay.enabled }}
- "--auto-relay"
{{- end }}
{{- if .Values.outgoingRelay.secure }}
- "--outgoing-secure"
{{- end }}
{{- if .Values.web.disable }}
- "--disable-web"
{{- end }}
{{- with .Values.extraArgs }}
{{- toYaml . | nindent 10 }}
{{- end }}
imagePullPolicy: {{ .Values.image.pullPolicy }}
ports:
- name: smtp-port
Expand All @@ -41,8 +56,6 @@ spec:
containerPort: {{ .Values.ports.web }}
protocol: TCP
env:
- name: MAILDEV_DISABLE_WEB
value: "{{ .Values.web.disable }}"
{{- if or .Values.web.user .Values.web.pass}}
- name: MAILDEV_WEB_USER
value: "{{ .Values.web.user }}"
Expand All @@ -53,32 +66,47 @@ spec:
value: "{{ .Values.ports.smtp }}"
- name: MAILDEV_WEB_PORT
value: "{{ .Values.ports.web }}"
{{- if .Values.https.enabled }}
- name: MAILDEV_HTTPS
value: "{{ .Values.https.enabled }}"
{{- if .Values.https.key }}
value: "true"
- name: MAILDEV_HTTPS_KEY
value: "{{ .Values.https.key }}"
{{- end }}
{{- if .Values.https.cert }}
- name: MAILDEV_HTTPS_CERT
value: "{{ .Values.https.cert }}"
{{- end }}
{{- if .Values.outgoingRelay.host }}
- name: MAILDEV_OUTGOING_HOST
value: "{{ .Values.outgoing_relay.host }}"
value: "{{ .Values.outgoingRelay.host }}"
{{- end }}
{{- if .Values.outgoingRelay.port }}
- name: MAILDEV_OUTGOING_PORT
value: "{{ .Values.outgoing_relay.port }}"
value: "{{ .Values.outgoingRelay.port }}"
{{- end }}
{{- if .Values.outgoingRelay.user }}
- name: MAILDEV_OUTGOING_USER
value: "{{ .Values.outgoing_relay.user }}"
value: "{{ .Values.outgoingRelay.user }}"
{{- end }}
{{- if .Values.outgoingRelay.pass }}
- name: MAILDEV_OUTGOING_PASS
value: "{{ .Values.outgoing_relay.pass }}"
- name: MAILDEV_OUTGOING_SECURE
value: "{{ .Values.outgoing_relay.secure }}"
value: "{{ .Values.outgoingRelay.pass }}"
{{- end }}
{{- if .Values.outgoingRelay.autoRelay.enabled }}
- name: MAILDEV_AUTO_RELAY_RULES
value: /etc/maildev/auto-relay-rules.json
{{- if .Values.outgoingRelay.autoRelay.receiver }}
- name: MAILDEV_AUTO_RELAY
value: "{{ .Values.outgoingRelay.autoRelay.receiver }}"
{{- end }}
{{- end }}
{{- if .Values.incoming }}
- name: MAILDEV_INCOMING_USER
value: "{{ .Values.incoming.user }}"
- name: MAILDEV_INCOMING_PASS
value: "{{ .Values.incoming.pass }}"
{{- end }}
{{- with .Values.extraEnv }}
{{- toYaml . | nindent 10 }}
{{- end }}
livenessProbe:
httpGet:
path: /healthz
Expand All @@ -89,17 +117,17 @@ spec:
port: {{ .Values.ports.web }}
resources:
{{- toYaml .Values.resources | nindent 12 }}
{{- if .Values.outgoingRelay.autoRelay.enabled }}
volumeMounts:
- name: auto-relay-rules
mountPath: /etc/maildev
subPath: auto-relay-rules.json
{{- end }}
{{- if .Values.outgoingRelay.autoRelay.enabled }}
volumes:
- name: auto-relay-rules
configMap:
name: {{ include "maildev.fullname" . }}-relay-rules
items:
- key: auto-relay-rules.json
path: auto-relay-rules.json
{{- end }}
{{- with .Values.nodeSelector }}
nodeSelector:
{{- toYaml . | nindent 8 }}
Expand Down
72 changes: 50 additions & 22 deletions charts/maildev/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,52 @@ image:
repository: maildev/maildev
pullPolicy: IfNotPresent
# Overrides the image tag whose default is the chart appVersion.
tag: 1.1.0

outgoing_relay:
# MAILDEV_OUTGOING_HOST
host: smtp.gmail.com
# MAILDEV_OUTGOING_PORT
port: 465
# MAILDEV_OUTGOING_USER
user: 'XXX'
# MAILDEV_OUTGOING_PASS
pass: 'YYY'
# MAILDEV_OUTGOING_SECURE
secure: true

incoming:
# MAILDEV_INCOMING_USER
tag: ""

# Enable verbose logging (--verbose).
verbose: false

# Escape hatches for maildev options this chart does not model directly.
# See https://github.com/maildev/maildev#usage for all flags/env vars.
# Extra CLI args appended after the flags the chart generates, e.g.:
# extraArgs:
# - --hide-extensions
# - STARTTLS
extraArgs: []
# Extra container env vars, passed through verbatim (supports valueFrom).
# Quote string/numeric values yourself, e.g.:
# extraEnv:
# - name: MAILDEV_OUTGOING_PASS
# valueFrom:
# secretKeyRef:
# name: maildev-smtp
# key: password
extraEnv: []

outgoingRelay:
# # MAILDEV_OUTGOING_HOST
# host: smtp.gmail.com
# # MAILDEV_OUTGOING_PORT
# port: 465
# # MAILDEV_OUTGOING_USER
# user: 'XXX'
# # MAILDEV_OUTGOING_PASS
# pass: 'YYY'
# Use SMTP SSL for outgoing emails (--outgoing-secure).
secure: false
autoRelay:
# Relay all incoming emails to the outgoing SMTP relay (--auto-relay).
enabled: false
# Relay to a single receiver instead of the original recipient, MAILDEV_AUTO_RELAY.
# receiver: test@example.com
# Auto relay rules, rendered to the auto-relay-rules.json config file.
rules:
- allow: '*'

incoming: {}
# # MAILDEV_INCOMING_USER
# user:
# MAILDEV_INCOMING_PASS
# # MAILDEV_INCOMING_PASS
# pass:

ports:
Expand All @@ -40,12 +68,12 @@ https:

# Web interface
web:
# MAILDEV_DISABLE_WEB
# Disable the web interface (--disable-web).
disable: false
# MAILDEV_WEB_USER
user: admin
# MAILDEV_WEB_PASS
pass: admin
# # MAILDEV_WEB_USER
# user: admin
# # MAILDEV_WEB_PASS
# pass: admin

imagePullSecrets: []
nameOverride: ""
Expand Down
Loading