Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7e92eb651c | ||
|
|
b9f832858a |
@@ -19,6 +19,16 @@ jobs:
|
||||
token: ${{ secrets.GITEA_TOKEN }}
|
||||
persist-credentials: true
|
||||
|
||||
- name: Check release credentials before changing the version
|
||||
shell: bash
|
||||
env:
|
||||
HARBOR_USERNAME: ${{ secrets.HARBOR_USERNAME }}
|
||||
HARBOR_PASSWORD: ${{ secrets.HARBOR_PASSWORD }}
|
||||
run: |
|
||||
set -euo pipefail
|
||||
test -n "$HARBOR_USERNAME" || { echo 'Missing HARBOR_USERNAME action secret'; exit 1; }
|
||||
test -n "$HARBOR_PASSWORD" || { echo 'Missing HARBOR_PASSWORD action secret'; exit 1; }
|
||||
|
||||
- name: Test and lint in the shared builder image
|
||||
shell: bash
|
||||
run: |
|
||||
@@ -115,8 +125,11 @@ jobs:
|
||||
echo 'NATS is not installed yet. The backend release pipeline bootstraps NATS and this Argo Application.'
|
||||
exit 0
|
||||
fi
|
||||
if ! kubectl -n argocd get application ai-spel-rule-engine >/dev/null 2>&1; then
|
||||
echo 'The backend release pipeline owns first-time Argo Application creation; skipping this worker-only rollout.'
|
||||
exit 0
|
||||
fi
|
||||
kubectl -n ai-spel rollout status statefulset/ai-spel-nats --timeout=10m
|
||||
kubectl -n argocd apply -f deploy/argocd/application.yaml
|
||||
kubectl -n argocd patch application ai-spel-rule-engine --type merge -p "{\"spec\":{\"source\":{\"targetRevision\":\"$version\"}}}"
|
||||
deadline=$((SECONDS + 600))
|
||||
while (( SECONDS < deadline )); do
|
||||
|
||||
Generated
+1
-1
@@ -13,7 +13,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "ai-spel-rule-engine"
|
||||
version = "0.1.1"
|
||||
version = "0.1.2"
|
||||
dependencies = [
|
||||
"async-nats",
|
||||
"axum",
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@ members = ["crates/rule-engine"]
|
||||
resolver = "2"
|
||||
|
||||
[workspace.package]
|
||||
version = "0.1.2"
|
||||
version = "0.1.3"
|
||||
edition = "2024"
|
||||
license = "MIT"
|
||||
|
||||
|
||||
@@ -21,3 +21,13 @@ For source development, the Rust commands are `cargo fmt --all -- --check`,
|
||||
`cargo test --workspace`, and `cargo clippy --workspace --all-targets -- -D warnings`.
|
||||
Production builds, tests, image builds, and executable verification for this
|
||||
project are run by Gitea Actions on the existing `large` runner and Kubernetes.
|
||||
|
||||
## Release deployment boundary
|
||||
|
||||
The API repository owns first-time NATS and Argo Application provisioning. The
|
||||
worker release pipeline publishes this repository's versioned image and chart,
|
||||
then updates the existing `ai-spel-rule-engine` Argo Application. It uses the
|
||||
`AI_SPEL_TEST_KUBECONFIG` repository action secret, scoped to patch that one
|
||||
Argo Application and read rollout health in namespace `ai-spel`. The one-time
|
||||
service-account roles are described in `deploy/ci/namespace-scoped-rbac.yaml`;
|
||||
they do not grant database, secret, workload-write, or cluster-wide access.
|
||||
|
||||
@@ -8,7 +8,7 @@ spec:
|
||||
source:
|
||||
repoURL: harbor.k3s.k0.nu/ai-spel
|
||||
chart: ai-spel-rule-engine
|
||||
targetRevision: "0.1.2"
|
||||
targetRevision: "0.1.3"
|
||||
helm:
|
||||
releaseName: ai-spel-rule-engine
|
||||
destination:
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: ai-spel-rule-engine-deployer
|
||||
namespace: argocd
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: ai-spel-rule-engine-deployer-token
|
||||
namespace: argocd
|
||||
annotations:
|
||||
kubernetes.io/service-account.name: ai-spel-rule-engine-deployer
|
||||
type: kubernetes.io/service-account-token
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: Role
|
||||
metadata:
|
||||
name: ai-spel-rule-engine-deployer
|
||||
namespace: argocd
|
||||
rules:
|
||||
- apiGroups: [argoproj.io]
|
||||
resources: [applications]
|
||||
resourceNames: [ai-spel-rule-engine]
|
||||
verbs: [get, patch]
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: RoleBinding
|
||||
metadata:
|
||||
name: ai-spel-rule-engine-deployer
|
||||
namespace: argocd
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: ai-spel-rule-engine-deployer
|
||||
namespace: argocd
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: Role
|
||||
name: ai-spel-rule-engine-deployer
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: Role
|
||||
metadata:
|
||||
name: ai-spel-rule-engine-deployer
|
||||
namespace: ai-spel
|
||||
rules:
|
||||
- apiGroups: [apps]
|
||||
resources: [deployments, replicasets, statefulsets]
|
||||
verbs: [get, list, watch]
|
||||
- apiGroups: [""]
|
||||
resources: [pods, events]
|
||||
verbs: [get, list, watch]
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: RoleBinding
|
||||
metadata:
|
||||
name: ai-spel-rule-engine-deployer
|
||||
namespace: ai-spel
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: ai-spel-rule-engine-deployer
|
||||
namespace: argocd
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: Role
|
||||
name: ai-spel-rule-engine-deployer
|
||||
@@ -2,5 +2,5 @@ apiVersion: v2
|
||||
name: ai-spel-rule-engine
|
||||
description: Isolated, sandboxed Luau proposal evaluator
|
||||
type: application
|
||||
version: 0.1.2
|
||||
appVersion: "0.1.2"
|
||||
version: 0.1.3
|
||||
appVersion: "0.1.3"
|
||||
Reference in New Issue
Block a user