25 Commits

Author SHA1 Message Date
931bd61ad9 chore(release): 1.0.0 [skip ci]
# 1.0.0 (2024-02-28)

### Bug Fixes

* Replace chart release-name ([6d6c4d5](6d6c4d53d2))
2024-02-28 09:18:40 +00:00
377260449c chore: Fix job sequential workflow
All checks were successful
Container & Helm chart / Semantic Release (Dry-run) (push) Successful in 37s
Container & Helm chart / Container image (push) Successful in 1m4s
Container & Helm chart / Helm chart (push) Successful in 18s
Container & Helm chart / Semantic Release (push) Successful in 41s
2024-02-28 20:16:08 +11:00
d5759d3f29 chore: Install missing modules
Some checks failed
Container & Helm chart / Semantic Release (Dry-run) (push) Successful in 47s
Container & Helm chart / Helm chart (push) Successful in 18s
Container & Helm chart / Semantic Release (push) Failing after 33s
Container & Helm chart / Container image (push) Successful in 1m17s
2024-02-28 20:12:07 +11:00
d9dcf86077 build: Complete build/release workflow
Some checks failed
Container & Helm chart / Semantic Release (Dry-run) (push) Successful in 38s
Container & Helm chart / Helm chart (push) Successful in 17s
Container & Helm chart / Semantic Release (push) Failing after 39s
Container & Helm chart / Container image (push) Successful in 1m16s
2024-02-28 17:39:47 +11:00
5c6b3cc9fc chore: Fix incorrect variable references
All checks were successful
Container & Helm chart / Semantic Release (Dry-run) (push) Successful in 38s
Container & Helm chart / Helm chart (push) Successful in 18s
Container & Helm chart / Container image (push) Successful in 1m1s
2024-02-28 17:30:21 +11:00
893f4ccb4e chore: Quote password string
Some checks failed
Container & Helm chart / Semantic Release (Dry-run) (push) Successful in 43s
Container & Helm chart / Helm chart (push) Failing after 15s
Container & Helm chart / Container image (push) Successful in 1m15s
2024-02-28 17:20:55 +11:00
d45a3e1f7a chore: Correct chart registry uri
Some checks failed
Container & Helm chart / Semantic Release (Dry-run) (push) Successful in 43s
Container & Helm chart / Helm chart (push) Failing after 15s
Container & Helm chart / Container image (push) Successful in 1m17s
2024-02-28 17:07:53 +11:00
c78e5df746 chore: Push to chart repository directly
Some checks failed
Container & Helm chart / Semantic Release (Dry-run) (push) Successful in 35s
Container & Helm chart / Helm chart (push) Failing after 15s
Container & Helm chart / Container image (push) Successful in 59s
2024-02-28 15:09:54 +11:00
24fde16871 chore: Debug ioctl error
Some checks failed
Container & Helm chart / Semantic Release (Dry-run) (push) Successful in 36s
Container & Helm chart / Helm chart (push) Failing after 15s
Container & Helm chart / Container image (push) Successful in 1m15s
2024-02-28 15:03:07 +11:00
b0586dede0 chore: Pass password through stdin
Some checks failed
Container & Helm chart / Semantic Release (Dry-run) (push) Successful in 44s
Container & Helm chart / Helm chart (push) Failing after 15s
Container & Helm chart / Container image (push) Successful in 1m10s
2024-02-28 11:39:20 +11:00
d24b91f0a6 chore: Explicit node container image version
Some checks failed
Container & Helm chart / Semantic Release (Dry-run) (push) Successful in 59s
Container & Helm chart / Helm chart (push) Failing after 1m19s
Container & Helm chart / Container image (push) Successful in 3m7s
2024-02-28 11:20:48 +11:00
75c1172047 chore: Revert job container image (upgraded base act runner image instead)
Some checks failed
Container & Helm chart / Semantic Release (Dry-run) (push) Successful in 41s
Container & Helm chart / Container image (push) Successful in 1m8s
Container & Helm chart / Helm chart (push) Failing after 1m0s
2024-02-28 11:09:26 +11:00
e122264b71 chore: Rebase job container to ensure more current package versions
Some checks failed
Container & Helm chart / Semantic Release (Dry-run) (push) Successful in 42s
Container & Helm chart / Helm chart (push) Failing after 1m3s
Container & Helm chart / Container image (push) Successful in 1m24s
2024-02-28 10:36:37 +11:00
56bd49735e chore: Refactor job id's and names to support output variables
Some checks failed
Container & Helm chart / Semantic Release (Dry-run) (push) Successful in 37s
Container & Helm chart / Helm chart (push) Failing after 15s
Container & Helm chart / Container image (push) Successful in 1m8s
2024-02-28 10:30:10 +11:00
f592d75764 chore: Attempt different syntax to pass variables between jobs
Some checks failed
Container & Helm chart / Semantic Release (Dry-run) (push) Successful in 35s
Container & Helm chart / Helm chart (push) Failing after 16s
Container & Helm chart / Container image (push) Successful in 54s
2024-02-28 10:23:00 +11:00
7f08271a4e chore: Remove redundant escape sequence
Some checks failed
Container & Helm chart / Semantic Release (Dry-run) (push) Successful in 35s
Container & Helm chart / Helm chart (push) Failing after 15s
Container & Helm chart / Container image (push) Successful in 1m8s
2024-02-28 10:16:40 +11:00
6d6c4d53d2 fix: Replace chart release-name
Some checks failed
Container & Helm chart / Semantic Release (Dry-run) (push) Successful in 30s
Container & Helm chart / Helm chart (push) Failing after 16s
Container & Helm chart / Container image (push) Successful in 1m3s
2024-02-28 10:04:19 +11:00
a85702d856 chore: Remove redundant sudo call #2
Some checks failed
Container & Helm chart / Semantic Release (Dry-run) (push) Failing after 29s
Container & Helm chart / Container image (push) Has been skipped
Container & Helm chart / Helm chart (push) Has been skipped
2024-02-28 10:01:58 +11:00
ca1196b371 chore: Fix assertion script syntax
Some checks failed
Container & Helm chart / Semantic Release (Dry-run) (push) Failing after 42s
Container & Helm chart / Container image (push) Has been skipped
Container & Helm chart / Helm chart (push) Has been skipped
2024-02-28 10:00:38 +11:00
c5600cac26 chore: Remove redundant sudo
Some checks failed
Container & Helm chart / Semantic Release (Dry-run) (push) Successful in 28s
Container & Helm chart / Helm chart (push) Failing after 4s
Container & Helm chart / Container image (push) Successful in 50s
2024-02-28 09:51:11 +11:00
d00dd86775 chore: Debug release version assertion
Some checks failed
Container & Helm chart / Semantic Release (Dry-run) (push) Successful in 28s
Container & Helm chart / Helm chart (push) Failing after 4s
Container & Helm chart / Container image (push) Has been cancelled
2024-02-28 09:50:06 +11:00
6c47c45f6d chore: Rebase helm job container image
Some checks failed
Container & Helm chart / Semantic Release (Dry-run) (push) Successful in 38s
Container & Helm chart / Container image (push) Successful in 1m2s
Container & Helm chart / Helm chart (push) Failing after 5s
2024-02-28 09:47:53 +11:00
5d08acf764 chore: Downgrade artifact actions
Some checks failed
Container & Helm chart / Checkout (push) Successful in 16s
Container & Helm chart / Semantic Release (Dry-run) (push) Failing after 40s
Container & Helm chart / Container image (push) Has been skipped
Container & Helm chart / Helm chart (push) Has been skipped
2024-02-28 09:39:53 +11:00
638adc1c40 chore: Deduplicate checkout steps
Some checks failed
Container & Helm chart / Checkout (push) Failing after 54s
Container & Helm chart / Semantic Release (Dry-run) (push) Has been skipped
Container & Helm chart / Container image (push) Has been skipped
Container & Helm chart / Helm chart (push) Has been skipped
2024-02-28 09:35:23 +11:00
a050bd8cba chore: Add missing checkout step
Some checks failed
Container & Helm chart / Semantic Release (Dry-run) (push) Successful in 33s
Container & Helm chart / Helm chart (push) Failing after 8s
Container & Helm chart / Container image (push) Successful in 51s
2024-02-28 09:23:21 +11:00
12 changed files with 6114 additions and 59 deletions

