Files
seclusion/.gitea/workflows/deploy.yaml
Charile Zhou ad41866e88
Some checks failed
Deploy / Deploy to Knative (push) Has been cancelled
Deploy / Build and Push Images (push) Has been cancelled
revert: 移除多架构镜像构建配置
- 移除 platforms: linux/amd64,linux/arm64 配置
- 恢复为单架构构建(默认 linux/amd64)
- 原因:ARM64 构建时 apk ���发脚本在 QEMU 模拟环境下执行失败
2026-01-23 00:31:20 +08:00

101 lines
3.4 KiB
YAML

name: Deploy
on:
push:
branches:
- main
env:
IMAGE_PREFIX: tegical/seclusion
jobs:
build-and-push:
name: Build and Push Images
runs-on: ubuntu-latest
outputs:
image_tag: ${{ steps.meta.outputs.tag }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Generate image tag
id: meta
run: |
echo "tag=$(date +%Y%m%d%H%M%S)-${GITHUB_SHA::8}" >> $GITHUB_OUTPUT
- name: Login to Harbor Registry
uses: docker/login-action@v3
with:
registry: ${{ vars.IMAGE_REGISTRY }}
username: ${{ secrets.IMAGE_REGISTRY_ROBOT_USERNAME }}
password: ${{ secrets.IMAGE_REGISTRY_ROBOT_PASSWORD }}
- name: Build and push Web image
uses: docker/build-push-action@v6
with:
context: .
file: ./apps/web/Dockerfile
push: true
tags: |
${{ vars.IMAGE_REGISTRY }}/${{ env.IMAGE_PREFIX }}-web:${{ steps.meta.outputs.tag }}
${{ vars.IMAGE_REGISTRY }}/${{ env.IMAGE_PREFIX }}-web:latest
cache-from: type=registry,ref=${{ vars.IMAGE_REGISTRY }}/${{ env.IMAGE_PREFIX }}-web:buildcache
cache-to: type=registry,ref=${{ vars.IMAGE_REGISTRY }}/${{ env.IMAGE_PREFIX }}-web:buildcache,mode=max
- name: Build and push API image
uses: docker/build-push-action@v6
with:
context: .
file: ./apps/api/Dockerfile
push: true
tags: |
${{ vars.IMAGE_REGISTRY }}/${{ env.IMAGE_PREFIX }}-api:${{ steps.meta.outputs.tag }}
${{ vars.IMAGE_REGISTRY }}/${{ env.IMAGE_PREFIX }}-api:latest
cache-from: type=registry,ref=${{ vars.IMAGE_REGISTRY }}/${{ env.IMAGE_PREFIX }}-api:buildcache
cache-to: type=registry,ref=${{ vars.IMAGE_REGISTRY }}/${{ env.IMAGE_PREFIX }}-api:buildcache,mode=max
deploy:
name: Deploy to Knative
runs-on: ubuntu-latest
needs: build-and-push
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup kubectl
uses: azure/setup-kubectl@v4
- name: Configure kubeconfig
run: |
mkdir -p ~/.kube
echo "${{ secrets.KUBECONFIG }}" | base64 -d > ~/.kube/config
chmod 600 ~/.kube/config
- name: Update image tags in manifests
run: |
IMAGE_TAG=${{ needs.build-and-push.outputs.image_tag }}
IMAGE_REGISTRY=${{ vars.IMAGE_REGISTRY }}
sed -i "s|IMAGE_TAG_PLACEHOLDER|${IMAGE_TAG}|g" deploy/k8s/*.yaml
sed -i "s|IMAGE_REGISTRY_PLACEHOLDER|${IMAGE_REGISTRY}|g" deploy/k8s/*.yaml
- name: Deploy to Knative
run: |
kubectl apply -f deploy/k8s/namespace.yaml
kubectl apply -f deploy/k8s/configmap.yaml
kubectl apply -f deploy/k8s/secret.yaml
kubectl apply -f deploy/k8s/web-ksvc.yaml
kubectl apply -f deploy/k8s/api-ksvc.yaml
- name: Wait for services to be ready
run: |
kubectl wait --for=condition=Ready ksvc/seclusion-web -n seclusion --timeout=300s
kubectl wait --for=condition=Ready ksvc/seclusion-api -n seclusion --timeout=300s
- name: Get service URLs
run: |
echo "Web URL: $(kubectl get ksvc seclusion-web -n seclusion -o jsonpath='{.status.url}')"
echo "API URL: $(kubectl get ksvc seclusion-api -n seclusion -o jsonpath='{.status.url}')"