Files
action_test/.gitea/workflows/test.yml
2025-07-12 14:03:13 +08:00

145 lines
4.5 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

name: 简单测试
on:
push:
pull_request:
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: 检出代码
uses: actions/checkout@v4
- name: 基本测试
run: |
echo "🚀 开始测试..."
echo "📁 当前目录: $(pwd)"
echo "📋 文件列表:"
ls -la
echo "✅ 测试完成!"
- name: 配置Docker不安全registry
run: |
echo "🔧 配置Docker允许不安全的registry..."
# 获取registry地址
REGISTRY_HOST=$(echo "${{ gitea.server_url }}" | sed 's|https\?://||')
echo "📡 Registry地址: $REGISTRY_HOST"
# 创建Docker配置目录
mkdir -p ~/.docker
# 配置客户端不安全registry
cat > ~/.docker/config.json <<EOF
{
"auths": {},
"HttpHeaders": {
"User-Agent": "Docker-Client/20.10.21 (linux)"
},
"credsStore": "",
"experimental": "disabled"
}
EOF
# 配置daemon.json不重启服务
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{
"insecure-registries": ["$REGISTRY_HOST"]
}
EOF
# 发送HUP信号让Docker重新加载配置
sudo pkill -HUP dockerd || true
# 等待配置生效
sleep 5
echo "✅ Docker配置完成"
- name: 设置Docker构造环境
uses: docker/setup-buildx-action@v3
- name: 登录到Gitea Container Registry
run: |
echo "🔐 登录到Gitea Container Registry..."
# 获取registry地址 (移除协议前缀)
REGISTRY_HOST=$(echo "${{ gitea.server_url }}" | sed 's|https\?://||')
echo "📡 Registry地址: $REGISTRY_HOST"
echo "👤 用户名: ${{ gitea.actor }}"
# 先尝试使用HTTP协议登录
echo "${{ gitea.token }}" | docker login http://$REGISTRY_HOST -u "${{ gitea.actor }}" --password-stdin || \
echo "${{ gitea.token }}" | docker login $REGISTRY_HOST -u "${{ gitea.actor }}" --password-stdin
echo "✅ 登录成功!"
- name: 构造Docker镜像
run: |
echo "🐳 构造Node.js Hello World应用镜像..."
# 设置镜像标签 (移除协议前缀)
REGISTRY_HOST=$(echo "${{ gitea.server_url }}" | sed 's|https\?://||')
IMAGE_NAME="$REGISTRY_HOST/${{ gitea.repository_owner }}/hello-world-app"
IMAGE_TAG="latest"
COMMIT_SHA="${{ gitea.sha }}"
echo "📦 镜像名称: $IMAGE_NAME"
echo "🏷️ 镜像标签: $IMAGE_TAG"
echo "📋 提交SHA: $COMMIT_SHA"
# 构造镜像
docker build -t "$IMAGE_NAME:$IMAGE_TAG" -t "$IMAGE_NAME:$COMMIT_SHA" .
echo "✅ Node.js Hello World镜像构造完成"
- name: 推送Docker镜像
run: |
echo "🚀 推送Docker镜像到Gitea registry..."
# 设置镜像标签 (移除协议前缀)
REGISTRY_HOST=$(echo "${{ gitea.server_url }}" | sed 's|https\?://||')
IMAGE_NAME="$REGISTRY_HOST/${{ gitea.repository_owner }}/hello-world-app"
IMAGE_TAG="latest"
COMMIT_SHA="${{ gitea.sha }}"
# 推送镜像
docker push "$IMAGE_NAME:$IMAGE_TAG"
docker push "$IMAGE_NAME:$COMMIT_SHA"
echo "✅ Docker镜像推送完成"
echo "🎉 镜像已推送到: $IMAGE_NAME:$IMAGE_TAG"
echo "🎉 镜像已推送到: $IMAGE_NAME:$COMMIT_SHA"
- name: 测试镜像运行
run: |
echo "🧪 测试构造的镜像..."
REGISTRY_HOST=$(echo "${{ gitea.server_url }}" | sed 's|https\?://||')
IMAGE_NAME="$REGISTRY_HOST/${{ gitea.repository_owner }}/hello-world-app"
IMAGE_TAG="latest"
# 运行镜像进行测试
docker run -d --name test-container -p 3000:3000 "$IMAGE_NAME:$IMAGE_TAG"
# 等待容器启动
sleep 5
# 测试健康检查
echo "🔍 测试应用健康状态..."
curl -f http://localhost:3000/health || exit 1
# 测试主页
echo "🔍 测试应用主页..."
curl -f http://localhost:3000/ || exit 1
# 停止并删除测试容器
docker stop test-container
docker rm test-container
echo "✅ 镜像测试完成!"