Skip to content

Commit 0814580

Browse files
authored
[build] create a stage release workflow for after the pre-release PR (#14122)
This builds assets on RBE and creates draft GitHub Release
1 parent 8b56711 commit 0814580

File tree

2 files changed

+66
-36
lines changed

2 files changed

+66
-36
lines changed

.github/workflows/stage-release.yml

+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
name: Release Staging
2+
3+
on:
4+
pull_request:
5+
types: [closed]
6+
7+
env:
8+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
9+
10+
jobs:
11+
github-release:
12+
if: >
13+
github.event.pull_request.merged == true &&
14+
github.repository_owner == 'seleniumhq' &&
15+
startsWith(github.event.pull_request.head.ref, 'release-preparation-')
16+
runs-on: ubuntu-latest
17+
steps:
18+
- name: Checkout repo
19+
uses: actions/checkout@v4
20+
- name: Extract version from branch name
21+
id: extract_version
22+
run: |
23+
BRANCH_NAME="${{ github.event.pull_request.head.ref }}"
24+
VERSION=$(echo $BRANCH_NAME | grep -oE '[0-9]+\.[0-9]+\.[0-9]+')
25+
echo "VERSION=$VERSION" >> $GITHUB_ENV
26+
- name: Prep git
27+
run: |
28+
git config --local user.email "[email protected]"
29+
git config --local user.name "Selenium CI Bot"
30+
- name: Tag Release
31+
run: |
32+
git tag selenium-${{ env.VERSION }}
33+
git push origin selenium-${{ env.VERSION }}
34+
- name: Update Nightly Tag to Remove pre-release
35+
run: |
36+
git fetch --tags
37+
git tag -d nightly || echo "Nightly tag not found"
38+
git tag nightly
39+
git push origin refs/tags/nightly --force
40+
- name: Setup Java
41+
uses: actions/setup-java@v3
42+
with:
43+
java-version: 17
44+
distribution: 'temurin'
45+
- name: Build and Stage Packages
46+
run: ./go all:package[--config=release]
47+
- name: Generate Draft Release
48+
uses: softprops/action-gh-release@v2
49+
with:
50+
name: Selenium ${{ env.VERSION }}
51+
body: |
52+
## Detailed Changelogs by Component
53+
<img src="https://www.selenium.dev/images/programming/java.svg" width="20" height="20"> **[Java](https://github.com./SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)** &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img src="https://www.selenium.dev/images/programming/python.svg" width="20" height="20"> **[Python](https://github.com./SeleniumHQ/selenium/blob/trunk/py/CHANGES)** &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img src="https://www.selenium.dev/images/programming/csharp.svg" width="20" height="20"> **[DotNet](https://github.com./SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)** &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img src="https://www.selenium.dev/images/programming/ruby.svg" width="20" height="20"> **[Ruby](https://github.com./SeleniumHQ/selenium/blob/trunk/rb/CHANGES)** &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img src="https://www.selenium.dev/images/programming/javascript.svg" width="20" height="20"> **[JavaScript](https://github.com./SeleniumHQ/selenium/blob/trunk/javascript/node/selenium-webdriver/CHANGES.md)** &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img src="https://www.selenium.dev/images/browsers/internet-explorer.svg" width="20" height="20"> **[IEDriver](https://github.com./SeleniumHQ/selenium/blob/trunk/cpp/iedriverserver/CHANGELOG)**
54+
<br>
55+
tag_name: selenium-${{ env.VERSION }}
56+
draft: true
57+
generate_release_notes: true
58+
prerelease: false
59+
files: build/dist/*.*

Rakefile

+7-36
Original file line numberDiff line numberDiff line change
@@ -1035,19 +1035,23 @@ namespace :all do
10351035
Rake::Task['node:build'].invoke(*args)
10361036
end
10371037

1038+
desc 'Package or build stamped artifacts for distribution in GitHub Release assets'
1039+
task :package do |_task, arguments|
1040+
args = arguments.to_a.compact
1041+
Rake::Task['java:package'].invoke(*args)
1042+
Rake::Task['dotnet:package'].invoke(*args)
1043+
end
1044+
10381045
desc 'Release all artifacts for all language bindings'
10391046
task :release do |_task, arguments|
10401047
Rake::Task['clean'].invoke
1041-
tag = @git.add_tag("selenium-#{java_version}")
1042-
@git.push('origin', tag.name)
10431048

10441049
args = arguments.to_a.compact.empty? ? ['--stamp'] : arguments.to_a.compact
10451050
Rake::Task['java:release'].invoke(*args)
10461051
Rake::Task['py:release'].invoke(*args)
10471052
Rake::Task['rb:release'].invoke(*args)
10481053
Rake::Task['dotnet:release'].invoke(*args)
10491054
Rake::Task['node:release'].invoke(*args)
1050-
Rake::Task['create_release_notes'].invoke
10511055
Rake::Task['all:docs'].invoke
10521056
Rake::Task['all:version'].invoke('nightly')
10531057

@@ -1140,39 +1144,6 @@ at_exit do
11401144
system 'sh', '.git-fixfiles' if File.exist?('.git') && !SeleniumRake::Checks.windows?
11411145
end
11421146

1143-
desc 'Create Release Notes for Minor Release'
1144-
task :create_release_notes do
1145-
range = "#{previous_tag(java_version)}...HEAD"
1146-
format = '* [\\`%h\\`](https://github.com./seleniumhq/selenium/commit/%H) - %s :: %aN'
1147-
git_log_command = %(git --no-pager log "#{range}" --pretty=format:"#{format}" --reverse)
1148-
git_log_output = `#{git_log_command}`
1149-
1150-
release_notes = <<~RELEASE_NOTES
1151-
### Changelog
1152-
1153-
For each component's detailed changelog, please check:
1154-
* [Ruby](https://github.com./SeleniumHQ/selenium/blob/trunk/rb/CHANGES)
1155-
* [Python](https://github.com./SeleniumHQ/selenium/blob/trunk/py/CHANGES)
1156-
* [JavaScript](https://github.com./SeleniumHQ/selenium/blob/trunk/javascript/node/selenium-webdriver/CHANGES.md)
1157-
* [Java](https://github.com./SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)
1158-
* [DotNet](https://github.com./SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)
1159-
* [IEDriverServer](https://github.com./SeleniumHQ/selenium/blob/trunk/cpp/iedriverserver/CHANGELOG)
1160-
1161-
### Commits in this release
1162-
<details>
1163-
<summary>Click to see all the commits included in this release</summary>
1164-
1165-
#{git_log_output}
1166-
1167-
</details>
1168-
RELEASE_NOTES
1169-
1170-
FileUtils.mkdir_p('build/dist')
1171-
release_notes_file = "build/dist/release_notes_#{java_version}.md"
1172-
File.write(release_notes_file, release_notes)
1173-
puts "Release notes have been generated at: #{release_notes_file}"
1174-
end
1175-
11761147
def updated_version(current, desired = nil, nightly = nil)
11771148
if !desired.nil? && desired != 'nightly'
11781149
# If desired is present, return full 3 digit version

0 commit comments

Comments
 (0)