@@ -27,7 +27,7 @@ inputs:
27
27
28
28
file_type :
29
29
required : false
30
- description : 网页文件的类型 (例如使用 docsify 部署的就是 md,不指定则设为 html, 可指定多个类型)
30
+ description : 网页文件的类型 (例如使用 docsify 部署的就是 md,可指定多个类型)
31
31
default : " html,md"
32
32
33
33
ignore_file :
@@ -58,6 +58,11 @@ inputs:
58
58
required : false
59
59
description : 设置启用自动合并的类型 (不指定则不启用自动合并,可以使用 merge、rebase、squash)
60
60
61
+ update :
62
+ required : false
63
+ description : 指定更新网站地图的方式 (直接提交或拉取请求)
64
+ default : 拉取请求
65
+
61
66
runs :
62
67
using : composite
63
68
steps :
@@ -102,57 +107,97 @@ runs:
102
107
DEBUG : ${{ inputs.debug }}
103
108
AUTO_MERGE : ${{ inputs.auto_merge }}
104
109
LOCATION : ${{ inputs.location }}
110
+ UPDATE : ${{ inputs.update }}
105
111
run : |
106
- # 参数处理
112
+ # 后面都要用的
107
113
# 获取当前日期和时间
108
114
DATE_TIME=$(date '+%Y/%m/%d %H:%M')
109
115
110
- # 移除标签参数中的特殊字符
111
- CLEAN_LABELS=$(echo "$LABELS" | sed "s/[\"\'\`]*//g") # 移除 " ' ` 字符
112
- if [[ ("$LABELS" != "$CLEAN_LABELS") && ("$DEBUG") ]]; then
113
- echo "[DEBUG] 标签包含特殊字符,已移除: $LABELS -> $CLEAN_LABELS"
114
- fi
115
-
116
- # 如果 AUTO_MERGE 为空字符串,则不做任何操作
117
- if [[ -z "$AUTO_MERGE" ]]; then
118
- if [[ "$DEBUG" ]]; then
119
- echo "[DEBUG] 不启用自动合并,因为自动合并方式为空"
120
- fi
121
- CLEAN_AUTO_MERGE=""
122
- else
123
- # 格式化自动合并方式
124
- CLEAN_AUTO_MERGE=$(echo "$AUTO_MERGE" | tr '[:upper:]' '[:lower:]' | sed "s/[\"\'\`-]//g") # 转为小写并移除 " ' ` -
125
-
126
- # 根据输入值设置对应的自动合并方式
127
- case "$CLEAN_AUTO_MERGE" in
128
- "s"|"squash"|"压缩"|"压缩合并"|"压缩自动合并")
129
- CLEAN_AUTO_MERGE="squash"
130
- ;;
131
- "m"|"merge"|"合并"|"合并提交"|"提交")
132
- CLEAN_AUTO_MERGE="merge"
133
- ;;
134
- "r"|"rebase"|"变基"|"变基合并"|"变基自动合并")
135
- CLEAN_AUTO_MERGE="rebase"
136
- ;;
137
- *)
138
- echo "[ERROR] 未知的自动合并方式: $AUTO_MERGE"
139
- echo "[TIP] 可用的自动合并方式: 压缩、合并、变基"
140
- exit 1
141
- ;;
142
- esac
143
- fi
144
-
145
- # 如果自动合并方式进行了格式化,输出调试信息
146
- if [[ ("$AUTO_MERGE" != "$CLEAN_AUTO_MERGE") && ("$DEBUG") ]]; then
147
- echo "[DEBUG] 已格式化自动合并方式: $AUTO_MERGE -> $CLEAN_AUTO_MERGE"
148
- fi
149
-
150
- # ================
151
-
152
- # 生成分支名
153
- BRANCH_NAME="sitemap-update-$(date +%Y%m%d%H%M%S)"
154
- git checkout -b $BRANCH_NAME
155
- echo "[INFO] 已创建新分支: $BRANCH_NAME"
116
+ # 参数处理
117
+ # 格式化更新方式 - 默认 PR
118
+ UPDATE_WAY=$(echo "$UPDATE" | tr '[:upper:]' '[:lower:]' | sed "s/[\"\'\`-]//g; s/[[:space:]]//g")
119
+ # 根据输入值设置对应的更新方式
120
+ case "$UPDATE_WAY" in
121
+ "pr"|"pullrequest"|"pullrequests"|"prs"|"拉取请求")
122
+ UPDATE_WAY="PR"
123
+ if [[ "$DEBUG" ]]; then
124
+ echo "[DEBUG] 更新方式: 创建拉取请求"
125
+ fi
126
+
127
+ # 如果 AUTO_MERGE 为空字符串,则不做任何操作
128
+ if [[ -z "$AUTO_MERGE" ]]; then
129
+ if [[ "$DEBUG" ]]; then
130
+ echo "[DEBUG] 不启用自动合并,因为自动合并方式为空"
131
+ fi
132
+ CLEAN_AUTO_MERGE=""
133
+ else
134
+ # 格式化自动合并方式
135
+ CLEAN_AUTO_MERGE=$(echo "$AUTO_MERGE" | tr '[:upper:]' '[:lower:]' | sed "s/[\"\'\`-]//g")
136
+
137
+ # 根据输入值设置对应的自动合并方式
138
+ case "$CLEAN_AUTO_MERGE" in
139
+ "s"|"squash"|"压缩"|"压缩合并"|"压缩自动合并")
140
+ CLEAN_AUTO_MERGE="squash"
141
+ ;;
142
+ "m"|"merge"|"合并"|"合并提交"|"提交")
143
+ CLEAN_AUTO_MERGE="merge"
144
+ ;;
145
+ "r"|"rebase"|"变基"|"变基合并"|"变基自动合并")
146
+ CLEAN_AUTO_MERGE="rebase"
147
+ ;;
148
+ *)
149
+ echo "[ERROR] 未知的自动合并方式: $AUTO_MERGE"
150
+ echo "[TIP] 可用的自动合并方式: 压缩、合并、变基"
151
+ exit 1
152
+ ;;
153
+ esac
154
+ fi
155
+
156
+ # 如果自动合并方式进行了格式化,输出调试信息
157
+ if [[ ("$AUTO_MERGE" != "$CLEAN_AUTO_MERGE") && ("$DEBUG") ]]; then
158
+ echo "[DEBUG] 已格式化自动合并方式: $AUTO_MERGE -> $CLEAN_AUTO_MERGE"
159
+ fi
160
+
161
+ # 移除标签参数中的特殊字符
162
+ CLEAN_LABELS=$(echo "$LABELS" | sed "s/[\"\'\`]*//g") # 移除 " ' ` 字符
163
+ if [[ ("$LABELS" != "$CLEAN_LABELS") && ("$DEBUG") ]]; then
164
+ echo "[DEBUG] 标签包含特殊字符,已移除: $LABELS -> $CLEAN_LABELS"
165
+ fi
166
+
167
+ # 签出分支
168
+ BRANCH_NAME="sitemap-update-$(date +%Y%m%d%H%M%S)"
169
+ git checkout -b $BRANCH_NAME
170
+ echo "[INFO] 已创建新分支: $BRANCH_NAME"
171
+
172
+ # 生成工作流 URL
173
+ WORKFLOW_URL="https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}"
174
+ ;;
175
+ "commit"|"提交"|"直接提交"|"directcommit"|"commitdirectly")
176
+ UPDATE_WAY="Commit"
177
+ if [[ "$DEBUG" ]]; then
178
+ echo "[DEBUG] 更新方式: 直接提交到主分支"
179
+ fi
180
+ # 不得同时使用的参数
181
+ params=("LABELS" "AUTO_MERGE")
182
+
183
+ # 遍历参数名称数组,检查冲突
184
+ for param_name in "${params[@]}"; do
185
+ param_value="${!param_name}"
186
+ if [[ -n "$param_value" ]]; then
187
+ echo "[ERROR] 错误的参数传递"
188
+ echo "[TIP] $param_name 参数不得与更新方式“提交”共存"
189
+ exit 1
190
+ fi
191
+ done
192
+ ;;
193
+ *)
194
+ echo "[ERROR] 未知的更新方式: $AUTO_MERGE"
195
+ echo "[TIP] 可用的更新方式: 提交、拉取请求"
196
+ exit 1
197
+ ;;
198
+ esac
199
+
200
+ # 前面做完都要做的
156
201
157
202
# 配置 Git 用户
158
203
git config user.name "github-actions[bot]"
@@ -161,32 +206,32 @@ runs:
161
206
# 提交并推送 sitemap.xml
162
207
git add "$LOCATION"
163
208
git commit -m "[${DATE_TIME}] 自动更新网站地图"
164
- git push --set-upstream origin $BRANCH_NAME
165
-
166
- # 生成工作流 URL
167
- WORKFLOW_URL="https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}"
168
-
169
- # 创建拉取请求
170
- PR_URL=$(gh pr create --title "[${DATE_TIME}] 自动更新网站地图" \
171
- --body "此拉取请求通过 [工作流](${WORKFLOW_URL}) 使用 [Sitemap Creator](https://github.com/DuckDuckStudio/Sitemap_Creator) 创建。" \
172
- --base ${{ inputs.base_branch }} \
173
- --head $BRANCH_NAME)
174
-
175
- echo "[INFO] 已创建拉取请求: $PR_URL"
176
-
177
- # 判断是否有清理后的标签并添加到 PR
178
- if [[ -n "$CLEAN_LABELS" ]]; then
179
- gh pr edit "$PR_URL" --add-label "$CLEAN_LABELS"
180
- echo "[INFO] 已为创建的拉取请求添加标签: $CLEAN_LABELS"
181
- elif [[ "$DEBUG" ]]; then
182
- echo "[DEBUG] 没有有效标签,跳过添加标签"
183
- fi
209
+ git config --global push.autoSetupRemote true
210
+ git push
211
+
212
+ # 拉取请求更新后续还要做的
213
+ if [[ "$UPDATE_WAY" == "PR" ]]; then
214
+ # 创建拉取请求
215
+ PR_URL=$(gh pr create --title "[${DATE_TIME}] 自动更新网站地图" \
216
+ --body "此拉取请求通过 [工作流](${WORKFLOW_URL}) 使用 [Sitemap Creator](https://github.com/DuckDuckStudio/Sitemap_Creator) 创建。" \
217
+ --base ${{ inputs.base_branch }} \
218
+ --head $BRANCH_NAME)
219
+ echo "[INFO] 已创建拉取请求: $PR_URL"
220
+
221
+ # 判断是否有清理后的标签并添加到 PR
222
+ if [[ -n "$CLEAN_LABELS" ]]; then
223
+ gh pr edit "$PR_URL" --add-label "$CLEAN_LABELS"
224
+ echo "[INFO] 已为创建的拉取请求添加标签: $CLEAN_LABELS"
225
+ elif [[ "$DEBUG" ]]; then
226
+ echo "[DEBUG] 没有有效标签,跳过添加标签"
227
+ fi
184
228
185
- # 判断是否启用自动合并
186
- # 如果 CLEAN_AUTO_MERGE 有值(即设置了自动合并方式),进行后续处理
187
- if [[ -n "$CLEAN_AUTO_MERGE" ]]; then
188
- gh pr merge "$PR_URL" --$CLEAN_AUTO_MERGE --auto
189
- echo "[INFO] 已为拉取请求启用 $CLEAN_AUTO_MERGE 合并"
190
- elif [[ "$DEBUG" ]]; then
191
- echo "[DEBUG] 没有有效自动合并方式,跳过启用自动合并"
229
+ # 判断是否启用自动合并
230
+ # 如果 CLEAN_AUTO_MERGE 有值(即设置了自动合并方式),进行后续处理
231
+ if [[ -n "$CLEAN_AUTO_MERGE" ]]; then
232
+ gh pr merge "$PR_URL" --$CLEAN_AUTO_MERGE --auto
233
+ echo "[INFO] 已为拉取请求启用 $CLEAN_AUTO_MERGE 合并"
234
+ elif [[ "$DEBUG" ]]; then
235
+ echo "[DEBUG] 没有有效自动合并方式,跳过启用自动合并"
236
+ fi
192
237
fi
0 commit comments