@@ -39,47 +39,45 @@ jobs:
3939 DB_PASSWORD : ${{ secrets.DB_PASSWORD }}
4040 run : |
4141 echo "Safe usage: DB_PASSWORD is $DB_PASSWORD"
42- # GitHub 会自动将 DB_PASSWORD 的值屏蔽为 ***
43-
42+
4443 # 6. 不安全使用 Secret:直接作为参数传递
4544 - name : Unsafe Secret Usage (Inline)
4645 run : echo "Unsafe usage-- DB_PASSWORD is ${{ secrets.DB_PASSWORD }}"
47- # 此方式风险较高,部分 CLI 工具可能将完整值输出到日志中
4846
49- # 7. 将 Secret 写入文件(模拟 Artifact 中泄露敏感信息)
47+ # 7. 测试 Secret 掩码策略(新增部分)################################
48+ - name : Test Secret Masking - Env Variable (TEST)
49+ env :
50+ TEST : ${{ secrets.TEST }}
51+ run : |
52+ echo "TEST 的值(环境变量): $TEST"
53+
54+ - name : Test Secret Masking - Concatenated (DB_PASSWORD + 'b')
55+ run : |
56+ echo "DB_PASSWORD + 'b': ${{ secrets.DB_PASSWORD }}b"
57+
58+ - name : Test Secret Masking - Base64 Encoded
59+ run : |
60+ echo "Base64(DB_PASSWORD): $(echo -n ${{ secrets.DB_PASSWORD }} | base64 -w0)"
61+
62+ # 8. 使用第三方 Action 示例(新增)################################
63+ - name : HTTP Request Example
64+ uses : fjogeleit/http-request-action@v1
65+ with :
66+ url : ' https://httpbin.org/get'
67+ method : ' GET'
68+
69+ # 9. 将 Secret 写入文件(原步骤 7)
5070 - name : Write Secret to File
5171 run : echo "Secret in file-- ${{ secrets.DB_PASSWORD }}" > secret.txt
5272
53- # 8 . 上传包含 Secret 的文件作为 Artifact
73+ # 10 . 上传包含 Secret 的文件作为 Artifact(原步骤 8)
5474 - name : Upload Secret File Artifact
5575 uses : actions/upload-artifact@v4
5676 with :
5777 name : secret-artifact
5878 path : secret.txt
5979
60- # 9. 缓存 pip 依赖(如果有 requirements.txt)
61- - name : Cache pip packages
62- uses : actions/cache@v4
63- with :
64- path : ~/.cache/pip
65- key : ${{ runner.os }}-pip-${{ hashFiles('requirements.txt') }}
66-
67- # 10. 设置 Python 环境
68- - name : Setup Python
69- uses : actions/setup-python@v2
70- with :
71- python-version : ' 3.8'
72-
73- # 11. 安装 pip 依赖(如果 requirements.txt 存在)
74- - name : Install pip dependencies
75- run : |
76- if [ -f requirements.txt ]; then
77- pip install -r requirements.txt
78- else
79- echo "No requirements.txt found. Skipping pip install."
80- fi
81-
82- # 12. Docker 构建:构建当前目录下的 Docker 镜像
80+ # 11. Docker 构建(原步骤 12)
8381 - name : Build Docker Image
8482 run : |
8583 if [ -f Dockerfile ]; then
8886 echo "No Dockerfile found. Skipping Docker build."
8987 fi
9088
91- # 13 . 将构建的 Docker 镜像保存为 tar 包
89+ # 12 . 将构建的 Docker 镜像保存为 tar 包(原步骤 13)
9290 - name : Save Docker Image to Tarball
9391 run : |
9492 if docker image inspect secret-tester:latest > /dev/null 2>&1; then
@@ -97,30 +95,20 @@ jobs:
9795 echo "Docker image not built. Skipping save."
9896 fi
9997
100- # 14 . 上传 Docker 镜像 tar 包作为 Artifact(可选 )
98+ # 13 . 上传 Docker 镜像 tar 包作为 Artifact(原步骤 14 )
10199 - name : Upload Docker Image Artifact
102100 uses : actions/upload-artifact@v4
103101 with :
104102 name : docker-image-artifact
105103 path : secret-tester.tar
106104
107- # 15 . 推送 Docker 镜像到 GitHub Container Registry (GHCR)
105+ # 14 . 推送 Docker 镜像到 GitHub Container Registry(原步骤 15)
108106 - name : Push Docker Image to GHCR
109107 env :
110- # 需在仓库 Secrets 中设置 CR_PAT (GitHub Personal Access Token)
111108 CR_PAT : ${{ secrets.CR_PAT }}
112109 run : |
113- # 登录到 GHCR,使用 GitHub 用户名和 PAT
114110 echo $CR_PAT | docker login ghcr.io -u ${{ github.actor }} --password-stdin
115-
116- # 输出当前镜像列表(调试用)
117111 docker images
118-
119- # 标记镜像为 GHCR 格式(格式:ghcr.io/用户名/镜像名:标签)
120112 docker tag secret-tester:latest ghcr.io/${{ github.repository_owner }}/secret-tester:latest
121-
122- # 再次输出镜像信息以确认标签更改
123113 docker images
124-
125- # 推送镜像
126114 docker push ghcr.io/${{ github.repository_owner }}/secret-tester:latest
0 commit comments