-
-
Notifications
You must be signed in to change notification settings - Fork 2.1k
184 lines (166 loc) · 6.38 KB
/
release-process_release-candidate.yml
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
name: Prepare Release Candidate
run-name: Release Candidate for Cura ${{ inputs.cura_version }} by @${{ github.actor }}
on:
workflow_call:
inputs:
cura_version:
description: 'Cura version number, e.g. 5.7, 5.7.2 or 5.8.0-beta.2'
required: true
type: string
jobs:
parse-version:
name: Parse input version string
runs-on: ubuntu-latest
outputs:
version_major: ${{ steps.version_parser.outputs.major }}
version_minor: ${{ steps.version_parser.outputs.minor }}
version_patch: ${{ steps.version_parser.outputs.patch }}
branch_name: ${{ steps.version_parser.outputs.major }}.${{ steps.version_parser.outputs.minor }}
steps:
- name: Parse version string
id: version_parser
uses: booxmedialtd/[email protected]
with:
input_string: ${{ inputs.cura_version }}
prepare-cura-repo:
name: Update dependencies and find RC tag name
runs-on: ubuntu-latest
needs: [parse-version]
outputs:
tag_name: ${{ steps.find-available-tag-name.outputs.tag_name }}
steps:
- name: Checkout repo
uses: actions/checkout@v4
with:
ref: ${{ needs.parse-version.outputs.branch_name }}
fetch-tags: true
fetch-depth: 0
- name: Update Cura dependencies
run: |
PACKAGE_VERSION=${{ inputs.cura_version }}
sed -i "s/\"uranium\/.*/\"uranium\/$PACKAGE_VERSION\"/g" conandata.yml
sed -i "s/\"cura_resources\/.*/\"cura_resources\/$PACKAGE_VERSION\"/g" conandata.yml
sed -i "s/\"curaengine\/.*/\"curaengine\/$PACKAGE_VERSION\"/g" conandata.yml
sed -i "s/\"cura_binary_data\/.*/\"cura_binary_data\/$PACKAGE_VERSION\"/g" conandata.yml
sed -i "s/\"fdm_materials\/.*/\"fdm_materials\/$PACKAGE_VERSION\"/g" conandata.yml
- name: Commit new dependencies versioning
uses: stefanzweifel/[email protected]
with:
commit_message: Set dependencies version ${{ inputs.cura_version }}
file_pattern: conandata.yml
- name: Find available tag name
id: find-available-tag-name
run: |
VERSION=${{ inputs.cura_version }}
RC_INDEX=0
while
RC_INDEX=$((RC_INDEX+1))
TAG_NAME="$VERSION-RC$RC_INDEX"
[[ $(git tag -l "$TAG_NAME") ]]
do true; done
echo "tag_name=$TAG_NAME" >> "$GITHUB_OUTPUT"
create-tags:
name: Create tags
runs-on: ubuntu-latest
needs: [parse-version, prepare-cura-repo]
strategy:
matrix:
repository: [Cura, Uranium, CuraEngine, cura-binary-data, fdm_materials]
steps:
- name: Checkout repo
uses: actions/checkout@v4
with:
repository: Ultimaker/${{ matrix.repository }}
ref: ${{ needs.parse-version.outputs.branch_name }}
token: ${{ secrets.CURA_AUTORELEASE_PAT }}
- name: Create tag
run: |
git tag ${{ needs.prepare-cura-repo.outputs.tag_name }}
git push origin tag ${{ needs.prepare-cura-repo.outputs.tag_name }}
create-dependencies-packages:
name: Create conan packages for dependencies
runs-on: ubuntu-latest
needs: [parse-version, prepare-cura-repo]
strategy:
matrix:
repository: [Cura, Uranium, CuraEngine, cura-binary-data, fdm_materials]
include:
- conan_recipe_root: "."
- repository: Cura
conan_recipe_root: "resources"
steps:
call-create-package:
name: Call external create package
uses: mathze/[email protected]
with:
owner: Ultimaker
repo: Cura-workflows
workflow-name: conan-package-release.yml
use-marker-step: true
ref: CURA-10769_automate_release_action
token: ${{ secrets.CURA_AUTORELEASE_PAT }}
payload: |
{
"repository": "${{ matrix.repository }}",
"ref_name": "${{ needs.parse-version.outputs.branch_name }}",
"version": "${{ inputs.cura_version }}",
"conan_release": true,
"conan_user_channel": "ultimaker/stable",
"conan_internal": false,
"conan_latest": true,
"conan_recipe_root": "${{ matrix.conan_recipe_root }}"
}
create-cura-package:
name: Create conan package for Cura
uses: Ultimaker/Cura-workflows/.github/workflows/conan-package-release.yml@CURA-10769_automate_release_action
needs: [parse-version, create-dependencies-packages]
with:
repository: Cura
ref_name: ${{ needs.parse-version.outputs.branch_name }}
version: ${{ inputs.cura_version }}
conan_release: true
conan_user_channel: ultimaker/stable
conan_internal: false
conan_latest: true
secrets: inherit
create-installers:
name: Create installers
uses: Ultimaker/Cura/.github/workflows/installers.yml@CURA-10769_automate_release_action
needs: [parse-version, create-cura-package]
with:
cura_conan_version: cura/${{ inputs.cura_version }}@/
enterprise: false
staging: false
nightly: false
secrets: inherit
create-release-draft:
name: Create the release draft
runs-on: ubuntu-latest
needs: [create-installers, parse-version]
steps:
- name: Download artifacts
uses: actions/[email protected]
with:
path: artifacts
merge-multiple: true
- name: Checkout Cura repo
uses: actions/checkout@v4
with:
ref: ${{ needs.parse-version.outputs.branch_name }}
- name: Extract changelog
run: python ./scripts/extract_changelog.py --version ${{ needs.parse-version.outputs.version_major }}.${{ needs.parse-version.outputs.version_minor }}.${{ needs.parse-version.outputs.version_patch }} --changelog ./resources/texts/change_log.txt > formatted_changelog.txt
- name: Get commit id for release
id: get-commit-id
uses: iawia002/[email protected]
with:
length: 40
- name: Create release
uses: notpeelz/[email protected]
with:
target: ${{ steps.get-commit-id.outputs.id }}
tag: ${{ inputs.cura_version }}
strategy: replace
title: UltiMaker Cura ${{ inputs.cura_version }}
draft: true
body-source: file
body: formatted_changelog.txt