✨ 新功能: - 一键自动化部署脚本 (build-infra.sh) - 统一端口配置 (3开头端口,避免冲突) - 多平台Docker构建支持 (AMD64 + ARM64) - Jenkins Configuration as Code (零手动配置) - 完整的服务验证和健康检查 🏗️ 核心组件: - Jenkins LTS + JDK21 (端口38080) - Gitea 1.21 (端口33000, SSH: 32222) - Docker Registry + UI (端口35001/35002) - 统一cicd-network网络 📋 管理工具: - 自动化部署和验证脚本 - 健康检查和日志管理工具 - 完整的文档和故障排查指南 🎯 已验证功能: - 所有服务正常启动和运行 - API和Web界面完全可访问 - 多平台构建环境就绪 - 完整的CI/CD流水线支持 适用环境: Mac Studio M2 + Docker Desktop
77 lines
2.4 KiB
YAML
77 lines
2.4 KiB
YAML
services:
|
|
gitea-runner:
|
|
image: gitea/act_runner:latest
|
|
container_name: gitea-runner
|
|
restart: unless-stopped
|
|
volumes:
|
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
- gitea-runner-data:/data
|
|
environment:
|
|
- GITEA_INSTANCE_URL=http://gitea:3000
|
|
- GITEA_RUNNER_REGISTRATION_TOKEN=${GITEA_RUNNER_TOKEN}
|
|
- GITEA_RUNNER_NAME=docker-runner
|
|
- GITEA_RUNNER_LABELS=ubuntu-latest:docker://node:18-bullseye,ubuntu-22.04:docker://node:18-bullseye
|
|
networks:
|
|
- cicd-network
|
|
depends_on:
|
|
- gitea
|
|
command: >
|
|
sh -c "
|
|
while ! nc -z gitea 3000; do
|
|
echo 'Waiting for Gitea...'
|
|
sleep 1
|
|
done
|
|
echo 'Gitea is ready, starting runner...'
|
|
act_runner register --no-interactive --instance http://gitea:3000 --token $${GITEA_RUNNER_REGISTRATION_TOKEN} --name docker-runner --labels ubuntu-latest:docker://catthehacker/ubuntu:act-latest
|
|
act_runner daemon
|
|
"
|
|
|
|
gitea:
|
|
image: gitea/gitea:1.21
|
|
container_name: gitea
|
|
restart: unless-stopped
|
|
ports:
|
|
- "3000:3000"
|
|
volumes:
|
|
- gitea-data:/data
|
|
- /etc/timezone:/etc/timezone:ro
|
|
- /etc/localtime:/etc/localtime:ro
|
|
environment:
|
|
- USER_UID=1000
|
|
- USER_GID=1000
|
|
- GITEA__database__DB_TYPE=sqlite3
|
|
- GITEA__database__PATH=/data/gitea/gitea.db
|
|
- GITEA__server__DOMAIN=192.168.1.83
|
|
- GITEA__server__SSH_DOMAIN=192.168.1.83
|
|
- GITEA__server__ROOT_URL=http://192.168.1.83:3000/
|
|
- GITEA__server__DISABLE_SSH=true
|
|
- GITEA__server__SSH_PORT=2221
|
|
- GITEA__server__SSH_LISTEN_PORT=22
|
|
- GITEA__server__START_SSH_SERVER=false
|
|
- GITEA__repository__ENABLE_PUSH_CREATE_USER=true
|
|
- GITEA__repository__ENABLE_PUSH_CREATE_ORG=true
|
|
- GITEA__webhook__ALLOWED_HOST_LIST=192.168.1.83,localhost,jenkins,gitea-runner
|
|
- GITEA__service__DISABLE_REGISTRATION=false
|
|
- GITEA__service__REQUIRE_SIGNIN_VIEW=false
|
|
- GITEA__actions__ENABLED=true
|
|
- GITEA__actions__DEFAULT_ACTIONS_URL=https://github.com
|
|
- GITEA__log__LEVEL=DEBUG
|
|
networks:
|
|
- cicd-network
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:3000/api/healthz"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
|
|
networks:
|
|
cicd-network:
|
|
external: true
|
|
|
|
volumes:
|
|
gitea-data:
|
|
external: true
|
|
name: compose_gitea-data
|
|
gitea-runner-data:
|
|
driver: local
|