101 lines
3.4 KiB
YAML
101 lines
3.4 KiB
YAML
name: 简单测试
|
||
|
||
on:
|
||
push:
|
||
pull_request:
|
||
|
||
jobs:
|
||
test:
|
||
runs-on: ubuntu-latest
|
||
|
||
steps:
|
||
- name: 检出代码
|
||
uses: actions/checkout@v4
|
||
|
||
- name: 计算并设置环境变量
|
||
run: |
|
||
echo "📦 计算并设置后续步骤所需的环境变量..."
|
||
# 计算 REPO_NAME
|
||
REPOSITORY="${{ gitea.repository }}"
|
||
echo "REPOSITORY=$REPOSITORY" >> $GITHUB_ENV
|
||
|
||
# 使用 bash 的字符串替换功能截取,确保兼容性
|
||
REPO_NAME=$(echo "${REPOSITORY#*/}" | tr '[:upper:]' '[:lower:]') # 从第一个 / 后面开始截取
|
||
echo "➡️ 计算出的仓库名称: $REPO_NAME"
|
||
|
||
# 将 REPO_NAME 写入 $GITHUB_ENV,使其对后续步骤可用
|
||
echo "REPO_NAME=$REPO_NAME" >> $GITHUB_ENV
|
||
|
||
# 计算 REGISTRY_HOST,使用 sed 移除 http:// 或 https://
|
||
REGISTRY_HOST=$(echo "${{ gitea.server_url }}" | sed 's|https\?://||')
|
||
echo "➡️ 计算出的Registry地址: $REGISTRY_HOST"
|
||
|
||
# 将 REGISTRY_HOST 写入 $GITHUB_ENV,使其对后续步骤可用
|
||
echo "REGISTRY_HOST=$REGISTRY_HOST" >> $GITHUB_ENV
|
||
|
||
#远程镜像路径
|
||
REMOTE_IMAGE_PATH="$REGISTRY_HOST/$REPOSITORY"
|
||
echo "REMOTE_IMAGE_PATH=$REMOTE_IMAGE_PATH" >> $GITHUB_ENV
|
||
|
||
echo "✅ 环境变量设置完成!"
|
||
|
||
- name: 登录到Gitea Container Registry
|
||
run: |
|
||
echo "🔐 登录到Gitea Registry..."
|
||
echo "📡 Registry地址: $REGISTRY_HOST"
|
||
echo "👤 用户名: ${{ gitea.actor }}"
|
||
|
||
# 使用HTTP协议登录
|
||
echo "${{ secrets.GITEAS_PAT }}" | docker login $REGISTRY_HOST -u "${{ gitea.actor }}" --password-stdin
|
||
|
||
echo "✅ 登录成功!"
|
||
|
||
- name: 构造Docker镜像
|
||
run: |
|
||
echo "🐳 构造Node.js Hello World应用镜像..."
|
||
|
||
# 构造镜像
|
||
BUILD_IMAGE_CMD="docker build -t $REPOSITORY:latest ."
|
||
echo "📦 构造Docker镜像命令: $BUILD_IMAGE_CMD" && eval $BUILD_IMAGE_CMD
|
||
|
||
echo "✅ Docker镜像构造完成!" # 可以将此信息改为更通用
|
||
|
||
- name: 推送Docker镜像
|
||
run: |
|
||
echo "🚀 推送Docker镜像到Gitea registry..."
|
||
|
||
#远程镜像路径
|
||
IMAGE_PATH="$REGISTRY_HOST/$REPOSITORY"
|
||
echo "🔍 远程镜像路径: $IMAGE_PATH"
|
||
|
||
#打SHA标签
|
||
TAG_IMAGE_CMD="docker tag $REPOSITORY $IMAGE_PATH:${{ gitea.sha }}"
|
||
echo "🏷️ 打标签命令: $TAG_IMAGE_CMD" && eval $TAG_IMAGE_CMD
|
||
|
||
#推送SHA标签
|
||
PUSH_IMAGE_CMD="docker push $IMAGE_PATH:${{ gitea.sha }}"
|
||
echo "🔍 推送SHA标签:$PUSH_IMAGE_CMD" && eval $PUSH_IMAGE_CMD
|
||
|
||
sleep 3
|
||
|
||
#打latest标签
|
||
TAG_IMAGE_CMD="docker tag $REPOSITORY $IMAGE_PATH:latest"
|
||
echo "🏷️ 打标签命令: $TAG_IMAGE_CMD" && eval $TAG_IMAGE_CMD
|
||
|
||
#推送latest镜像
|
||
PUSH_IMAGE_CMD="docker push $IMAGE_PATH:latest"
|
||
echo "🔍 推送镜像 :$PUSH_IMAGE_CMD" && eval $PUSH_IMAGE_CMD
|
||
|
||
echo "✅ Docker镜像推送完成!"
|
||
|
||
- name: 清理Docker镜像
|
||
run: |
|
||
echo "🔍 获取 kagami/action_test 镜像 ID..."
|
||
IMAGE_ID=$(docker images -q $REPOSITORY)
|
||
|
||
echo "🔍 获取 kagami/action_test 镜像 ID: $IMAGE_ID"
|
||
|
||
docker rmi -f "$IMAGE_ID" || true
|
||
|
||
echo "✅ Docker镜像清理完成!"
|