-
Notifications
You must be signed in to change notification settings - Fork 0
121 lines (112 loc) · 4.55 KB
/
modules-semantic-release.yml
File metadata and controls
121 lines (112 loc) · 4.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
name: 📦 Module | Semantic Release
on:
workflow_call:
inputs:
target-branch:
description: 'Target branch for releases'
required: false
type: string
default: 'main'
dry-run:
description: 'Perform dry run without creating release'
required: false
type: boolean
default: false
node-version:
description: 'Node.js version to use'
required: false
type: string
default: '20'
force-release:
description: 'Force create release even without conventional commits'
required: false
type: boolean
default: false
extra-plugins:
description: 'Additional semantic-release plugins to install (space-separated)'
required: false
type: string
default: ''
runs-on:
description: 'Runner to use. Use string for GitHub-hosted (e.g., "ubuntu-latest") or JSON array for self-hosted (e.g., ["self-hosted", "linux"])'
required: false
type: string
default: 'ubuntu-latest'
outputs:
release-created:
description: 'Whether a release was created'
value: ${{ jobs.semantic-release.outputs.release-created }}
version:
description: 'Release version'
value: ${{ jobs.semantic-release.outputs.version }}
tag-name:
description: 'Git tag name'
value: ${{ jobs.semantic-release.outputs.tag }}
permissions:
contents: write
issues: write
pull-requests: write
jobs:
semantic-release:
name: 📦 Semantic Release
runs-on: ${{ startsWith(inputs.runs-on, '[') && fromJSON(inputs.runs-on) || inputs.runs-on }}
outputs:
release-created: ${{ steps.release.outputs.release-created }}
version: ${{ steps.release.outputs.version }}
tag: ${{ steps.release.outputs.tag }}
steps:
- name: 🚀 Checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
persist-credentials: false
- name: 📥 Sync with Remote
run: |
echo "🔄 Fetching latest changes to ensure branch is up-to-date"
git config --global user.email "action@github.com"
git config --global user.name "GitHub Actions"
git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git
git fetch origin
git reset --hard origin/${{ inputs.target-branch }}
git clean -fd
echo "✅ Branch synchronized with remote"
- name: 🚀 Semantic Release
id: semantic
uses: bauer-group/automation-templates/.github/actions/semantic-release@main
with:
dry-run: ${{ inputs.dry-run }}
branches: ${{ inputs.target-branch }}
token: ${{ secrets.GITHUB_TOKEN }}
force-release: ${{ inputs.force-release }}
extra-plugins: ${{ inputs.extra-plugins }}
- name: 📊 Process Results
id: release
run: |
# Map outputs from action
if [ "${{ steps.semantic.outputs.release-created }}" = "true" ]; then
echo "release-created=true" >> $GITHUB_OUTPUT
echo "version=${{ steps.semantic.outputs.version }}" >> $GITHUB_OUTPUT
echo "tag=${{ steps.semantic.outputs.tag }}" >> $GITHUB_OUTPUT
echo "✅ Released version: ${{ steps.semantic.outputs.tag }}"
else
echo "release-created=false" >> $GITHUB_OUTPUT
echo "ℹ️ No release created (no releasable changes)"
fi
- name: 📊 Summary
if: always()
run: |
echo "### 🚀 Semantic Release Results" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
if [ "${{ steps.release.outputs.release-created }}" = "true" ]; then
echo "✅ **Release Created Successfully**" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "| Field | Value |" >> $GITHUB_STEP_SUMMARY
echo "|-------|-------|" >> $GITHUB_STEP_SUMMARY
echo "| **Version** | ${{ steps.release.outputs.version }} |" >> $GITHUB_STEP_SUMMARY
echo "| **Tag** | ${{ steps.release.outputs.tag }} |" >> $GITHUB_STEP_SUMMARY
echo "| **Branch** | ${{ inputs.target-branch }} |" >> $GITHUB_STEP_SUMMARY
else
echo "ℹ️ **No Release Created**" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "No releasable changes found since the last release." >> $GITHUB_STEP_SUMMARY
fi