View File

@ -2,8 +2,11 @@ name: Container & Helm chart
on: [push]
jobs:
Semantic Release (Dry-run):
semrel_dryrun:
name: Semantic Release (Dry-run)
runs-on: dind-rootless
outputs:
version: ${{ steps.sem_rel.outputs.version }}
steps:
- name: Check out repository code
uses: actions/checkout@v3
@ -29,18 +32,22 @@ jobs:
--plugins @semantic-release/commit-analyzer,@semantic-release/exec \
--analyzeCommits @semantic-release/commit-analyzer \
--verifyRelease @semantic-release/exec \
--verifyReleaseCmd 'echo "version=$${nextRelease.version}" >> $GITHUB_OUTPUT'
# --verifyReleaseCmd 'echo "$${nextRelease.version}" > .version'
--verifyReleaseCmd 'echo "version=${nextRelease.version}" >> $GITHUB_OUTPUT'
env:
GIT_CREDENTIALS: djpbessems:${{ secrets.GIT_APIKEY }}
GIT_CREDENTIALS: ${{ secrets.GIT_USERNAME }}:${{ secrets.GIT_APIKEY }}
- name: Assert semantic release output
run: |
[[ -z "${{ steps.sem_rel.outputs.version }}" ]] && (echo 'No release tag - exiting'; exit 1) || exit 0
[[ -z "${{ steps.sem_rel.outputs.version }}" ]] && {
echo 'No release tag - exiting'; exit 1
} || {
echo 'Release tag set correctly: ${{ steps.sem_rel.outputs.version }}'; exit 0
}
Container image:
build_container:
name: Container image
container: catthehacker/ubuntu:act-latest
runs-on: dind
needs: Semantic Release (Dry-run)
needs: semrel_dryrun
steps:
- name: Checkout
uses: actions/checkout@v4
@ -51,33 +58,66 @@ jobs:
image: djpbessems/spamasaurusrex
username: ${{ secrets.GIT_USERNAME }}
password: ${{ secrets.GIT_APIKEY }}
tag: ${{ steps.sem_rel.outputs.version }}
tag: ${{ needs.semrel_dryrun.outputs.version }}
Helm chart:
container: alpine/helm
build_chart:
name: Helm chart
runs-on: dind-rootless
needs: Semantic Release (Dry-run)
needs: semrel_dryrun
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Inject semantic release version
run: |
sed -i 's/{{ chart_version }}/'${{ steps.sem_rel.outputs.version }}'/g' charts/spamasaurusrex/Chart.yaml
sed -i 's/{{ image_tag }}/'${{ steps.sem_rel.outputs.version }}'/g' charts/spamasaurusrex/values.yaml
sed -i 's/{{ chart_version }}/'${{ needs.semrel_dryrun.outputs.version }}'/g' charts/spamasaurusrex/Chart.yaml
sed -i 's/{{ image_tag }}/'${{ needs.semrel_dryrun.outputs.version }}'/g' charts/spamasaurusrex/values.yaml
- name: Install helm w/ plugins
run: |
curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | tee /usr/share/keyrings/helm.gpg > /dev/null
apt-get install apt-transport-https --yes
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | tee /etc/apt/sources.list.d/helm-stable-debian.list
apt-get update && apt-get install helm --yes
helm plugin install https://github.com/chartmuseum/helm-push
- name: Package helm chart into archive
run: |
helm package ./charts/spamasaurusrex
- name: Install helm plugin
run: |
helm plugin install https://github.com/chartmuseum/helm-push
- name: Add target helm repository
run: |
helm repo add \
--username $GIT_USERNAME \
--password $GIT_APIKEY \
--username ${{ secrets.GIT_USERNAME }} \
--password ${{ secrets.GIT_APIKEY }} \
spamasaurus \
https://code.spamasaurus.com/api/packages/$GIT_USERNAME/helm
https://code.spamasaurus.com/api/packages/${{ secrets.GIT_USERNAME }}/helm
- name: Push helm chart
run: |
helm cm-push \
spamasaurusrex-*.tgz \
spamasaurus
semrel:
name: Semantic Release
runs-on: dind-rootless
needs: [build_container, build_chart]
steps:
- name: Check out repository code
uses: actions/checkout@v3
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: 20
- name: Install dependencies
run: |
npm install \
semantic-release \
@semantic-release/changelog \
@semantic-release/commit-analyzer \
@semantic-release/git \
@semantic-release/release-notes-generator
- name: Semantic Release
run: |
npx semantic-release \
--branches ${{ gitea.refname }} \
--tag-format 'v${version}' \
--plugins @semantic-release/commit-analyzer,@semantic-release/release-notes-generator,@semantic-release/changelog,@semantic-release/git
env:
GIT_CREDENTIALS: ${{ secrets.GIT_USERNAME }}:${{ secrets.GIT_APIKEY }}

