auto-release/action.yaml

80 lines
2.5 KiB
YAML

name: auto-release
description: 自动发布版本
inputs:
server_url:
required: false
description: 服务器地址
default: ${{ gitea.server_url }}
token:
required: false
description: 授权凭证
default: ${{ gitea.token }}
files:
required: false
description: 要上传的文件
outputs:
version:
description: 发布的版本号
value: ${{ steps.get_version.outputs.version }}
runs:
using: composite
steps:
- name: 获取最新发布版本号
id: get_version
shell: bash
run: |
# 获取当前日期作为基础版本号
current_date=$(date +"%Y.%m.%d" | sed 's/\.0/\./g')
echo "current_date=$current_date"
echo "curl -H 'Authorization:token ${{ inputs.token }}' ${{ inputs.server_url }}/api/v1/repos/${{ gitea.repository }}/releases"
# 获取所有发布版本号
json=''
json=$(curl -H 'Authorization:token ${{ inputs.token }}' ${{ inputs.server_url }}/api/v1/repos/${{ gitea.repository }}/releases)
echo "json=$json"
# 检查是否存在当前日期的版本
if [ -n "$json" ]; then
# 提取所有标签名
tags=$(echo $json | grep -oP '"tag_name"\s*:\s*"\K[^"]*')
# 过滤出当前日期的版本
date_tags=$(echo "$tags" | grep "^$current_date")
echo "date_tags=$date_tags"
if [ -n "$date_tags" ]; then
# 计算当前日期版本的数量
count=$(echo "$date_tags" | wc -l)
# 如果有多个版本,添加数字后缀
if [ $count -gt 0 ]; then
version="$current_date-$count"
else
version="$current_date"
fi
else
version="$current_date"
fi
else
version="$current_date"
fi
echo "version=$version"
echo "version=$version" >> "$GITHUB_OUTPUT"
- name: 创建标签
shell: bash
run: |
tag_name="${{ steps.get_version.outputs.version }}"
git tag $tag_name ${{ gitea.ref_name }}
git push --tags
- name: 发布版本
uses: actions/release@master
with:
name: ${{ steps.get_version.outputs.version }}
tag_name: ${{ steps.get_version.outputs.version }}
target_commitish: ${{ gitea.ref_name }}
files: ${{ inputs.files }}