Skip to content

Commit 2397ede

Browse files
committed
chore: update release workflow for codegen 3.0
1 parent 2c85230 commit 2397ede

7 files changed

Lines changed: 1019 additions & 323 deletions

File tree

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
name: Prepare Release 3.0
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
codegen_version:
7+
description: 'Release version, for example 3.0.80. Leave empty to derive from current SNAPSHOT.'
8+
required: false
9+
type: string
10+
next_codegen_snapshot_version:
11+
description: 'Next development version, for example 3.0.81-SNAPSHOT. Leave empty to increment codegen_version.'
12+
required: false
13+
type: string
14+
release_generators:
15+
description: 'Prepare for releasing swagger-codegen-generators with codegen'
16+
required: true
17+
default: 'false'
18+
type: choice
19+
options:
20+
- 'false'
21+
- 'true'
22+
generators_version:
23+
description: 'Generator release version when release_generators=true, for example 1.0.61'
24+
required: false
25+
type: string
26+
previous_generators_version:
27+
description: 'Optional bootstrap generator version for circular dependency validation'
28+
required: false
29+
type: string
30+
dry_run:
31+
description: 'Validate and build without publishing/releasing artifacts (PR is still created)'
32+
required: true
33+
default: 'true'
34+
type: choice
35+
options:
36+
- 'true'
37+
- 'false'
38+
39+
permissions:
40+
contents: write
41+
pull-requests: write
42+
43+
jobs:
44+
prepare:
45+
runs-on: ubuntu-latest
46+
env:
47+
MAVEN_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }}
48+
MAVEN_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }}
49+
CODEGEN_VERSION: ${{ inputs.codegen_version }}
50+
NEXT_CODEGEN_SNAPSHOT_VERSION: ${{ inputs.next_codegen_snapshot_version }}
51+
RELEASE_GENERATORS: ${{ inputs.release_generators }}
52+
GENERATORS_VERSION: ${{ inputs.generators_version }}
53+
PREVIOUS_GENERATORS_VERSION: ${{ inputs.previous_generators_version }}
54+
steps:
55+
- name: Checkout swagger-codegen 3.0.0
56+
uses: actions/checkout@v6
57+
with:
58+
ref: 3.0.0
59+
fetch-depth: 0
60+
61+
- uses: actions/create-github-app-token@v3
62+
id: generate-token
63+
with:
64+
app-id: ${{ secrets.APP_ID }}
65+
private-key: ${{ secrets.APP_PRIVATE_KEY }}
66+
67+
- name: Set up Java and Maven
68+
uses: actions/setup-java@v5
69+
with:
70+
java-version: '17'
71+
distribution: temurin
72+
server-id: central
73+
cache: maven
74+
overwrite-settings: false
75+
server-username: MAVEN_USERNAME
76+
server-password: MAVEN_PASSWORD
77+
78+
- name: Add Central Portal snapshot repository
79+
uses: s4u/maven-settings-action@v4.0.0
80+
with:
81+
repositories: '[{"id":"central-portal-snapshots","name":"Sonatype Central Portal snapshots","url":"https://central.sonatype.com/repository/maven-snapshots/","releases":{"enabled":false},"snapshots":{"enabled":true}}]'
82+
servers: '[{"id":"central","username":"${{ secrets.MAVEN_CENTRAL_USERNAME }}","password":"${{ secrets.MAVEN_CENTRAL_PASSWORD }}"}]'
83+
84+
- name: Resolve generators version for codegen-only release
85+
if: inputs.release_generators != 'true' && inputs.generators_version == ''
86+
run: |
87+
source CI/release/common.sh
88+
resolved_generators_version="$(latest_released_generators_version)"
89+
echo "GENERATORS_VERSION=${resolved_generators_version}" >> "${GITHUB_ENV}"
90+
echo "Using latest released swagger-codegen-generators ${resolved_generators_version}"
91+
92+
- name: Validate bootstrap generator snapshot
93+
if: inputs.previous_generators_version != ''
94+
run: |
95+
source CI/release/common.sh
96+
require_release_or_snapshot_version "previous_generators_version" "${PREVIOUS_GENERATORS_VERSION}"
97+
if [[ "${PREVIOUS_GENERATORS_VERSION}" =~ SNAPSHOT$ ]]; then
98+
assert_snapshot_metadata_exists "${GENERATORS_ARTIFACT}" "${PREVIOUS_GENERATORS_VERSION}"
99+
elif ! release_artifact_exists "${GENERATORS_ARTIFACT}" "${PREVIOUS_GENERATORS_VERSION}"; then
100+
fail "previous_generators_version ${PREVIOUS_GENERATORS_VERSION} does not exist in Maven Central"
101+
fi
102+
103+
- name: Prepare release file changes
104+
id: prepare-release
105+
run: bash CI/release/prepare-codegen-release.sh
106+
107+
- name: Build release candidate
108+
run: |
109+
mvn -B -U verify \
110+
-Dswagger-codegen-generators-version="${BUILD_GENERATORS_VERSION}" \
111+
-DJETTY_TEST_HTTP_PORT=8090 \
112+
-DJETTY_TEST_STOP_PORT=8089
113+
114+
- name: Print generator repo follow-up
115+
if: inputs.release_generators == 'true'
116+
run: |
117+
echo "::notice::Open a separate PR in swagger-api/swagger-codegen-generators master setting version ${GENERATORS_VERSION} and a usable swagger-codegen-version. This repository workflow does not push cross-repository generator changes."
118+
119+
- name: Create prepare release pull request
120+
uses: peter-evans/create-pull-request@v8
121+
with:
122+
token: ${{ steps.generate-token.outputs.token }}
123+
commit-message: prepare release ${{ steps.prepare-release.outputs.codegen_version }}
124+
title: prepare release ${{ steps.prepare-release.outputs.codegen_version }}
125+
branch: prepare-release-${{ steps.prepare-release.outputs.codegen_version }}
126+
base: 3.0.0
127+
body: |
128+
Prepare Swagger Codegen ${{ steps.prepare-release.outputs.codegen_version }}.
129+
130+
release_generators: ${{ inputs.release_generators }}
131+
swagger-codegen-generators version: ${{ steps.prepare-release.outputs.generators_version }}
132+
next codegen snapshot: ${{ steps.prepare-release.outputs.next_codegen_snapshot_version }}

0 commit comments

Comments
 (0)