|
4 | 4 | push: |
5 | 5 | branches: |
6 | 6 | - main |
7 | | - |
| 7 | + |
8 | 8 | permissions: |
9 | 9 | contents: write # we need this to be able to push tags |
| 10 | + pull-requests: read |
10 | 11 |
|
11 | 12 | jobs: |
12 | 13 | release_tag: |
13 | | - name: Release version |
14 | | - runs-on: ubuntu-24.04 |
15 | | - steps: |
16 | | - - name: Checkout code |
17 | | - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 |
18 | | - with: |
19 | | - ssh-key: ${{ secrets.PUSH_KEY }} |
20 | | - fetch-tags: true |
21 | | - fetch-depth: 0 |
22 | | - submodules: recursive |
23 | | - |
24 | | - - name: Install Task |
25 | | - uses: arduino/setup-task@v2 |
26 | | - with: |
27 | | - version: 3.x |
28 | | - |
29 | | - - name: Read and validate VERSION |
30 | | - id: version |
31 | | - run: | |
32 | | - VERSION=$(task version) |
33 | | - if [[ ! "$VERSION" =~ ^v[0-9]+\.[0-9]+\.[0-9]+(-dev(-[0-9a-f]*)?)?$ ]]; then |
34 | | - echo "Invalid version format: $VERSION" |
35 | | - exit 1 |
36 | | - fi |
37 | | - echo "New version: $VERSION" |
38 | | - echo "version=$VERSION" >> $GITHUB_ENV |
39 | | -
|
40 | | - - name: Skip release if version is a dev version |
41 | | - if: contains(env.version, '-dev') |
42 | | - run: | |
43 | | - echo "Skipping development version release: ${{ env.version }}" |
44 | | - echo "SKIP=true" >> $GITHUB_ENV |
45 | | - exit 0 |
46 | | - |
47 | | - - name: Check if VERSION is already tagged |
48 | | - id: check_tag |
49 | | - run: | |
50 | | - if git rev-parse "refs/tags/${{ env.version }}" >/dev/null 2>&1; then |
51 | | - echo "Tag ${{ env.version }} already exists. Skipping release." |
52 | | - echo "SKIP=true" >> $GITHUB_ENV |
53 | | - exit 0 |
54 | | - fi |
55 | | - echo "Tag ${{ env.version }} doesn't exists. Proceeding with release." |
56 | | -
|
57 | | - - name: Create Git tag |
58 | | - if: ${{ env.SKIP != 'true' }} |
59 | | - run: | |
60 | | - AUTHOR_NAME=$(git log -1 --pretty=format:'%an') |
61 | | - AUTHOR_EMAIL=$(git log -1 --pretty=format:'%ae') |
62 | | - echo "Tagging as $AUTHOR_NAME <$AUTHOR_EMAIL>" |
63 | | -
|
64 | | - echo "AUTHOR_NAME=$AUTHOR_NAME" >> $GITHUB_ENV |
65 | | - echo "AUTHOR_EMAIL=$AUTHOR_EMAIL" >> $GITHUB_ENV |
66 | | -
|
67 | | - git config user.name "$AUTHOR_NAME" |
68 | | - git config user.email "$AUTHOR_EMAIL" |
69 | | -
|
70 | | - git tag -a "${{ env.version }}" -m "Release ${{ env.version }}" |
71 | | - git push origin "${{ env.version }}" |
72 | | -
|
73 | | - - name: Create Git tag for api submodule |
74 | | - if: ${{ env.SKIP != 'true' }} |
75 | | - run: | |
76 | | - AUTHOR_NAME=$(git log -1 --pretty=format:'%an') |
77 | | - AUTHOR_EMAIL=$(git log -1 --pretty=format:'%ae') |
78 | | - echo "Tagging as $AUTHOR_NAME <$AUTHOR_EMAIL>" |
79 | | -
|
80 | | - echo "AUTHOR_NAME=$AUTHOR_NAME" >> $GITHUB_ENV |
81 | | - echo "AUTHOR_EMAIL=$AUTHOR_EMAIL" >> $GITHUB_ENV |
82 | | -
|
83 | | - git config user.name "$AUTHOR_NAME" |
84 | | - git config user.email "$AUTHOR_EMAIL" |
85 | | -
|
86 | | - git tag -a "api/${{ env.version }}" -m "Release ${{ env.version }}" |
87 | | - git push origin "api/${{ env.version }}" |
88 | | -
|
89 | | - - name: Build Changelog |
90 | | - id: github_release |
91 | | - uses: mikepenz/release-changelog-builder-action@e92187bd633e680ebfdd15961a7c30b2d097e7ad # v5 |
92 | | - with: |
93 | | - mode: "PR" |
94 | | - configurationJson: | |
95 | | - { |
96 | | - "template": "#{{CHANGELOG}}", |
97 | | - "pr_template": "- #{{TITLE}}: ##{{NUMBER}}", |
98 | | - "categories": [ |
99 | | - { |
100 | | - "title": "## Feature", |
101 | | - "labels": ["feat", "feature"] |
102 | | - }, |
103 | | - { |
104 | | - "title": "## Fix", |
105 | | - "labels": ["fix", "bug"] |
106 | | - }, |
107 | | - { |
108 | | - "title": "## Other", |
109 | | - "labels": [] |
110 | | - } |
111 | | - ], |
112 | | - "label_extractor": [ |
113 | | - { |
114 | | - "pattern": "^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test){1}(\\([\\w\\-\\.]+\\))?(!)?: ([\\w ])+([\\s\\S]*)", |
115 | | - "on_property": "title", |
116 | | - "target": "$1" |
117 | | - } |
118 | | - ] |
119 | | - } |
120 | | - env: |
121 | | - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
122 | | - |
123 | | - - name: Create GitHub release |
124 | | - if: ${{ env.SKIP != 'true' }} |
125 | | - uses: softprops/action-gh-release@da05d552573ad5aba039eaac05058a918a7bf631 # v2 |
126 | | - with: |
127 | | - tag_name: ${{ env.version }} |
128 | | - name: Release ${{ env.version }} |
129 | | - body: ${{steps.github_release.outputs.changelog}} |
130 | | - draft: true |
131 | | - prerelease: false |
132 | | - env: |
133 | | - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
134 | | - |
135 | | - - name: Push dev VERSION |
136 | | - if: ${{ env.SKIP != 'true' }} |
137 | | - run: | |
138 | | - task release:set-version --verbose -- "${{ env.version }}-dev" |
139 | | - git config user.name "${{ env.AUTHOR_NAME }}" |
140 | | - git config user.email "${{ env.AUTHOR_EMAIL }}" |
141 | | - git add VERSION |
142 | | - git commit -m "Update VERSION to ${{ env.version }}-dev" |
143 | | - git push origin main |
| 14 | + uses: openmcp-project/build/.github/workflows/release.lib.yaml@main |
| 15 | + secrets: inherit |
0 commit comments