ActionDemo/.gitea/workflows/AutoGenerateREADME.yaml
Workflow config file is invalid. Please check your config file: yaml: line 41: could not find expected ':'

78 lines
2.9 KiB
YAML

name: AutoGenerateREADME.md
on:
push:
branches:
- main
jobs:
create-readme:
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message, 'AutoGenerateREADME.md')"
steps:
- name: Checkout code from Gitea
env:
GITEA_TOKEN: ${{ secrets.AUTOGENERATE }}
GITEA_REPO_URL: ${{ github.server_url }}/${{ github.repository }}
CLEAN_REPO_URL: ${{ github.server_url }}/${{ github.repository }}
run: |
CLEAN_REPO_URL="${CLEAN_REPO_URL#https://}"
git clone "https://${GITEA_TOKEN}@${CLEAN_REPO_URL}" .
- name: Touch New README.md
run: |
if [ -f README.md ]; then
rm README.md
fi
- name: Get commit history and write to README
run: |
echo "# ActionDemo测试文档标题" > README.md
# 获取所有提交记录,包含提交哈希、作者、日期和提交信息
commits=$(git log --pretty=format:"%ct %h %an %ad %s" --date=short)
# 获取所有版本标签及其关联的提交哈希和日期
tags=$(git for-each-ref --sort=creatordate --format='%(creatordate:unix) %(objectname) %(refname:strip=2)' refs/tags)
# 合并提交记录和版本标签信息,并按时间排序
all_entries="$commits
$tags"
sorted_entries=$(echo "$all_entries" | sort -n)
# 遍历排序后的记录并写入 README
for entry in $sorted_entries; do
timestamp=$(echo $entry | cut -d ' ' -f 1)
hash_or_tag=$(echo $entry | cut -d ' ' -f 2)
rest=$(echo $entry | cut -d ' ' -f 3-)
# 检查是否为版本标签
if [[ $hash_or_tag == refs/tags/* ]]; then
tag_name=${hash_or_tag#refs/tags/}
echo "## Version $tag_name" >> README.md
else
commit_hash=$hash_or_tag
author=$(echo $rest | cut -d ' ' -f 1)
date=$(echo $rest | cut -d ' ' -f 2)
message=$(echo $rest | cut -d ' ' -f 3-)
echo "- $commit_hash $author $date $message" >> README.md
fi
done
- name: Commit and push changes
env:
GITEA_TOKEN: ${{ secrets.AUTOGENERATE }}
GITEA_REPO_URL: ${{ github.server_url }}/${{ github.repository }}
CLEAN_REPO_URL: ${{ github.server_url }}/${{ github.repository }}
run: |
CLEAN_REPO_URL="${CLEAN_REPO_URL#https://}"
git config --local user.email "liyepan@linuxacme.com"
git config --local user.name "iorebuild"
git add README.md
if git diff --staged --quiet; then
echo "No changes to commit."
else
git commit -m "Create README with commit history"
git push "https://${GITEA_TOKEN}@${CLEAN_REPO_URL}"
fi