Skip to content

Commit e07000e

Browse files
committed
chore: add workflows ci.yml to use github action.
1 parent f611cfb commit e07000e

File tree

1 file changed

+122
-0
lines changed

1 file changed

+122
-0
lines changed

.github/workflows/ci.yml

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
name: CI Build and Push Docs Image
2+
3+
on:
4+
push:
5+
branches: [ main, dev ]
6+
pull_request:
7+
branches: [ main, dev ]
8+
9+
env:
10+
HARBOR_INTERNAL_HOST: ${{ vars.HARBOR_INTERNAL_HOST }}
11+
HARBOR_INTERNAL_PROJECT: ${{ vars.HARBOR_INTERNAL_PROJECT }}
12+
13+
jobs:
14+
# 准备构建信息
15+
prepare:
16+
runs-on: ubuntu-latest
17+
outputs:
18+
version: ${{ steps.version.outputs.version }}
19+
build-date: ${{ steps.version.outputs.build-date }}
20+
git-commit: ${{ steps.version.outputs.git-commit }}
21+
git-branch: ${{ steps.version.outputs.git-branch }}
22+
timestamp: ${{ steps.version.outputs.timestamp }}
23+
steps:
24+
- name: Checkout code
25+
uses: actions/checkout@v4
26+
27+
- name: Generate version info
28+
id: version
29+
run: |
30+
VERSION=${VERSION:-"1.0.0-docs"}
31+
BUILD_DATE=$(date -u +%Y-%m-%dT%H:%M:%SZ)
32+
GIT_COMMIT=$(git rev-parse --short HEAD 2>/dev/null || echo "unknown")
33+
GIT_BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "unknown")
34+
TIMESTAMP=$(date +%Y%m%d-%H%M%S)
35+
36+
echo "version=$VERSION" >> $GITHUB_OUTPUT
37+
echo "build-date=$BUILD_DATE" >> $GITHUB_OUTPUT
38+
echo "git-commit=$GIT_COMMIT" >> $GITHUB_OUTPUT
39+
echo "git-branch=$GIT_BRANCH" >> $GITHUB_OUTPUT
40+
echo "timestamp=$TIMESTAMP" >> $GITHUB_OUTPUT
41+
42+
echo "📋 文档站版本信息:"
43+
echo " - Version: $VERSION"
44+
echo " - Build Date: $BUILD_DATE"
45+
echo " - Git Commit: $GIT_COMMIT"
46+
echo " - Git Branch: $GIT_BRANCH"
47+
echo " - Timestamp: $TIMESTAMP"
48+
49+
# 构建 Docs 镜像
50+
build-docs:
51+
runs-on: ubuntu-latest
52+
needs: prepare
53+
steps:
54+
- name: Checkout code
55+
uses: actions/checkout@v4
56+
57+
- name: Set up Docker Buildx
58+
uses: docker/setup-buildx-action@v3
59+
60+
- name: Login to Harbor
61+
run: |
62+
echo "🔐 Logging into Harbor registry..."
63+
if [ -n "$HARBOR_INTERNAL_USER" ] && [ -n "$HARBOR_INTERNAL_PASS" ]; then
64+
echo "📦 Using environment variables for Harbor login (Docker runner)"
65+
else
66+
echo "📦 Using GitHub Secrets for Harbor login (VM runner)"
67+
HARBOR_INTERNAL_USER="${{ secrets.HARBOR_INTERNAL_USER }}"
68+
HARBOR_INTERNAL_PASS="${{ secrets.HARBOR_INTERNAL_PASS }}"
69+
fi
70+
echo "$HARBOR_INTERNAL_PASS" | docker login $HARBOR_INTERNAL_HOST -u $HARBOR_INTERNAL_USER --password-stdin
71+
72+
- name: Build and push Docs image
73+
run: |
74+
DOCS_IMAGE_NAME="docs"
75+
DOCS_TAG="$HARBOR_INTERNAL_HOST/$HARBOR_INTERNAL_PROJECT/$DOCS_IMAGE_NAME:${{ needs.prepare.outputs.git-commit }}-${{ needs.prepare.outputs.timestamp }}"
76+
LATEST_DOCS_TAG="$HARBOR_INTERNAL_HOST/$HARBOR_INTERNAL_PROJECT/$DOCS_IMAGE_NAME:latest"
77+
78+
echo "🔧 构建 Docs 镜像..."
79+
docker build \
80+
--build-arg VERSION="${{ needs.prepare.outputs.version }}" \
81+
--build-arg BUILD_DATE="${{ needs.prepare.outputs.build-date }}" \
82+
--build-arg GIT_COMMIT="${{ needs.prepare.outputs.git-commit }}" \
83+
--build-arg GIT_BRANCH="${{ needs.prepare.outputs.git-branch }}" \
84+
-t $DOCS_TAG -t $LATEST_DOCS_TAG .
85+
86+
echo "📤 推送 Docs 镜像..."
87+
docker push $DOCS_TAG
88+
docker push $LATEST_DOCS_TAG
89+
90+
echo "✅ Docs 镜像构建和推送完成: $DOCS_TAG"
91+
92+
# 验证 Docs 镜像
93+
verify:
94+
runs-on: ubuntu-latest
95+
needs: [prepare, build-docs]
96+
steps:
97+
- name: Login to Harbor
98+
run: |
99+
echo "🔐 Logging into Harbor registry..."
100+
if [ -n "$HARBOR_INTERNAL_USER" ] && [ -n "$HARBOR_INTERNAL_PASS" ]; then
101+
echo "📦 Using environment variables for Harbor login (Docker runner)"
102+
else
103+
echo "📦 Using GitHub Secrets for Harbor login (VM runner)"
104+
HARBOR_INTERNAL_USER="${{ secrets.HARBOR_INTERNAL_USER }}"
105+
HARBOR_INTERNAL_PASS="${{ secrets.HARBOR_INTERNAL_PASS }}"
106+
fi
107+
echo "$HARBOR_INTERNAL_PASS" | docker login $HARBOR_INTERNAL_HOST -u $HARBOR_INTERNAL_USER --password-stdin
108+
109+
- name: Verify Docs image
110+
run: |
111+
DOCS_IMAGE_NAME="docs"
112+
DOCS_TAG="$HARBOR_INTERNAL_HOST/$HARBOR_INTERNAL_PROJECT/$DOCS_IMAGE_NAME:${{ needs.prepare.outputs.git-commit }}-${{ needs.prepare.outputs.timestamp }}"
113+
LATEST_DOCS_TAG="$HARBOR_INTERNAL_HOST/$HARBOR_INTERNAL_PROJECT/$DOCS_IMAGE_NAME:latest"
114+
115+
echo "🔍 验证 Docs 镜像是否成功推送..."
116+
docker pull $LATEST_DOCS_TAG
117+
echo "✅ Docs 镜像验证成功"
118+
119+
echo "📋 最终 Docs 镜像信息:"
120+
echo " - Latest: $LATEST_DOCS_TAG"
121+
echo " - Versioned: $DOCS_TAG"
122+

0 commit comments

Comments
 (0)