Aurask
+当前站点提供 Aurask MVP 网关入口与部署说明页。生产可用接口位于同域名下的 /api 前缀。
POST /api/demo/bootstrap鉴权接口使用 Authorization: Bearer <api_key>。当前前台页面为轻量入口页,后端能力直接来自 Aurask `master` 分支的 MVP 网关。
From 0e344eb74a43643d21aa46053393ae15715ce6d5 Mon Sep 17 00:00:00 2001 From: Aaron <530816249@qq.com> Date: Sun, 19 Apr 2026 16:43:18 +0800 Subject: [PATCH] Add Aurask release workflow and k3s base assets --- .gitea/workflows/aurask-release.yml | 90 ++++++++++++++++++ deploy/images/aurask-api/Dockerfile | 21 +++++ deploy/images/aurask-web/Dockerfile | 3 + deploy/images/aurask-web/index.html | 138 ++++++++++++++++++++++++++++ deploy/k3s/README.md | 86 ++++++++++++++++- deploy/k3s/base/aurask-api-pvc.yaml | 12 +++ deploy/k3s/base/aurask-api.yaml | 67 ++++++++++++++ deploy/k3s/base/aurask-web.yaml | 60 ++++++++++++ deploy/k3s/base/kustomization.yaml | 7 ++ deploy/k3s/base/namespace.yaml | 4 + 10 files changed, 487 insertions(+), 1 deletion(-) create mode 100644 .gitea/workflows/aurask-release.yml create mode 100644 deploy/images/aurask-api/Dockerfile create mode 100644 deploy/images/aurask-web/Dockerfile create mode 100644 deploy/images/aurask-web/index.html create mode 100644 deploy/k3s/base/aurask-api-pvc.yaml create mode 100644 deploy/k3s/base/aurask-api.yaml create mode 100644 deploy/k3s/base/aurask-web.yaml create mode 100644 deploy/k3s/base/kustomization.yaml create mode 100644 deploy/k3s/base/namespace.yaml diff --git a/.gitea/workflows/aurask-release.yml b/.gitea/workflows/aurask-release.yml new file mode 100644 index 0000000..473194e --- /dev/null +++ b/.gitea/workflows/aurask-release.yml @@ -0,0 +1,90 @@ +name: aurask-release + +on: + push: + branches: + - master + paths: + - .gitea/workflows/aurask-release.yml + - deploy/images/aurask-api/** + - deploy/images/aurask-web/** + - deploy/k3s/base/** + - src/aurask/** + - tests/** + - pyproject.toml + - README.md + - AGENTS.md + - Aurask_Technical_Operations_Plan.md + workflow_dispatch: + +permissions: + contents: read + +env: + REGISTRY_HOST: registry.mydevcloud.love + REGISTRY_NAMESPACE: devcloud + DEPLOY_HOST: 64.90.15.15 + DEPLOY_USER: root + AURASK_NAMESPACE: aurask + +jobs: + build-and-deploy: + runs-on: ubuntu-latest + steps: + - name: Install job dependencies + run: | + apt-get update + DEBIAN_FRONTEND=noninteractive apt-get install -y docker.io openssh-client curl + + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Run unit tests + env: + PYTHONPATH: src + run: | + python3 -m unittest discover -s tests -v + + - name: Prepare SSH key + run: | + install -m 700 -d ~/.ssh + printf '%s\n' "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_ed25519 + chmod 600 ~/.ssh/id_ed25519 + ssh-keyscan -H "${DEPLOY_HOST}" >> ~/.ssh/known_hosts + + - name: Login private registry + run: | + echo "${{ secrets.REGISTRY_PASSWORD }}" | docker login "${REGISTRY_HOST}" --username "${{ secrets.REGISTRY_USER }}" --password-stdin + + - name: Build and push aurask-api image + run: | + api_image="${REGISTRY_HOST}/${REGISTRY_NAMESPACE}/aurask-api" + docker build -t "${api_image}:${GITHUB_SHA}" -t "${api_image}:latest" -f deploy/images/aurask-api/Dockerfile . + docker push "${api_image}:${GITHUB_SHA}" + docker push "${api_image}:latest" + + - name: Build and push aurask-web image + run: | + web_image="${REGISTRY_HOST}/${REGISTRY_NAMESPACE}/aurask-web" + docker build -t "${web_image}:${GITHUB_SHA}" -t "${web_image}:latest" deploy/images/aurask-web + docker push "${web_image}:${GITHUB_SHA}" + docker push "${web_image}:latest" + + - name: Deploy aurask base manifests + run: | + scp -i ~/.ssh/id_ed25519 -r deploy/k3s/base "${DEPLOY_USER}@${DEPLOY_HOST}:/tmp/aurask-release" + ssh -i ~/.ssh/id_ed25519 "${DEPLOY_USER}@${DEPLOY_HOST}" " + set -euo pipefail + kubectl create namespace ${AURASK_NAMESPACE} --dry-run=client -o yaml | kubectl apply -f - + kubectl -n ${AURASK_NAMESPACE} create secret docker-registry devcloud-registry \ + --docker-server=${REGISTRY_HOST} \ + --docker-username='${{ secrets.REGISTRY_USER }}' \ + --docker-password='${{ secrets.REGISTRY_PASSWORD }}' \ + --dry-run=client -o yaml | kubectl apply -f - + kubectl apply -k /tmp/aurask-release + kubectl -n ${AURASK_NAMESPACE} set image deployment/aurask-api api=${REGISTRY_HOST}/${REGISTRY_NAMESPACE}/aurask-api:${GITHUB_SHA} + kubectl -n ${AURASK_NAMESPACE} set image deployment/aurask-web web=${REGISTRY_HOST}/${REGISTRY_NAMESPACE}/aurask-web:${GITHUB_SHA} + kubectl -n ${AURASK_NAMESPACE} rollout status deployment/aurask-api --timeout=600s + kubectl -n ${AURASK_NAMESPACE} rollout status deployment/aurask-web --timeout=600s + kubectl -n ${AURASK_NAMESPACE} get pods -o wide + " diff --git a/deploy/images/aurask-api/Dockerfile b/deploy/images/aurask-api/Dockerfile new file mode 100644 index 0000000..8a8559c --- /dev/null +++ b/deploy/images/aurask-api/Dockerfile @@ -0,0 +1,21 @@ +FROM python:3.12-slim + +ENV PYTHONDONTWRITEBYTECODE=1 \ + PYTHONUNBUFFERED=1 \ + PYTHONPATH=/app/src + +WORKDIR /app + +RUN useradd --system --create-home --uid 10001 aurask + +COPY pyproject.toml README.md /app/ +COPY src /app/src + +RUN python -m compileall /app/src && \ + install -d -o aurask -g aurask /data + +USER aurask + +EXPOSE 8080 + +CMD ["python", "-m", "aurask", "serve", "--data", "/data/state.json", "--host", "0.0.0.0", "--port", "8080"] diff --git a/deploy/images/aurask-web/Dockerfile b/deploy/images/aurask-web/Dockerfile new file mode 100644 index 0000000..133ed7d --- /dev/null +++ b/deploy/images/aurask-web/Dockerfile @@ -0,0 +1,3 @@ +FROM caddy:2-alpine + +COPY index.html /usr/share/caddy/index.html diff --git a/deploy/images/aurask-web/index.html b/deploy/images/aurask-web/index.html new file mode 100644 index 0000000..055cd4a --- /dev/null +++ b/deploy/images/aurask-web/index.html @@ -0,0 +1,138 @@ + + +
+ + +当前站点提供 Aurask MVP 网关入口与部署说明页。生产可用接口位于同域名下的 /api 前缀。
POST /api/demo/bootstrap鉴权接口使用 Authorization: Bearer <api_key>。当前前台页面为轻量入口页,后端能力直接来自 Aurask `master` 分支的 MVP 网关。