Update dependency ansible-lint to v26.8.0 #3
@@ -0,0 +1,4 @@
|
||||
.gitattributes text eol=lf
|
||||
*.yaml text eol=lf
|
||||
*.yml text eol=lf
|
||||
*.md text eol=lf
|
||||
@@ -0,0 +1,42 @@
|
||||
name: Trigger Renovate
|
||||
|
||||
on:
|
||||
workflow_dispatch: {}
|
||||
|
||||
jobs:
|
||||
trigger-renovate:
|
||||
name: Trigger Renovate
|
||||
runs-on: runner-slim-amd64
|
||||
env:
|
||||
KUBE_CONFIG: ${{ secrets.KUBE_CONFIG }}
|
||||
steps:
|
||||
- name: Create a one-off Renovate job
|
||||
shell: bash
|
||||
run: |
|
||||
set -eu
|
||||
|
||||
if [ -z "${KUBE_CONFIG}" ]; then
|
||||
echo "KUBE_CONFIG is not set or is empty."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
WORK_DIR="${RUNNER_TEMP:-/tmp}/renovate-${GITHUB_RUN_ID:-$$}"
|
||||
mkdir -p "${WORK_DIR}"
|
||||
trap 'rm -rf "${WORK_DIR}"' EXIT
|
||||
|
||||
apk add --no-cache curl
|
||||
KUBECTL_VERSION="$(curl -fsSL https://dl.k8s.io/release/stable.txt)"
|
||||
curl -fsSLo "${WORK_DIR}/kubectl" "https://dl.k8s.io/release/${KUBECTL_VERSION}/bin/linux/amd64/kubectl"
|
||||
chmod 0755 "${WORK_DIR}/kubectl"
|
||||
|
||||
KUBECONFIG="${WORK_DIR}/kubeconfig"
|
||||
umask 077
|
||||
printf '%s' "${KUBE_CONFIG}" | tr -d '\r' > "${KUBECONFIG}"
|
||||
|
||||
RUN_ID="$(printf '%s' "${GITHUB_RUN_ID:-$(date -u +%Y%m%d%H%M%S)}" | tr -cd 'a-z0-9')"
|
||||
JOB_NAME="renovate-manual-${RUN_ID}"
|
||||
|
||||
"${WORK_DIR}/kubectl" --kubeconfig "${KUBECONFIG}" version --client
|
||||
"${WORK_DIR}/kubectl" --kubeconfig "${KUBECONFIG}" --namespace cronjobs get cronjob renovate
|
||||
"${WORK_DIR}/kubectl" --kubeconfig "${KUBECONFIG}" --namespace cronjobs create job "${JOB_NAME}" --from=cronjob/renovate
|
||||
"${WORK_DIR}/kubectl" --kubeconfig "${KUBECONFIG}" --namespace cronjobs get job "${JOB_NAME}" -o wide
|
||||
@@ -1,2 +1,2 @@
|
||||
-r requirements-python.txt
|
||||
ansible-lint==26.6.0
|
||||
ansible-lint==26.8.0
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
# Haven project context
|
||||
|
||||
## Purpose
|
||||
|
||||
`haven` is the public GitOps specification repository for the Haven Kubernetes cluster. Argo CD continuously reconciles the manifests on `main` into the cluster.
|
||||
|
||||
## Repository organization
|
||||
|
||||
- `apps/<namespace>/*.yaml` — one application or infrastructure specification per file. The directory name selects its target namespace through the root ApplicationSet.
|
||||
- `apps/root/applicationset.yaml` — discovers `apps/*/*.yaml` and creates Argo CD Applications that automatically prune and self-heal.
|
||||
- `bootstrap/` — cluster bootstrap manifests such as namespaces, Argo CD configuration, and address pools.
|
||||
- `secrets/` — Kubernetes secret specifications referenced by applications.
|
||||
- `.gitea/workflows/trigger-renovate.yaml` — manually triggered Gitea Actions workflow that creates an immediate one-off Job from the live `cronjobs/renovate` CronJob.
|
||||
|
||||
## Build and deploy
|
||||
|
||||
- Commit manifest changes to `main`; the root ApplicationSet reconciles them automatically.
|
||||
- The `Trigger Renovate` Gitea workflow is manual-only (`workflow_dispatch`). It downloads `kubectl`, writes `${{ secrets.KUBE_CONFIG }}` to an ephemeral kubeconfig, verifies the live CronJob, then creates a uniquely named Job in the `cronjobs` namespace from `cronjob/renovate`.
|
||||
- The kubeconfig is supplied at execution time as the repository or organization `KUBE_CONFIG` secret. No credentials are stored in this repository.
|
||||
|
||||
## Conventions
|
||||
|
||||
- Keep Kubernetes manifest and workflow YAML LF-terminated; `.gitattributes` enforces this for `.yaml` and `.yml` files.
|
||||
- Do not commit plaintext credentials. Kubernetes resources should continue to reference the existing secret mechanisms.
|
||||
- A manual Renovate dispatch starts an additional run; the weekly CronJob schedule remains unchanged.
|
||||
Reference in New Issue
Block a user