Repository navigation
137 lines (124 loc) · 5.86 KB
/
Copy pathprepare-release-3.yml
File metadata and controls
137 lines (124 loc) · 5.86 KB
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
name: Prepare Release 3.0
# Manual pre-release workflow for creating the prepare PR on branch 3.0.0.
on:
workflow_dispatch:
inputs:
codegen_version:
description: 'Release version, for example 3.0.80. Leave empty to derive from current SNAPSHOT.'
required: false
type: string
next_codegen_snapshot_version:
description: 'Next development version, for example 3.0.81-SNAPSHOT. Leave empty to increment codegen_version.'
required: false
type: string
release_generators:
description: 'Prepare for releasing swagger-codegen-generators with codegen'
required: true
default: 'false'
type: choice
options:
- 'false'
- 'true'
generators_version:
description: 'Generator release version when release_generators=true, for example 1.0.61'
required: false
type: string
previous_generators_version:
description: 'Optional bootstrap generator version for circular dependency validation'
required: false
type: string
permissions:
contents: write
pull-requests: write
jobs:
validate-branch:
if: github.ref_name != '3.0.0'
runs-on: ubuntu-latest
steps:
- name: Require 3.0.0 branch
run: |
echo "This workflow can run only from branch 3.0.0 (current: ${GITHUB_REF_NAME})."
exit 1
prepare:
# Resolves release versions, applies file updates, validates build, then opens PR.
if: github.ref_name == '3.0.0'
runs-on: ubuntu-latest
env:
CODEGEN_VERSION: ${{ inputs.codegen_version }}
NEXT_CODEGEN_SNAPSHOT_VERSION: ${{ inputs.next_codegen_snapshot_version }}
RELEASE_GENERATORS: ${{ inputs.release_generators }}
GENERATORS_VERSION: ${{ inputs.generators_version }}
PREVIOUS_GENERATORS_VERSION: ${{ inputs.previous_generators_version }}
steps:
- name: Checkout swagger-codegen 3.0.0
uses: actions/checkout@v6
with:
ref: 3.0.0
fetch-depth: 0
- uses: actions/create-github-app-token@v3
id: generate-token
with:
app-id: ${{ secrets.APP_ID }}
private-key: ${{ secrets.APP_PRIVATE_KEY }}
- name: Set up Java and Maven
uses: actions/setup-java@v5
with:
java-version: '17'
distribution: temurin
cache: maven
- name: Add Central Portal snapshot repository
uses: s4u/maven-settings-action@v4.0.0
with:
repositories: '[{"id":"central-portal-snapshots","name":"Sonatype Central Portal snapshots","url":"https://central.sonatype.com/repository/maven-snapshots/","releases":{"enabled":false},"snapshots":{"enabled":true}}]'
servers: '[{"id":"central","username":"${{ secrets.MAVEN_CENTRAL_USERNAME }}","password":"${{ secrets.MAVEN_CENTRAL_PASSWORD }}"}]'
- name: Validate bootstrap generator snapshot
if: inputs.previous_generators_version != ''
run: |
# Optional safeguard for circular dependency bootstrap inputs.
source CI/release/common.sh
require_release_or_snapshot_version "previous_generators_version" "${PREVIOUS_GENERATORS_VERSION}"
if [[ "${PREVIOUS_GENERATORS_VERSION}" =~ SNAPSHOT$ ]]; then
assert_snapshot_metadata_exists "${GENERATORS_ARTIFACT}" "${PREVIOUS_GENERATORS_VERSION}"
elif ! release_artifact_exists "${GENERATORS_ARTIFACT}" "${PREVIOUS_GENERATORS_VERSION}"; then
fail "previous_generators_version ${PREVIOUS_GENERATORS_VERSION} does not exist in Maven Central"
fi
- name: Prepare release file changes
id: prepare-release
# Performs version bump to release and updates docs/poms/openapi.
run: bash CI/release/prepare-codegen-release.sh
- name: Create or update draft GitHub release
uses: ncipollo/release-action@v1
with:
allowUpdates: true
bodyFile: ${{ steps.prepare-release.outputs.release_notes_file }}
commit: 3.0.0
draft: true
name: v${{ steps.prepare-release.outputs.codegen_version }}
tag: v${{ steps.prepare-release.outputs.codegen_version }}
token: ${{ steps.generate-token.outputs.token }}
- name: Build release candidate
# Build with the resolved generators version to catch dependency issues early.
run: |
mvn -B -U clean install -Pdocker \
-Dswagger-codegen-generators-version="${BUILD_GENERATORS_VERSION}" \
-DJETTY_TEST_HTTP_PORT=8090 \
-DJETTY_TEST_STOP_PORT=8089
- name: Print generator repo follow-up
if: inputs.release_generators == 'true'
run: |
# Generators repo changes are intentionally handled in a separate repository PR.
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."
- name: Create prepare release pull request
# Opens PR with all prepare-release changes targeting 3.0.0.
uses: peter-evans/create-pull-request@v8
with:
token: ${{ steps.generate-token.outputs.token }}
commit-message: prepare release ${{ steps.prepare-release.outputs.codegen_version }}
title: prepare release ${{ steps.prepare-release.outputs.codegen_version }}
branch: prepare-release-${{ steps.prepare-release.outputs.codegen_version }}
base: 3.0.0
body: |
Prepare Swagger Codegen ${{ steps.prepare-release.outputs.codegen_version }}.
release_generators: ${{ inputs.release_generators }}
swagger-codegen-generators version: ${{ steps.prepare-release.outputs.generators_version }}
next codegen snapshot: ${{ steps.prepare-release.outputs.next_codegen_snapshot_version }}