🚀 add cicd
This commit is contained in:
parent
6b65fc2f67
commit
385c6a3d07
68
.drone.yml
Normal file
68
.drone.yml
Normal file
@ -0,0 +1,68 @@
|
||||
# Drone CI/CD 配置文件
|
||||
kind: pipeline
|
||||
type: docker # 使用 Docker 作为执行环境
|
||||
name: imgsearcher-pipeline
|
||||
|
||||
steps:
|
||||
# 步骤1: 构建 Python 应用
|
||||
- name: build_imgsearcher
|
||||
image: ccr-29eug8s3-vpc.cnc.bj.baidubce.com/service/python:3.9-slim
|
||||
commands:
|
||||
- pip install poetry
|
||||
- poetry config virtualenvs.create false
|
||||
- poetry install --no-dev
|
||||
- mkdir -p build/imgsearcher
|
||||
- cp -r app.py app pyproject.toml poetry.lock Dockerfile build/imgsearcher/
|
||||
when:
|
||||
branch:
|
||||
- dev
|
||||
|
||||
# 步骤2: 构建 imgsearcher 服务的 Docker 镜像
|
||||
- name: image_imgsearcher
|
||||
image: ccr-29eug8s3-vpc.cnc.bj.baidubce.com/service/kaniko:latest
|
||||
settings:
|
||||
registry: ccr-29eug8s3-vpc.cnc.bj.baidubce.com
|
||||
repo: ccr-29eug8s3-vpc.cnc.bj.baidubce.com/service/imgsearcher
|
||||
username:
|
||||
from_secret: registry_username
|
||||
password:
|
||||
from_secret: registry_password
|
||||
tags:
|
||||
- latest
|
||||
- ${DRONE_COMMIT_SHA}
|
||||
dockerfile: Dockerfile
|
||||
build_args:
|
||||
- HTTP_PROXY=${HTTP_PROXY}
|
||||
- HTTPS_PROXY=${HTTPS_PROXY}
|
||||
- NO_PROXY=${NO_PROXY}
|
||||
when:
|
||||
branch:
|
||||
- dev
|
||||
|
||||
# 步骤3: 部署 imgsearcher 到开发环境
|
||||
- name: deploy-imgsearcher-dev
|
||||
image: ccr-29eug8s3-vpc.cnc.bj.baidubce.com/service/drone-kubernetes
|
||||
settings:
|
||||
kubernetes_server:
|
||||
from_secret: kubernetes_server_dev
|
||||
kubernetes_token:
|
||||
from_secret: kubernetes_token_dev
|
||||
kubernetes_cert:
|
||||
from_secret: kubernetes_cert_dev
|
||||
namespace:
|
||||
from_secret: kubernetes_namespace_dev
|
||||
deployment: imgsearcher
|
||||
container: imgsearcher
|
||||
repo: ccr-29eug8s3-vpc.cnc.bj.baidubce.com/service/imgsearcher
|
||||
tag: ${DRONE_COMMIT_SHA}
|
||||
when:
|
||||
branch:
|
||||
- dev
|
||||
|
||||
|
||||
trigger:
|
||||
branch:
|
||||
- dev
|
||||
event:
|
||||
- push
|
||||
- tag
|
||||
2
.env
2
.env
@ -10,4 +10,4 @@ AZURE_OPENAI_DEPLOYMENT_NAME=gpt-4o-drobotics
|
||||
|
||||
# MongoDB配置
|
||||
MONGO_URI=mongodb://localhost:27017/
|
||||
MONGO_DB_NAME=imgsearcherxx
|
||||
MONGO_DB_NAME=imgsearcher
|
||||
31
.gitignore
vendored
Normal file
31
.gitignore
vendored
Normal file
@ -0,0 +1,31 @@
|
||||
# Python缓存文件
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*$py.class
|
||||
|
||||
# 虚拟环境
|
||||
venv/
|
||||
env/
|
||||
ENV/
|
||||
|
||||
# 上传的文件
|
||||
uploads/
|
||||
|
||||
# 日志文件
|
||||
*.log
|
||||
|
||||
# 本地配置
|
||||
.env.local
|
||||
.env.development.local
|
||||
.env.test.local
|
||||
.env.production.local
|
||||
|
||||
# IDE文件
|
||||
.idea/
|
||||
.vscode/
|
||||
*.swp
|
||||
*.swo
|
||||
|
||||
# 系统文件
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
27
Dockerfile
Normal file
27
Dockerfile
Normal file
@ -0,0 +1,27 @@
|
||||
FROM python:3.9-slim
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# 安装Poetry
|
||||
RUN pip install --no-cache-dir poetry
|
||||
|
||||
# 配置Poetry不创建虚拟环境
|
||||
RUN poetry config virtualenvs.create false
|
||||
|
||||
# 复制Poetry配置文件
|
||||
COPY pyproject.toml poetry.lock* ./
|
||||
|
||||
# 安装依赖
|
||||
RUN poetry install --no-dev --no-interaction --no-ansi
|
||||
|
||||
# 复制应用程序代码
|
||||
COPY . .
|
||||
|
||||
# 创建上传目录
|
||||
RUN mkdir -p uploads
|
||||
|
||||
# 暴露应用端口
|
||||
EXPOSE 5001
|
||||
|
||||
# 运行应用
|
||||
CMD ["python", "app.py"]
|
||||
113
k8s-deployment.yaml
Normal file
113
k8s-deployment.yaml
Normal file
@ -0,0 +1,113 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: imgsearcher
|
||||
namespace: imgsearcher
|
||||
labels:
|
||||
app: imgsearcher
|
||||
spec:
|
||||
replicas: 2
|
||||
selector:
|
||||
matchLabels:
|
||||
app: imgsearcher
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: imgsearcher
|
||||
spec:
|
||||
containers:
|
||||
- name: imgsearcher
|
||||
image: ${DRONE_REPO_OWNER}/imgsearcher:${DRONE_COMMIT_SHA:0:8}
|
||||
ports:
|
||||
- containerPort: 5001
|
||||
env:
|
||||
- name: MONGO_URI
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: imgsearcher-secrets
|
||||
key: mongo-uri
|
||||
- name: BAIDU_API_KEY
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: imgsearcher-secrets
|
||||
key: baidu-api-key
|
||||
- name: BAIDU_SECRET_KEY
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: imgsearcher-secrets
|
||||
key: baidu-secret-key
|
||||
- name: AZURE_API_KEY
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: imgsearcher-secrets
|
||||
key: azure-api-key
|
||||
- name: AZURE_API_ENDPOINT
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: imgsearcher-secrets
|
||||
key: azure-api-endpoint
|
||||
resources:
|
||||
limits:
|
||||
cpu: "500m"
|
||||
memory: "512Mi"
|
||||
requests:
|
||||
cpu: "200m"
|
||||
memory: "256Mi"
|
||||
volumeMounts:
|
||||
- name: uploads
|
||||
mountPath: /app/uploads
|
||||
volumes:
|
||||
- name: uploads
|
||||
persistentVolumeClaim:
|
||||
claimName: imgsearcher-uploads-pvc
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: imgsearcher
|
||||
namespace: imgsearcher
|
||||
spec:
|
||||
selector:
|
||||
app: imgsearcher
|
||||
ports:
|
||||
- port: 80
|
||||
targetPort: 5001
|
||||
type: ClusterIP
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: imgsearcher
|
||||
namespace: imgsearcher
|
||||
annotations:
|
||||
kubernetes.io/ingress.class: nginx
|
||||
cert-manager.io/cluster-issuer: letsencrypt-prod
|
||||
spec:
|
||||
rules:
|
||||
- host: imgsearcher.example.com
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: imgsearcher
|
||||
port:
|
||||
number: 80
|
||||
tls:
|
||||
- hosts:
|
||||
- imgsearcher.example.com
|
||||
secretName: imgsearcher-tls
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: imgsearcher-uploads-pvc
|
||||
namespace: imgsearcher
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteMany
|
||||
resources:
|
||||
requests:
|
||||
storage: 10Gi
|
||||
storageClassName: standard
|
||||
2
poetry.toml
Normal file
2
poetry.toml
Normal file
@ -0,0 +1,2 @@
|
||||
[virtualenvs]
|
||||
create = false
|
||||
Loading…
x
Reference in New Issue
Block a user