6
CHANGELOG.md Normal file
View File

@ -0,0 +1,6 @@
# 1.0.0 (2024-02-28)
### Bug Fixes
* Replace chart release-name ([6d6c4d5](http://gitea.gitea.svc.cluster.local:3000/djpbessems/ContainerImage.SpamasaurusRex/commit/6d6c4d53d2e69f3af064a94a4e0fc009cf83b965))

View File

@ -6,16 +6,16 @@
{{- end }}
{{- end }}
{{- else if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "json-server.fullname" . }})
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "spamasaurusrex.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "json-server.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "json-server.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "spamasaurusrex.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "spamasaurusrex.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "json-server.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "spamasaurusrex.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT

View File

@ -1,7 +1,7 @@
{{/*
Expand the name of the chart.
*/}}
{{- define "json-server.name" -}}
{{- define "spamasaurusrex.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }}
@ -10,7 +10,7 @@ Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "json-server.fullname" -}}
{{- define "spamasaurusrex.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
@ -26,16 +26,16 @@ If release name contains chart name it will be used as a full name.
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "json-server.chart" -}}
{{- define "spamasaurusrex.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Common labels
*/}}
{{- define "json-server.labels" -}}
helm.sh/chart: {{ include "json-server.chart" . }}
{{ include "json-server.selectorLabels" . }}
{{- define "spamasaurusrex.labels" -}}
helm.sh/chart: {{ include "spamasaurusrex.chart" . }}
{{ include "spamasaurusrex.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
@ -45,17 +45,17 @@ app.kubernetes.io/managed-by: {{ .Release.Service }}
{{/*
Selector labels
*/}}
{{- define "json-server.selectorLabels" -}}
app.kubernetes.io/name: {{ include "json-server.name" . }}
{{- define "spamasaurusrex.selectorLabels" -}}
app.kubernetes.io/name: {{ include "spamasaurusrex.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
{{/*
Create the name of the service account to use
*/}}
{{- define "json-server.serviceAccountName" -}}
{{- define "spamasaurusrex.serviceAccountName" -}}
{{- if .Values.serviceAccount.create }}
{{- default (include "json-server.fullname" .) .Values.serviceAccount.name }}
{{- default (include "spamasaurusrex.fullname" .) .Values.serviceAccount.name }}
{{- else }}
{{- default "default" .Values.serviceAccount.name }}
{{- end }}

View File

@ -4,7 +4,7 @@ metadata:
name: {{ .Release.Name }}-clusterrolebinding
subjects:
- kind: ServiceAccount
name: {{ include "json-server.serviceAccountName" . }}
name: {{ include "spamasaurusrex.serviceAccountName" . }}
namespace: {{ .Release.Namespace }}
roleRef:
kind: ClusterRole

View File

@ -1,14 +1,14 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "json-server.fullname" . }}
name: {{ include "spamasaurusrex.fullname" . }}
labels:
{{- include "json-server.labels" . | nindent 4 }}
{{- include "spamasaurusrex.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "json-server.selectorLabels" . | nindent 6 }}
{{- include "spamasaurusrex.selectorLabels" . | nindent 6 }}
template:
metadata:
{{- with .Values.podAnnotations }}
@ -16,13 +16,13 @@ spec:
{{- toYaml . | nindent 8 }}
{{- end }}
labels:
{{- include "json-server.selectorLabels" . | nindent 8 }}
{{- include "spamasaurusrex.selectorLabels" . | nindent 8 }}
spec:
{{- with .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
serviceAccountName: {{ include "json-server.serviceAccountName" . }}
serviceAccountName: {{ include "spamasaurusrex.serviceAccountName" . }}
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
containers:
@ -50,7 +50,7 @@ spec:
mountPath: /data/db.json
subPath: db.json
- name: {{ .Release.Name }}-configmap
mountPath: /usr/local/lib/node_modules/json-server/public/index.html
mountPath: /usr/local/lib/node_modules/spamasaurusrex/public/index.html
subPath: index.html
- name: {{ .Chart.Name }}-sidecar
securityContext:

View File

@ -1,5 +1,5 @@
{{- if .Values.ingress.enabled -}}
{{- $fullName := include "json-server.fullname" . -}}
{{- $fullName := include "spamasaurusrex.fullname" . -}}
{{- $svcPort := .Values.service.port -}}
{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }}
{{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }}
@ -17,7 +17,7 @@ kind: Ingress
metadata:
name: {{ $fullName }}
labels:
{{- include "json-server.labels" . | nindent 4 }}
{{- include "spamasaurusrex.labels" . | nindent 4 }}
{{- with .Values.ingress.annotations }}
annotations:
{{- toYaml . | nindent 4 }}

View File

@ -1,9 +1,9 @@
apiVersion: v1
kind: Service
metadata:
name: {{ include "json-server.fullname" . }}
name: {{ include "spamasaurusrex.fullname" . }}
labels:
{{- include "json-server.labels" . | nindent 4 }}
{{- include "spamasaurusrex.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
ports:
@ -12,4 +12,4 @@ spec:
protocol: TCP
name: http
selector:
{{- include "json-server.selectorLabels" . | nindent 4 }}
{{- include "spamasaurusrex.selectorLabels" . | nindent 4 }}

View File

@ -2,9 +2,9 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ include "json-server.serviceAccountName" . }}
name: {{ include "spamasaurusrex.serviceAccountName" . }}
labels:
{{- include "json-server.labels" . | nindent 4 }}
{{- include "spamasaurusrex.labels" . | nindent 4 }}
{{- with .Values.serviceAccount.annotations }}
annotations:
{{- toYaml . | nindent 4 }}

View File

@ -1,4 +1,4 @@
# Default values for json-server.
# Default values for spamasaurusrex.
spamasaurusRex:
image:
@ -51,7 +51,7 @@ ingress:
- path: /
pathType: ImplementationSpecific
tls: []
# - secretName: json-server-tls
# - secretName: spamasaurusrex-tls
# hosts:
# - alias.example.org

6000
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

9
package.json Normal file
View File

@ -0,0 +1,9 @@
{
"dependencies": {
"@semantic-release/changelog": "^6.0.3",
"@semantic-release/commit-analyzer": "^11.1.0",
"@semantic-release/git": "^10.0.1",
"@semantic-release/release-notes-generator": "^12.1.0",
"semantic-release": "^23.0.2"
}
}