Compare commits
138 Commits
985d60d532
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 5dd015875f | |||
| 4960f15ead | |||
| 9f6469dd73 | |||
| 4371c53508 | |||
| 10c638bfe8 | |||
| b9030396c7 | |||
| 27ab96a003 | |||
| b01be4abe4 | |||
| 5fa6567f2a | |||
| 63afc77197 | |||
| b398373485 | |||
| a87fd358dc | |||
| b0b3106692 | |||
| fc530795fe | |||
| 937c79ab91 | |||
| f30b7e47c2 | |||
| 73ed84431f | |||
| 00238c2f88 | |||
| 0a732bee0c | |||
| 5e3328aad3 | |||
| 3ad532c982 | |||
| 8fabd3612a | |||
| a9d902a87a | |||
| f05e966c53 | |||
| 3bb2e3c2c0 | |||
| 08cf7f58c3 | |||
| 86f102142e | |||
| b15772f700 | |||
| c53716e5f5 | |||
| 0be89f97f4 | |||
| f77653ef13 | |||
| 3ca37402c4 | |||
| 57d67c12cf | |||
| d9e9a97395 | |||
| accbfa0a6d | |||
| b52d76cc58 | |||
| 6da426af29 | |||
| 3e90af0eb5 | |||
| 9b3615a0cf | |||
| cc90faad93 | |||
| ae2a9bcd9d | |||
| 72989730c7 | |||
| e72427c734 | |||
| 4c82749916 | |||
| a68e3f8967 | |||
| ef96e0fc71 | |||
| b6551ef375 | |||
| 7dd1446d5a | |||
| dd2b93b64f | |||
| 876ef10477 | |||
| a4f5472bc4 | |||
| 73a7615dd1 | |||
| aaa2a7a606 | |||
| 468c07fa8c | |||
| 67478f0845 | |||
| cb8d7fdf1c | |||
| 995d61a6a0 | |||
| a20354992a | |||
| a6427aa56c | |||
| a9272358fd | |||
| 35acd8f602 | |||
| 3b1c52427a | |||
| 031472bab1 | |||
| 4a30f53bd2 | |||
| 5ae2a63f5b | |||
| 78cd19307e | |||
| 892a3b6bef | |||
| e1221f7913 | |||
| 598c91f1c4 | |||
| 855245e8f8 | |||
| 3467b8a427 | |||
| 97f3fcf206 | |||
| 9763fd7744 | |||
| 7d6be3985c | |||
| e694ad3fb3 | |||
| b7913afca1 | |||
| 7d27140114 | |||
| 6e613e1e65 | |||
| dafa71f8f3 | |||
| 708e52dfbb | |||
| 418bc22998 | |||
| 85b15e8590 | |||
| 32d6244acf | |||
| 8e2c65663b | |||
| 9ead73777f | |||
| 3e0cb21863 | |||
| a9f2dc375c | |||
| 63fdef0e26 | |||
| fcbde5abc4 | |||
| 2ba863bb98 | |||
| 441f39b0cd | |||
| 4a4e8ab77f | |||
| 68a25dc9fd | |||
| 96a44b823e | |||
| e23dbd4df2 | |||
| 1e6f90271a | |||
| b789f2030e | |||
| 77ef98c3e0 | |||
| 6156597591 | |||
| 48c232c275 | |||
| 9e897757c6 | |||
| b5beaa88b1 | |||
| 5508678a6c | |||
| f3ed21b8a8 | |||
| 2f4a342811 | |||
| 39c52e03a3 | |||
| 43aeb04ade | |||
| 9122e9f339 | |||
| e212872535 | |||
| 08a0d296a3 | |||
| 32c1f3a450 | |||
| b865730722 | |||
| 8682100cc6 | |||
| 5bad734c75 | |||
| 0343b2d9ee | |||
| 1c100f1c6b | |||
| bee206bec1 | |||
| e4b3d06e1d | |||
| 7408d8effb | |||
| 274ab32e2a | |||
| ce87523597 | |||
| 25710206d5 | |||
| c705885dda | |||
| 783d307998 | |||
| 06397c2b57 | |||
| e102d910bc | |||
| bcc6a517ee | |||
| f1a0008763 | |||
| 425351b338 | |||
| 9b90e7a19b | |||
| b58b3a3ed0 | |||
| cc5fe67955 | |||
| 31f7014f07 | |||
| c9ac593fc5 | |||
| 0f538ceb3c | |||
| 9fa80152bf | |||
| f617b0d175 | |||
| 027367a16c |
@@ -6,7 +6,6 @@ on:
|
|||||||
- main
|
- main
|
||||||
paths:
|
paths:
|
||||||
- 'hosts/**'
|
- 'hosts/**'
|
||||||
- ! 'hosts/archive'
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
docker-lint:
|
docker-lint:
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ on:
|
|||||||
- main
|
- main
|
||||||
paths:
|
paths:
|
||||||
- 'hosts/**'
|
- 'hosts/**'
|
||||||
- ! 'hosts/archive'
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
docker-lint:
|
docker-lint:
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ on:
|
|||||||
- main
|
- main
|
||||||
paths:
|
paths:
|
||||||
- 'clusters/**'
|
- 'clusters/**'
|
||||||
- ! 'clusters/*/archive'
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
helm-lint:
|
helm-lint:
|
||||||
@@ -32,7 +31,7 @@ jobs:
|
|||||||
uses: azure/setup-helm@v4
|
uses: azure/setup-helm@v4
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.GITEA_TOKEN }}
|
token: ${{ secrets.GITEA_TOKEN }}
|
||||||
version: latest
|
version: v3.19.2
|
||||||
|
|
||||||
- name: Lint Helm Chart
|
- name: Lint Helm Chart
|
||||||
if: steps.check-branch-exists.outputs.exists == 'true'
|
if: steps.check-branch-exists.outputs.exists == 'true'
|
||||||
@@ -68,6 +67,11 @@ jobs:
|
|||||||
echo "$CHANGED_CHARTS"
|
echo "$CHANGED_CHARTS"
|
||||||
|
|
||||||
echo "$CHANGED_CHARTS" | while read -r chart; do
|
echo "$CHANGED_CHARTS" | while read -r chart; do
|
||||||
|
helm dependency list --max-col-width 120 $chart 2> /dev/null \
|
||||||
|
| tail +2 | head -n -1 \
|
||||||
|
| awk '{ print "helm repo add " $1 " " $3 }' \
|
||||||
|
| while read cmd; do echo "$cmd" | sh; done || true
|
||||||
|
|
||||||
echo ">> Building dependency for "$chart" ..."
|
echo ">> Building dependency for "$chart" ..."
|
||||||
helm dependency build "$chart"
|
helm dependency build "$chart"
|
||||||
echo ">> Linting $chart..."
|
echo ">> Linting $chart..."
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ on:
|
|||||||
- main
|
- main
|
||||||
paths:
|
paths:
|
||||||
- 'clusters/**'
|
- 'clusters/**'
|
||||||
- ! 'clusters/*/archive'
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
helm-lint:
|
helm-lint:
|
||||||
@@ -21,12 +20,10 @@ jobs:
|
|||||||
uses: azure/setup-helm@v4
|
uses: azure/setup-helm@v4
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.GITEA_TOKEN }}
|
token: ${{ secrets.GITEA_TOKEN }}
|
||||||
version: latest
|
version: v3.19.2
|
||||||
|
|
||||||
- name: Lint Helm Chart
|
- name: Lint Helm Chart
|
||||||
run: |
|
run: |
|
||||||
set -e # Exit immediately if a command exits with a non-zero status.
|
|
||||||
|
|
||||||
TARGET_BRANCH="origin/main"
|
TARGET_BRANCH="origin/main"
|
||||||
echo ">> Target branch for diff is: $TARGET_BRANCH"
|
echo ">> Target branch for diff is: $TARGET_BRANCH"
|
||||||
|
|
||||||
@@ -56,6 +53,11 @@ jobs:
|
|||||||
echo "$CHANGED_CHARTS"
|
echo "$CHANGED_CHARTS"
|
||||||
|
|
||||||
echo "$CHANGED_CHARTS" | while read -r chart; do
|
echo "$CHANGED_CHARTS" | while read -r chart; do
|
||||||
|
helm dependency list --max-col-width 120 $chart 2> /dev/null \
|
||||||
|
| tail +2 | head -n -1 \
|
||||||
|
| awk '{ print "helm repo add " $1 " " $3 }' \
|
||||||
|
| while read cmd; do echo "$cmd" | sh; done || true
|
||||||
|
|
||||||
echo ">> Building dependency for "$chart" ..."
|
echo ">> Building dependency for "$chart" ..."
|
||||||
helm dependency build "$chart"
|
helm dependency build "$chart"
|
||||||
echo ">> Linting $chart..."
|
echo ">> Linting $chart..."
|
||||||
|
|||||||
343
.gitea/workflows/render-manifests.yaml
Normal file
343
.gitea/workflows/render-manifests.yaml
Normal file
@@ -0,0 +1,343 @@
|
|||||||
|
name: render-manifests
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
paths:
|
||||||
|
- 'clusters/cl01tl/helm/**'
|
||||||
|
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
env:
|
||||||
|
CLUSTER: cl01tl
|
||||||
|
BASE_BRANCH: manifests
|
||||||
|
BRANCH_NAME: auto/update-manifests
|
||||||
|
ASSIGNEE: alexlebens
|
||||||
|
MAIN_DIR: /workspace/alexlebens/infrastructure/infrastructure
|
||||||
|
MANIFEST_DIR: /workspace/alexlebens/infrastructure/infrastructure-manifests
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
render-manifests:
|
||||||
|
runs-on: ubuntu-js
|
||||||
|
steps:
|
||||||
|
- name: Checkout Main
|
||||||
|
uses: actions/checkout@v6
|
||||||
|
with:
|
||||||
|
path: infrastructure
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Checkout Manifests
|
||||||
|
uses: actions/checkout@v6
|
||||||
|
with:
|
||||||
|
ref: manifests
|
||||||
|
path: infrastructure-manifests
|
||||||
|
|
||||||
|
- name: Set up Helm
|
||||||
|
uses: azure/setup-helm@v4
|
||||||
|
with:
|
||||||
|
token: ${{ secrets.GITEA_TOKEN }}
|
||||||
|
version: v3.17.2 # Pending https://github.com/helm/helm/pull/30743
|
||||||
|
|
||||||
|
- name: Prepare Manifest Branch
|
||||||
|
run: |
|
||||||
|
cd ${MANIFEST_DIR}
|
||||||
|
|
||||||
|
echo ">> Configure git to use gitea-bot as user ..."
|
||||||
|
git config user.name "gitea-bot"
|
||||||
|
git config user.email "gitea-bot@alexlebens.net"
|
||||||
|
|
||||||
|
echo ">> Checking if PR branch exists ..."
|
||||||
|
if [[ $(git ls-remote --heads origin "${BRANCH_NAME}" | wc -l) -gt 0 ]]; then
|
||||||
|
echo ">> Branch '${BRANCH_NAME}' exists, pulling changes ..."
|
||||||
|
git fetch origin "${BRANCH_NAME}"
|
||||||
|
git checkout "${BRANCH_NAME}"
|
||||||
|
git pull --rebase
|
||||||
|
|
||||||
|
else
|
||||||
|
echo ">> Branch '${BRANCH_NAME}' does not exist, creating ..."
|
||||||
|
git checkout -b $BRANCH_NAME
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Check which Directories have Changes
|
||||||
|
id: check-dir-changes
|
||||||
|
run: |
|
||||||
|
cd ${MAIN_DIR}
|
||||||
|
|
||||||
|
GIT_DIFF=$(git diff --name-only ${{ gitea.event.before }}..HEAD | xargs -I {} dirname {} | sort -u | grep "clusters/cl01tl/helm/")
|
||||||
|
CHANGED_DIR=()
|
||||||
|
|
||||||
|
echo ">> Checking for changes .."
|
||||||
|
echo "$GIT_DIFF"
|
||||||
|
|
||||||
|
if [ -n $GIT_DIFF ]; then
|
||||||
|
echo ">> Changes detected"
|
||||||
|
|
||||||
|
for path in $GIT_DIFF; do
|
||||||
|
CHANGED_DIR+=$(echo "$path" | awk -F '/' '{print $4}')
|
||||||
|
done
|
||||||
|
|
||||||
|
echo ">> Changes Directories:"
|
||||||
|
echo "$(printf "%s\n" "$CHANGED_DIR" | sort -u)"
|
||||||
|
|
||||||
|
echo "changes-detected=true" >> $GITEA_OUTPUT
|
||||||
|
echo "changed-dir=$(printf "%s\n" "$CHANGED_DIR" | sort -u)" >> $GITEA_OUTPUT
|
||||||
|
else
|
||||||
|
echo ">> No changes detected, skipping rendering"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Add Repositories
|
||||||
|
if: steps.check-dir-changes.outputs.changes-detected == 'true'
|
||||||
|
env:
|
||||||
|
CHANGED_DIR: ${{ steps.check-dir-changes.outputs.changed-dir }}
|
||||||
|
run: |
|
||||||
|
cd ${MAIN_DIR}
|
||||||
|
|
||||||
|
echo ">> Adding repositories for chart dependencies ..."
|
||||||
|
for dir in ${CHANGED_DIR}; do
|
||||||
|
helm dependency list --max-col-width 120 ${MAIN_DIR}/clusters/${CLUSTER}/helm/$dir 2> /dev/null \
|
||||||
|
| tail +2 | head -n -1 \
|
||||||
|
| awk '{ print "helm repo add " $1 " " $3 }' \
|
||||||
|
| while read cmd; do echo "$cmd" | sh; done || true
|
||||||
|
done
|
||||||
|
|
||||||
|
- name: Remove Changed Manifest Files
|
||||||
|
if: steps.check-dir-changes.outputs.changes-detected == 'true'
|
||||||
|
env:
|
||||||
|
CHANGED_DIR: ${{ steps.check-dir-changes.outputs.changed-dir }}
|
||||||
|
run: |
|
||||||
|
cd ${MANIFEST_DIR}
|
||||||
|
|
||||||
|
echo ">> Remove manfiest files and rebuild from source ..."
|
||||||
|
|
||||||
|
for dir in ${CHANGED_DIR}; do
|
||||||
|
chart_path=${MANIFEST_DIR}/clusters/${CLUSTER}/manifests/$dir
|
||||||
|
|
||||||
|
echo ">> Removing from $chart_path ..."
|
||||||
|
rm -rf $chart_path/*
|
||||||
|
done
|
||||||
|
|
||||||
|
- name: Render Helm Manifests
|
||||||
|
id: render-manifests
|
||||||
|
if: steps.check-dir-changes.outputs.changes-detected == 'true'
|
||||||
|
env:
|
||||||
|
CHANGED_DIR: ${{ steps.check-dir-changes.outputs.changed-dir }}
|
||||||
|
run: |
|
||||||
|
cd ${MAIN_DIR}
|
||||||
|
|
||||||
|
echo ">> Rendering Manifests ..."
|
||||||
|
|
||||||
|
for dir in ${CHANGED_DIR}; do
|
||||||
|
chart_path=${MAIN_DIR}/clusters/${CLUSTER}/helm/$dir
|
||||||
|
chart_name=$(basename "$chart_path")
|
||||||
|
|
||||||
|
echo ">> Rendering chart: $chart_name"
|
||||||
|
echo ">> Chart path $chart_path"
|
||||||
|
|
||||||
|
if [ -f "$chart_path/Chart.yaml" ]; then
|
||||||
|
mkdir -p ${MANIFEST_DIR}/clusters/${CLUSTER}/manifests/$chart_name
|
||||||
|
OUTPUT_FILE="${MANIFEST_DIR}/clusters/${CLUSTER}/manifests/$chart_name/$chart_name.yaml"
|
||||||
|
|
||||||
|
cd $chart_path
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo ">> Building helm dependency ..."
|
||||||
|
helm dependency build
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo ">> Linting helm ..."
|
||||||
|
helm lint --namespace "$chart_name"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo ">> Rendering templates ..."
|
||||||
|
helm template "$chart_name" ./ --namespace "$chart_name" --include-crds > "$OUTPUT_FILE"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo ">> Manifests for $chart_name rendered to $OUTPUT_FILE"
|
||||||
|
echo ""
|
||||||
|
else
|
||||||
|
echo ""
|
||||||
|
echo ">> Directory $chart_path does not contain a Chart.yaml. Skipping ..."
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
- name: Check for Changes
|
||||||
|
id: check-changes
|
||||||
|
if: steps.check-dir-changes.outputs.changes-detected == 'true'
|
||||||
|
run: |
|
||||||
|
cd ${MANIFEST_DIR}
|
||||||
|
|
||||||
|
if git status --porcelain | grep -q .; then
|
||||||
|
echo ">> Changes detected"
|
||||||
|
git status --porcelain
|
||||||
|
echo "changes-detected=true" >> $GITEA_OUTPUT
|
||||||
|
else
|
||||||
|
echo ">> No changes detected, skipping PR creation"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Commit and Push Changes
|
||||||
|
id: commit-push
|
||||||
|
if: steps.check-changes.outputs.changes-detected == 'true'
|
||||||
|
run: |
|
||||||
|
cd ${MANIFEST_DIR}
|
||||||
|
|
||||||
|
echo ">> Commiting changes to ${BRANCH_NAME} ..."
|
||||||
|
git add .
|
||||||
|
git commit -m "chore: Update manifests after change"
|
||||||
|
|
||||||
|
echo ">> Pushing changes to $REPO_URL ..."
|
||||||
|
REPO_URL="${{ secrets.REPO_URL }}/${{ gitea.repository }}"
|
||||||
|
git push -u "https://oauth2:${{ secrets.BOT_TOKEN }}@$(echo $REPO_URL | sed -e 's|https://||')" ${BRANCH_NAME}
|
||||||
|
|
||||||
|
echo "HEAD_BRANCH=${BRANCH_NAME}" >> $GITEA_OUTPUT
|
||||||
|
echo "push=true" >> $GITEA_OUTPUT
|
||||||
|
|
||||||
|
- name: Check for Pull Request
|
||||||
|
id: check-for-pull-requst
|
||||||
|
if: steps.commit-push.outputs.push == 'true'
|
||||||
|
env:
|
||||||
|
GITEA_TOKEN: ${{ secrets.BOT_TOKEN }}
|
||||||
|
GITEA_URL: ${{ secrets.REPO_URL }}
|
||||||
|
HEAD_BRANCH: ${{ steps.commit-push.outputs.HEAD_BRANCH }}
|
||||||
|
run: |
|
||||||
|
cd ${MANIFEST_DIR}
|
||||||
|
|
||||||
|
API_ENDPOINT="${GITEA_URL}/api/v1/repos/${{ gitea.repository }}/pulls/${BASE_BRANCH}/${HEAD_BRANCH}"
|
||||||
|
|
||||||
|
echo ">> Checking if PR from branch ${HEAD_BRANCH} into ${BASE_BRANCH}"
|
||||||
|
echo ">> With Endpoint of:"
|
||||||
|
echo "$API_ENDPOINT"
|
||||||
|
|
||||||
|
HTTP_STATUS=$(
|
||||||
|
curl -X GET \
|
||||||
|
--silent \
|
||||||
|
--write-out '%{http_code}' \
|
||||||
|
--output response_body.json \
|
||||||
|
--dump-header response_headers.txt \
|
||||||
|
-H "Authorization: token ${GITEA_TOKEN}" \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
"$API_ENDPOINT" 2> response_errors.txt
|
||||||
|
)
|
||||||
|
|
||||||
|
echo ">> HTTP Status Code: $HTTP_STATUS"
|
||||||
|
echo ">> Response Output ..."
|
||||||
|
echo "----"
|
||||||
|
cat response_body.json
|
||||||
|
echo "----"
|
||||||
|
cat response_headers.txt
|
||||||
|
echo "----"
|
||||||
|
cat response_errors.txt
|
||||||
|
echo "----"
|
||||||
|
|
||||||
|
if [ "$HTTP_STATUS" == "200" ] && [ "$(cat response_body.json | jq -r .state)" == "open" ]; then
|
||||||
|
echo ">> Pull Request has been found open, will update"
|
||||||
|
PR_INDEX=$(cat response_body.json | jq -r .number)
|
||||||
|
echo "pull-request-exists=${PR_INDEX}" >> $GITEA_OUTPUT
|
||||||
|
echo "pull-request-index=true" >> $GITEA_OUTPUT
|
||||||
|
|
||||||
|
else
|
||||||
|
echo ">> Pull Request not found"
|
||||||
|
echo "pull-request-exists=false" >> $GITEA_OUTPUT
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Create Pull Request
|
||||||
|
id: create-pull-request
|
||||||
|
if: steps.commit-push.outputs.push == 'true' && steps.check-for-pull-requst.outputs.pull-request-exists == 'false'
|
||||||
|
env:
|
||||||
|
GITEA_TOKEN: ${{ secrets.BOT_TOKEN }}
|
||||||
|
GITEA_URL: ${{ secrets.REPO_URL }}
|
||||||
|
HEAD_BRANCH: ${{ steps.commit-push.outputs.HEAD_BRANCH }}
|
||||||
|
run: |
|
||||||
|
cd ${MANIFEST_DIR}
|
||||||
|
|
||||||
|
API_ENDPOINT="${GITEA_URL}/api/v1/repos/${{ gitea.repository }}/pulls"
|
||||||
|
|
||||||
|
PAYLOAD=$( jq -n \
|
||||||
|
--arg head "${HEAD_BRANCH}" \
|
||||||
|
--arg base "${BASE_BRANCH}" \
|
||||||
|
--arg assignee "${ASSIGNEE}" \
|
||||||
|
--arg title "Automated Manifest Update" \
|
||||||
|
--arg body "This PR contains newly rendered Kubernetes manifests automatically generated by the CI workflow." \
|
||||||
|
'{head: $head, base: $base, assignee: $assignee, title: $title, body: $body'} )
|
||||||
|
|
||||||
|
echo ">> Creating PR from branch ${HEAD_BRANCH} into ${BASE_BRANCH}"
|
||||||
|
echo ">> With Endpoint of:"
|
||||||
|
echo "$API_ENDPOINT"
|
||||||
|
echo ">> With Payload of:"
|
||||||
|
echo "$PAYLOAD"
|
||||||
|
|
||||||
|
HTTP_STATUS=$(
|
||||||
|
curl -X POST \
|
||||||
|
--silent \
|
||||||
|
--write-out '%{http_code}' \
|
||||||
|
--output response_body.json \
|
||||||
|
--dump-header response_headers.txt \
|
||||||
|
--data "$PAYLOAD" \
|
||||||
|
-H "Authorization: token ${GITEA_TOKEN}" \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
"$API_ENDPOINT" 2> response_errors.txt
|
||||||
|
)
|
||||||
|
|
||||||
|
echo ">> HTTP Status Code: $HTTP_STATUS"
|
||||||
|
echo ">> Response Output ..."
|
||||||
|
echo "----"
|
||||||
|
cat response_body.json
|
||||||
|
echo "----"
|
||||||
|
cat response_headers.txt
|
||||||
|
echo "----"
|
||||||
|
cat response_errors.txt
|
||||||
|
echo "----"
|
||||||
|
|
||||||
|
if [ "$HTTP_STATUS" == "201" ]; then
|
||||||
|
echo ">> Pull Request created successfully!"
|
||||||
|
PR_URL=$(cat response_body.json | jq -r .html_url)
|
||||||
|
echo "pull-request-url=${PR_URL}" >> $GITEA_OUTPUT
|
||||||
|
echo "pull-request-operation=created" >> $GITEA_OUTPUT
|
||||||
|
|
||||||
|
elif [ "$HTTP_STATUS" == "422" ]; then
|
||||||
|
echo ">> Failed to create PR (HTTP 422: Unprocessable Entity), PR may already exist"
|
||||||
|
|
||||||
|
else
|
||||||
|
echo ">> Failed to create PR, HTTP status code: $HTTP_STATUS"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Cleanup Branch
|
||||||
|
if: failure() && steps.create-pull-request.outcome == 'failure'
|
||||||
|
env:
|
||||||
|
HEAD_BRANCH: ${{ steps.commit-push.outputs.HEAD_BRANCH }}
|
||||||
|
run: |
|
||||||
|
echo ">> Removing branch: ${HEAD_BRANCH}"
|
||||||
|
git push origin --delete ${HEAD_BRANCH}
|
||||||
|
|
||||||
|
- name: ntfy Created
|
||||||
|
uses: niniyas/ntfy-action@master
|
||||||
|
if: steps.create-pull-request.outputs.pull-request-operation == 'created'
|
||||||
|
with:
|
||||||
|
url: "${{ secrets.NTFY_URL }}"
|
||||||
|
topic: "${{ secrets.NTFY_TOPIC }}"
|
||||||
|
title: "Manifest Render PR Created - Infrastructure"
|
||||||
|
priority: 3
|
||||||
|
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
|
||||||
|
tags: action,successfully,completed
|
||||||
|
details: "Manifest rendering for Infrastructure has created a new Pull Request!"
|
||||||
|
icon: "https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png"
|
||||||
|
actions: '[{"action": "view", "label": "Open Gitea", "url": "${{ steps.create-pull-request.outputs.pull-request-url }}", "clear": true}]'
|
||||||
|
|
||||||
|
- name: ntfy Failed
|
||||||
|
uses: niniyas/ntfy-action@master
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
url: "${{ secrets.NTFY_URL }}"
|
||||||
|
topic: "${{ secrets.NTFY_TOPIC }}"
|
||||||
|
title: "Manifest Render Failure - Infrastructure"
|
||||||
|
priority: 4
|
||||||
|
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
|
||||||
|
tags: action,failed
|
||||||
|
details: "Manifest rendering for Infrastructure has failed!"
|
||||||
|
icon: "https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png"
|
||||||
|
actions: '[{"action": "view", "label": "Open Gitea", "url": "https://gitea.alexlebens.dev/alexlebens/infrastructure/actions?workflow=render-manifests.yaml", "clear": true}]'
|
||||||
|
image: true
|
||||||
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
/**/archive/
|
||||||
|
/**/charts/
|
||||||
|
/**/manifests/
|
||||||
@@ -15,7 +15,7 @@ maintainers:
|
|||||||
- name: alexlebens
|
- name: alexlebens
|
||||||
dependencies:
|
dependencies:
|
||||||
- name: argo-cd
|
- name: argo-cd
|
||||||
version: 9.1.4
|
version: 9.1.5
|
||||||
repository: https://argoproj.github.io/argo-helm
|
repository: https://argoproj.github.io/argo-helm
|
||||||
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/argo-cd.png
|
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/argo-cd.png
|
||||||
appVersion: 3.0.0
|
appVersion: 3.0.0
|
||||||
|
|||||||
@@ -9,10 +9,12 @@ metadata:
|
|||||||
app.kubernetes.io/name: {{ $stack.name }}
|
app.kubernetes.io/name: {{ $stack.name }}
|
||||||
app.kubernetes.io/instance: {{ $stack.name }}
|
app.kubernetes.io/instance: {{ $stack.name }}
|
||||||
app.kubernetes.io/part-of: {{ $.Release.Name }}
|
app.kubernetes.io/part-of: {{ $.Release.Name }}
|
||||||
|
finalizers:
|
||||||
|
- resources-finalizer.argocd.argoproj.io
|
||||||
spec:
|
spec:
|
||||||
syncPolicy:
|
syncPolicy:
|
||||||
applicationsSync: create-update
|
applicationsSync: create-update
|
||||||
preserveResourcesOnDeletion: false
|
preserveResourcesOnDeletion: true
|
||||||
generators:
|
generators:
|
||||||
- git:
|
- git:
|
||||||
repoURL: {{ $.Values.git.repo }}
|
repoURL: {{ $.Values.git.repo }}
|
||||||
|
|||||||
@@ -7,17 +7,6 @@ git:
|
|||||||
# repo: ssh://git@gitea-ssh.gitea/alexlebens/infrastructure
|
# repo: ssh://git@gitea-ssh.gitea/alexlebens/infrastructure
|
||||||
revision: HEAD
|
revision: HEAD
|
||||||
applicationSet:
|
applicationSet:
|
||||||
- name: applications
|
|
||||||
ignoreDifferences:
|
|
||||||
- group: ""
|
|
||||||
kind: Service
|
|
||||||
jqPathExpressions:
|
|
||||||
- .spec.externalName
|
|
||||||
syncPolicy:
|
|
||||||
automated:
|
|
||||||
prune: true
|
|
||||||
syncOptions:
|
|
||||||
serverSideApply: true
|
|
||||||
- name: deployment
|
- name: deployment
|
||||||
namespace: argocd
|
namespace: argocd
|
||||||
syncPolicy:
|
syncPolicy:
|
||||||
@@ -25,80 +14,6 @@ applicationSet:
|
|||||||
prune: true
|
prune: true
|
||||||
syncOptions:
|
syncOptions:
|
||||||
serverSideApply: true
|
serverSideApply: true
|
||||||
- name: management
|
|
||||||
ignoreDifferences:
|
|
||||||
- group: ""
|
|
||||||
kind: Service
|
|
||||||
jqPathExpressions:
|
|
||||||
- .spec.externalName
|
|
||||||
syncPolicy:
|
|
||||||
automated:
|
|
||||||
prune: true
|
|
||||||
syncOptions:
|
|
||||||
serverSideApply: true
|
|
||||||
- name: monitoring
|
|
||||||
ignoreDifferences:
|
|
||||||
- group: ""
|
|
||||||
kind: Service
|
|
||||||
jqPathExpressions:
|
|
||||||
- .spec.externalName
|
|
||||||
- group: "apps"
|
|
||||||
kind: StatefulSet
|
|
||||||
jqPathExpressions:
|
|
||||||
- .spec.volumeClaimTemplates[]?.apiVersion
|
|
||||||
- .spec.volumeClaimTemplates[]?.kind
|
|
||||||
- .spec.volumeClaimTemplates[]?.metadata.creationTimestamp
|
|
||||||
syncPolicy:
|
|
||||||
automated:
|
|
||||||
prune: true
|
|
||||||
syncOptions:
|
|
||||||
serverSideApply: true
|
|
||||||
- name: platform
|
|
||||||
ignoreDifferences:
|
|
||||||
- group: ""
|
|
||||||
kind: Service
|
|
||||||
jqPathExpressions:
|
|
||||||
- .spec.externalName
|
|
||||||
- group: "apps"
|
|
||||||
kind: StatefulSet
|
|
||||||
jqPathExpressions:
|
|
||||||
- .spec.volumeClaimTemplates[]?.apiVersion
|
|
||||||
- .spec.volumeClaimTemplates[]?.kind
|
|
||||||
- .spec.volumeClaimTemplates[]?.metadata.creationTimestamp
|
|
||||||
syncPolicy:
|
|
||||||
automated:
|
|
||||||
prune: true
|
|
||||||
syncOptions:
|
|
||||||
serverSideApply: true
|
|
||||||
- name: services
|
|
||||||
ignoreDifferences:
|
|
||||||
- group: ""
|
|
||||||
kind: GpuDevicePlugin
|
|
||||||
jqPathExpressions:
|
|
||||||
- .metadata.annotations[]
|
|
||||||
- group: "apps"
|
|
||||||
kind: "Deployment"
|
|
||||||
jsonPointers:
|
|
||||||
- /spec/template/metadata/annotations/checksum~1secret
|
|
||||||
- /spec/template/metadata/annotations/checksum~1secret-core
|
|
||||||
- /spec/template/metadata/annotations/checksum~1secret-jobservice
|
|
||||||
- /spec/template/metadata/annotations/checksum~1tls
|
|
||||||
- group: "apps"
|
|
||||||
kind: "StatefulSet"
|
|
||||||
jsonPointers:
|
|
||||||
- /spec/template/metadata/annotations/checksum~1secret
|
|
||||||
- /spec/template/metadata/annotations/checksum~1tls
|
|
||||||
- group: "apps"
|
|
||||||
kind: StatefulSet
|
|
||||||
jqPathExpressions:
|
|
||||||
- .spec.volumeClaimTemplates[]?.apiVersion
|
|
||||||
- .spec.volumeClaimTemplates[]?.kind
|
|
||||||
- .spec.volumeClaimTemplates[]?.metadata.creationTimestamp
|
|
||||||
syncPolicy:
|
|
||||||
automated:
|
|
||||||
prune: true
|
|
||||||
syncOptions:
|
|
||||||
serverSideApply: true
|
|
||||||
- name: storage
|
- name: storage
|
||||||
ignoreDifferences:
|
ignoreDifferences:
|
||||||
- group: ""
|
- group: ""
|
||||||
|
|||||||
6
clusters/cl01tl/helm/actual/Chart.lock
Normal file
6
clusters/cl01tl/helm/actual/Chart.lock
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
dependencies:
|
||||||
|
- name: app-template
|
||||||
|
repository: https://bjw-s-labs.github.io/helm-charts/
|
||||||
|
version: 4.4.0
|
||||||
|
digest: sha256:b5d823171e1b4dc1d3856f782f0c67cbb5d49e4fa170df2f21b06303c7aff7f5
|
||||||
|
generated: "2025-11-30T21:05:19.732832-06:00"
|
||||||
@@ -18,4 +18,4 @@ dependencies:
|
|||||||
repository: https://bjw-s-labs.github.io/helm-charts/
|
repository: https://bjw-s-labs.github.io/helm-charts/
|
||||||
version: 4.4.0
|
version: 4.4.0
|
||||||
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/actual-budget.png
|
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/actual-budget.png
|
||||||
appVersion: v25.5.0
|
appVersion: 25.11.0
|
||||||
12
clusters/cl01tl/helm/argo-workflows/Chart.lock
Normal file
12
clusters/cl01tl/helm/argo-workflows/Chart.lock
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
dependencies:
|
||||||
|
- name: argo-workflows
|
||||||
|
repository: https://argoproj.github.io/argo-helm
|
||||||
|
version: 0.45.28
|
||||||
|
- name: argo-events
|
||||||
|
repository: https://argoproj.github.io/argo-helm
|
||||||
|
version: 2.4.17
|
||||||
|
- name: postgres-cluster
|
||||||
|
repository: oci://harbor.alexlebens.net/helm-charts
|
||||||
|
version: 6.16.0
|
||||||
|
digest: sha256:b00fd479a9d9e606661b3799182c8e24395b4f531f8d2bda87bdc5db16a8d66c
|
||||||
|
generated: "2025-12-01T19:55:40.18149-06:00"
|
||||||
6
clusters/cl01tl/helm/audiobookshelf/Chart.lock
Normal file
6
clusters/cl01tl/helm/audiobookshelf/Chart.lock
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
dependencies:
|
||||||
|
- name: app-template
|
||||||
|
repository: https://bjw-s-labs.github.io/helm-charts/
|
||||||
|
version: 4.4.0
|
||||||
|
digest: sha256:f3a9990542f24965fadad0b5493059b78cdc3fae91c8214577fa6f41ca5f7de3
|
||||||
|
generated: "2025-11-30T21:05:21.317114-06:00"
|
||||||
12
clusters/cl01tl/helm/authentik/Chart.lock
Normal file
12
clusters/cl01tl/helm/authentik/Chart.lock
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
dependencies:
|
||||||
|
- name: authentik
|
||||||
|
repository: https://charts.goauthentik.io/
|
||||||
|
version: 2025.10.2
|
||||||
|
- name: cloudflared
|
||||||
|
repository: oci://harbor.alexlebens.net/helm-charts
|
||||||
|
version: 1.23.0
|
||||||
|
- name: postgres-cluster
|
||||||
|
repository: oci://harbor.alexlebens.net/helm-charts
|
||||||
|
version: 6.16.0
|
||||||
|
digest: sha256:ad51c94c1125890ef60d179205d14c55eb9fdbc2702e3455e233042a48d00146
|
||||||
|
generated: "2025-12-01T20:25:07.016724-06:00"
|
||||||
6
clusters/cl01tl/helm/backrest/Chart.lock
Normal file
6
clusters/cl01tl/helm/backrest/Chart.lock
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
dependencies:
|
||||||
|
- name: app-template
|
||||||
|
repository: https://bjw-s-labs.github.io/helm-charts/
|
||||||
|
version: 4.4.0
|
||||||
|
digest: sha256:aa797b99d6d8b7aafe142811938408b7f234df6d429a7e076196337cc63876cb
|
||||||
|
generated: "2025-12-01T20:25:09.888407-06:00"
|
||||||
6
clusters/cl01tl/helm/bazarr/Chart.lock
Normal file
6
clusters/cl01tl/helm/bazarr/Chart.lock
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
dependencies:
|
||||||
|
- name: app-template
|
||||||
|
repository: https://bjw-s-labs.github.io/helm-charts/
|
||||||
|
version: 4.4.0
|
||||||
|
digest: sha256:c6f6d1f2fb9fedf54094920737a6f0bd1a2ab89f0a4122966ca98f6c9d3f11fa
|
||||||
|
generated: "2025-11-30T21:05:22.694344-06:00"
|
||||||
6
clusters/cl01tl/helm/blocky/Chart.lock
Normal file
6
clusters/cl01tl/helm/blocky/Chart.lock
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
dependencies:
|
||||||
|
- name: app-template
|
||||||
|
repository: https://bjw-s-labs.github.io/helm-charts/
|
||||||
|
version: 4.4.0
|
||||||
|
digest: sha256:0009729bcf7f1941401b767fd4ae952b7a8d44f80053090b4a9224de912a14ef
|
||||||
|
generated: "2025-12-01T20:25:13.511406-06:00"
|
||||||
9
clusters/cl01tl/helm/booklore/Chart.lock
Normal file
9
clusters/cl01tl/helm/booklore/Chart.lock
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
dependencies:
|
||||||
|
- name: app-template
|
||||||
|
repository: https://bjw-s-labs.github.io/helm-charts/
|
||||||
|
version: 4.4.0
|
||||||
|
- name: mariadb-cluster
|
||||||
|
repository: https://helm.mariadb.com/mariadb-operator
|
||||||
|
version: 25.10.2
|
||||||
|
digest: sha256:264725306c1d1f38140293c0820abdc7e8aa4f39764b4d91e20200705ce2ec91
|
||||||
|
generated: "2025-11-30T21:05:24.649316-06:00"
|
||||||
6
clusters/cl01tl/helm/cert-manager/Chart.lock
Normal file
6
clusters/cl01tl/helm/cert-manager/Chart.lock
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
dependencies:
|
||||||
|
- name: cert-manager
|
||||||
|
repository: https://charts.jetstack.io
|
||||||
|
version: v1.19.1
|
||||||
|
digest: sha256:0b1238a5552bc6d457d4b1a2a1f387a3e7f2c19f820ecb64e14d20481a1ed1ce
|
||||||
|
generated: "2025-12-01T20:25:17.762628-06:00"
|
||||||
9
clusters/cl01tl/helm/cloudnative-pg/Chart.lock
Normal file
9
clusters/cl01tl/helm/cloudnative-pg/Chart.lock
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
dependencies:
|
||||||
|
- name: cloudnative-pg
|
||||||
|
repository: https://cloudnative-pg.io/charts/
|
||||||
|
version: 0.26.1
|
||||||
|
- name: plugin-barman-cloud
|
||||||
|
repository: https://cloudnative-pg.io/charts/
|
||||||
|
version: 0.3.1
|
||||||
|
digest: sha256:b38e5104d77ab1737a27a2542eda958e82038443940f07b7c2cbe3b0a477e1e6
|
||||||
|
generated: "2025-12-01T20:25:20.341325-06:00"
|
||||||
9
clusters/cl01tl/helm/code-server/Chart.lock
Normal file
9
clusters/cl01tl/helm/code-server/Chart.lock
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
dependencies:
|
||||||
|
- name: app-template
|
||||||
|
repository: https://bjw-s-labs.github.io/helm-charts/
|
||||||
|
version: 4.4.0
|
||||||
|
- name: cloudflared
|
||||||
|
repository: oci://harbor.alexlebens.net/helm-charts
|
||||||
|
version: 1.23.0
|
||||||
|
digest: sha256:99eb4f940077dc916f5425d196232fcd363223fa7b7b5d3889f5965aa59e26f5
|
||||||
|
generated: "2025-11-30T21:05:26.699161-06:00"
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
dependencies:
|
||||||
|
- name: democratic-csi
|
||||||
|
repository: https://democratic-csi.github.io/charts/
|
||||||
|
version: 0.15.0
|
||||||
|
digest: sha256:6fe3d8ad7b990b07ed80a31c75a0a49db8da497c46a956c632615a2093d29d58
|
||||||
|
generated: "2025-12-01T20:25:24.972076-06:00"
|
||||||
6
clusters/cl01tl/helm/descheduler/Chart.lock
Normal file
6
clusters/cl01tl/helm/descheduler/Chart.lock
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
dependencies:
|
||||||
|
- name: descheduler
|
||||||
|
repository: https://kubernetes-sigs.github.io/descheduler/
|
||||||
|
version: 0.34.0
|
||||||
|
digest: sha256:1020c1fc8c179744f308e9b79f010dcaf59a05019f7d007157974be97063e12b
|
||||||
|
generated: "2025-12-01T20:25:26.970808-06:00"
|
||||||
12
clusters/cl01tl/helm/directus/Chart.lock
Normal file
12
clusters/cl01tl/helm/directus/Chart.lock
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
dependencies:
|
||||||
|
- name: app-template
|
||||||
|
repository: https://bjw-s-labs.github.io/helm-charts/
|
||||||
|
version: 4.4.0
|
||||||
|
- name: cloudflared
|
||||||
|
repository: oci://harbor.alexlebens.net/helm-charts
|
||||||
|
version: 1.23.0
|
||||||
|
- name: postgres-cluster
|
||||||
|
repository: oci://harbor.alexlebens.net/helm-charts
|
||||||
|
version: 6.16.0
|
||||||
|
digest: sha256:2f3d9f7a8d8d71b19ff3292993647d22a89aa6c444a6f0819b82cd0a577f1ebc
|
||||||
|
generated: "2025-11-30T21:05:28.43692-06:00"
|
||||||
6
clusters/cl01tl/helm/elastic-operator/Chart.lock
Normal file
6
clusters/cl01tl/helm/elastic-operator/Chart.lock
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
dependencies:
|
||||||
|
- name: eck-operator
|
||||||
|
repository: https://helm.elastic.co
|
||||||
|
version: 3.2.0
|
||||||
|
digest: sha256:b27ba092ddfa078f763e409dd5db1144a269eff0f45af04f180d844f13466a34
|
||||||
|
generated: "2025-12-01T20:25:30.722424-06:00"
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user