Skip to content

Commit c87efe8

Browse files
committed
chore: prepare release workflow for codegen 3.0 adjustments
1 parent 41e6de2 commit c87efe8

3 files changed

Lines changed: 48 additions & 2 deletions

File tree

.github/workflows/prepare-release-3.yml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,18 @@ permissions:
3333
pull-requests: write
3434

3535
jobs:
36+
validate-branch:
37+
if: github.ref_name != '3.0.0'
38+
runs-on: ubuntu-latest
39+
steps:
40+
- name: Require 3.0.0 branch
41+
run: |
42+
echo "This workflow can run only from branch 3.0.0 (current: ${GITHUB_REF_NAME})."
43+
exit 1
44+
3645
prepare:
3746
# Resolves release versions, applies file updates, validates build, then opens PR.
47+
if: github.ref_name == '3.0.0'
3848
runs-on: ubuntu-latest
3949
env:
4050
CODEGEN_VERSION: ${{ inputs.codegen_version }}
@@ -85,6 +95,17 @@ jobs:
8595
# Performs version bump to release and updates docs/poms/openapi.
8696
run: bash CI/release/prepare-codegen-release.sh
8797

98+
- name: Create or update draft GitHub release
99+
uses: ncipollo/release-action@v1
100+
with:
101+
allowUpdates: true
102+
bodyFile: ${{ steps.prepare-release.outputs.release_notes_file }}
103+
commit: 3.0.0
104+
draft: true
105+
name: v${{ steps.prepare-release.outputs.codegen_version }}
106+
tag: v${{ steps.prepare-release.outputs.codegen_version }}
107+
token: ${{ steps.generate-token.outputs.token }}
108+
88109
- name: Build release candidate
89110
# Build with the resolved generators version to catch dependency issues early.
90111
run: |

CI/release/prepare-codegen-release.sh

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ previous_generators_version="${PREVIOUS_GENERATORS_VERSION:-}"
1313
build_generators_version=""
1414

1515
# Prepare flow must start from a SNAPSHOT on branch 3.0.0.
16+
current_branch="$(git rev-parse --abbrev-ref HEAD)"
17+
[[ "${current_branch}" == "3.0.0" ]] || fail "Prepare release can run only on branch 3.0.0, got ${current_branch}"
1618
current_version="$(maven_project_version)"
1719
[[ "${current_version}" =~ SNAPSHOT$ ]] || fail "Prepare release must start from a SNAPSHOT codegen version, got ${current_version}"
1820

@@ -76,9 +78,10 @@ mvn -B versions:set -DnewVersion="${codegen_version}"
7678
mvn -B versions:commit
7779

7880
# Generate a minimal release-notes draft aligned with current GitHub release style.
79-
mkdir -p docs/release-notes
81+
release_notes_dir="${RUNNER_TEMP:-/tmp}/swagger-codegen-release-drafts"
82+
mkdir -p "${release_notes_dir}"
8083
previous_tag="$(git tag --merged HEAD --list 'v3.*' | sort -V | tail -n 1 || true)"
81-
release_notes_file="docs/release-notes/v${codegen_version}.md"
84+
release_notes_file="${release_notes_dir}/v${codegen_version}.md"
8285
{
8386
echo "# Swagger Codegen v${codegen_version}"
8487
echo
@@ -98,6 +101,10 @@ release_notes_file="docs/release-notes/v${codegen_version}.md"
98101
fi
99102
} > "${release_notes_file}"
100103

104+
if [[ -n "${GITHUB_OUTPUT:-}" ]]; then
105+
echo "release_notes_file=${release_notes_file}" >> "${GITHUB_OUTPUT}"
106+
fi
107+
101108
update_codegen_release_files_script="CI/release/update-codegen-release-files.py"
102109
[[ -f "${update_codegen_release_files_script}" ]] || fail "Missing ${update_codegen_release_files_script}"
103110

CI/release/update-codegen-release-files.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,22 @@ def update_generators_poms(generators_version: str) -> None:
6666
replace_text("pom.docker.xml", replacements)
6767

6868

69+
def update_sample_meta_codegen_pom(codegen_version: str) -> None:
70+
# Keep sample project pinned to the codegen version being prepared.
71+
replace_text(
72+
"samples/meta-codegen/pom.xml",
73+
[(r"<swagger-codegen-version>[^<]+</swagger-codegen-version>", f"<swagger-codegen-version>{codegen_version}</swagger-codegen-version>")],
74+
)
75+
76+
77+
def update_docker_pom_version(codegen_version: str) -> None:
78+
# Keep root project version in pom.docker.xml aligned with released codegen version.
79+
replace_text(
80+
"pom.docker.xml",
81+
[(r"<version>3\.0\.[0-9]+(?:-SNAPSHOT)?</version>", f"<version>{codegen_version}</version>")],
82+
)
83+
84+
6985
def update_openapi_version(version: str) -> None:
7086
# Reflect current codegen version in online generator OpenAPI metadata.
7187
replace_text(
@@ -121,6 +137,8 @@ def main() -> int:
121137
return 2
122138
codegen_version, next_snapshot, generators_version = sys.argv[2:5]
123139
update_generators_poms(generators_version)
140+
update_sample_meta_codegen_pom(codegen_version)
141+
update_docker_pom_version(codegen_version)
124142
update_openapi_version(codegen_version)
125143
update_snapshot_rows(next_snapshot)
126144
update_release_rows(codegen_version)

0 commit comments

Comments
 (0)