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