🔧 修复标记一致性问题:统一模板文件与脚本的标记格式 #28
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Create Release | |
| on: | |
| push: | |
| tags: | |
| - 'v*.*.*' | |
| workflow_dispatch: | |
| jobs: | |
| release: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Get current tag | |
| id: get_tag | |
| run: | | |
| # Get the current tag that triggered this workflow | |
| CURRENT_TAG=${{ github.ref_name }} | |
| # Remove 'v' prefix for package naming | |
| PACKAGE_VERSION=${CURRENT_TAG#v} | |
| echo "current_tag=$CURRENT_TAG" >> $GITHUB_OUTPUT | |
| echo "package_version=$PACKAGE_VERSION" >> $GITHUB_OUTPUT | |
| echo "Using tag: $CURRENT_TAG" | |
| echo "Package version: $PACKAGE_VERSION" | |
| - name: Check if release already exists | |
| id: check_release | |
| run: | | |
| if gh release view ${{ steps.get_tag.outputs.current_tag }} >/dev/null 2>&1; then | |
| echo "exists=true" >> $GITHUB_OUTPUT | |
| echo "Release ${{ steps.get_tag.outputs.current_tag }} already exists, skipping..." | |
| else | |
| echo "exists=false" >> $GITHUB_OUTPUT | |
| echo "Release ${{ steps.get_tag.outputs.current_tag }} does not exist, proceeding..." | |
| fi | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Create release package variants | |
| if: steps.check_release.outputs.exists == 'false' | |
| run: | | |
| chmod +x .github/workflows/scripts/create-release-packages.sh | |
| .github/workflows/scripts/create-release-packages.sh ${{ steps.get_tag.outputs.current_tag }} | |
| - name: Generate release notes | |
| if: steps.check_release.outputs.exists == 'false' | |
| id: release_notes | |
| run: | | |
| # Get commits since last tag | |
| LAST_TAG=$(git describe --tags --abbrev=0 HEAD~1 2>/dev/null || echo "") | |
| if [ -z "$LAST_TAG" ]; then | |
| # If no previous tags, get last 20 commits | |
| COMMITS=$(git log --oneline --pretty=format:"- %s" HEAD~20..HEAD) | |
| else | |
| COMMITS=$(git log --oneline --pretty=format:"- %s" $LAST_TAG..HEAD) | |
| fi | |
| # Create release notes | |
| cat > release_notes.md << EOF | |
| Spec Kit CN 中文模板发布 ${{ steps.get_tag.outputs.current_tag }} | |
| Updated specification-driven development templates for multiple AI assistants including GitHub Copilot, Claude Code, Gemini CLI, Cursor, Qwen, OpenCode, Windsurf, Codex, Kilocode, Auggie, Roo, and CodeBuddy. | |
| Download the template for your preferred AI assistant and script type: | |
| - spec-kit-template-copilot-sh-${{ steps.get_tag.outputs.package_version }}.zip | |
| - spec-kit-template-copilot-ps-${{ steps.get_tag.outputs.package_version }}.zip | |
| - spec-kit-template-claude-sh-${{ steps.get_tag.outputs.package_version }}.zip | |
| - spec-kit-template-claude-ps-${{ steps.get_tag.outputs.package_version }}.zip | |
| - spec-kit-template-gemini-sh-${{ steps.get_tag.outputs.package_version }}.zip | |
| - spec-kit-template-gemini-ps-${{ steps.get_tag.outputs.package_version }}.zip | |
| - spec-kit-template-cursor-agent-sh-${{ steps.get_tag.outputs.package_version }}.zip | |
| - spec-kit-template-cursor-agent-ps-${{ steps.get_tag.outputs.package_version }}.zip | |
| - spec-kit-template-qwen-sh-${{ steps.get_tag.outputs.package_version }}.zip | |
| - spec-kit-template-qwen-ps-${{ steps.get_tag.outputs.package_version }}.zip | |
| - spec-kit-template-opencode-sh-${{ steps.get_tag.outputs.package_version }}.zip | |
| - spec-kit-template-opencode-ps-${{ steps.get_tag.outputs.package_version }}.zip | |
| - spec-kit-template-q-sh-${{ steps.get_tag.outputs.package_version }}.zip | |
| - spec-kit-template-q-ps-${{ steps.get_tag.outputs.package_version }}.zip | |
| - spec-kit-template-windsurf-sh-${{ steps.get_tag.outputs.package_version }}.zip | |
| - spec-kit-template-windsurf-ps-${{ steps.get_tag.outputs.package_version }}.zip | |
| - spec-kit-template-codex-sh-${{ steps.get_tag.outputs.package_version }}.zip | |
| - spec-kit-template-codex-ps-${{ steps.get_tag.outputs.package_version }}.zip | |
| - spec-kit-template-kilocode-sh-${{ steps.get_tag.outputs.package_version }}.zip | |
| - spec-kit-template-kilocode-ps-${{ steps.get_tag.outputs.package_version }}.zip | |
| - spec-kit-template-auggie-sh-${{ steps.get_tag.outputs.package_version }}.zip | |
| - spec-kit-template-auggie-ps-${{ steps.get_tag.outputs.package_version }}.zip | |
| - spec-kit-template-roo-sh-${{ steps.get_tag.outputs.package_version }}.zip | |
| - spec-kit-template-roo-ps-${{ steps.get_tag.outputs.package_version }}.zip | |
| - spec-kit-template-codebuddy-sh-${{ steps.get_tag.outputs.package_version }}.zip | |
| - spec-kit-template-codebuddy-ps-${{ steps.get_tag.outputs.package_version }}.zip | |
| EOF | |
| echo "Generated release notes:" | |
| cat release_notes.md | |
| - name: Create GitHub Release | |
| if: steps.check_release.outputs.exists == 'false' | |
| run: | | |
| # Use package_version (without v) for release title | |
| VERSION_NO_V=${{ steps.get_tag.outputs.package_version }} | |
| gh release create ${{ steps.get_tag.outputs.current_tag }} \ | |
| spec-kit-template-copilot-sh-${{ steps.get_tag.outputs.package_version }}.zip \ | |
| spec-kit-template-copilot-ps-${{ steps.get_tag.outputs.package_version }}.zip \ | |
| spec-kit-template-claude-sh-${{ steps.get_tag.outputs.package_version }}.zip \ | |
| spec-kit-template-claude-ps-${{ steps.get_tag.outputs.package_version }}.zip \ | |
| spec-kit-template-gemini-sh-${{ steps.get_tag.outputs.package_version }}.zip \ | |
| spec-kit-template-gemini-ps-${{ steps.get_tag.outputs.package_version }}.zip \ | |
| spec-kit-template-cursor-agent-sh-${{ steps.get_tag.outputs.package_version }}.zip \ | |
| spec-kit-template-cursor-agent-ps-${{ steps.get_tag.outputs.package_version }}.zip \ | |
| spec-kit-template-qwen-sh-${{ steps.get_tag.outputs.package_version }}.zip \ | |
| spec-kit-template-qwen-ps-${{ steps.get_tag.outputs.package_version }}.zip \ | |
| spec-kit-template-opencode-sh-${{ steps.get_tag.outputs.package_version }}.zip \ | |
| spec-kit-template-opencode-ps-${{ steps.get_tag.outputs.package_version }}.zip \ | |
| spec-kit-template-q-sh-${{ steps.get_tag.outputs.package_version }}.zip \ | |
| spec-kit-template-q-ps-${{ steps.get_tag.outputs.package_version }}.zip \ | |
| spec-kit-template-windsurf-sh-${{ steps.get_tag.outputs.package_version }}.zip \ | |
| spec-kit-template-windsurf-ps-${{ steps.get_tag.outputs.package_version }}.zip \ | |
| spec-kit-template-codex-sh-${{ steps.get_tag.outputs.package_version }}.zip \ | |
| spec-kit-template-codex-ps-${{ steps.get_tag.outputs.package_version }}.zip \ | |
| spec-kit-template-kilocode-sh-${{ steps.get_tag.outputs.package_version }}.zip \ | |
| spec-kit-template-kilocode-ps-${{ steps.get_tag.outputs.package_version }}.zip \ | |
| spec-kit-template-auggie-sh-${{ steps.get_tag.outputs.package_version }}.zip \ | |
| spec-kit-template-auggie-ps-${{ steps.get_tag.outputs.package_version }}.zip \ | |
| spec-kit-template-roo-sh-${{ steps.get_tag.outputs.package_version }}.zip \ | |
| spec-kit-template-roo-ps-${{ steps.get_tag.outputs.package_version }}.zip \ | |
| spec-kit-template-codebuddy-sh-${{ steps.get_tag.outputs.package_version }}.zip \ | |
| spec-kit-template-codebuddy-ps-${{ steps.get_tag.outputs.package_version }}.zip \ | |
| --title "Spec Kit CN 中文模板 - $VERSION_NO_V" \ | |
| --notes-file release_notes.md | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Update version in pyproject.toml (for release artifacts only) | |
| if: steps.check_release.outputs.exists == 'false' | |
| run: | | |
| # Update version in pyproject.toml using package_version (without v prefix) | |
| PYTHON_VERSION=${{ steps.get_tag.outputs.package_version }} | |
| if [ -f "pyproject.toml" ]; then | |
| sed -i "s/version = \".*\"/version = \"$PYTHON_VERSION\"/" pyproject.toml | |
| echo "Updated pyproject.toml version to $PYTHON_VERSION (for release artifacts only)" | |
| fi | |
| # Note: No longer committing version changes back to main branch | |
| # The version is only updated in the release artifacts |