80 lines
2.5 KiB
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 }}
|