-
Notifications
You must be signed in to change notification settings - Fork 2.2k
Expand file tree
/
Copy pathtest-spring-boot-rc-version.yml
More file actions
152 lines (144 loc) · 6.68 KB
/
Copy pathtest-spring-boot-rc-version.yml
File metadata and controls
152 lines (144 loc) · 6.68 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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
name: Test Spring Boot RC Version
on:
workflow_dispatch:
inputs:
base_branch:
description: 'Base branch for update branch and PR target. Defaults to trigger branch.'
required: false
type: string
env:
BASE_BRANCH: ${{ github.event.inputs.base_branch || github.ref_name }}
permissions:
contents: write
pull-requests: write
issues: write
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Generate Version File
run: |
python ./sdk/spring/scripts/generate_spring_versions_and_pr_description.py
- name: Generate Spring Cloud Azure Support File
run: |
python ./sdk/spring/scripts/generate_spring_cloud_azure_support_file.py --include-rc
- name: Confirm Whether to Update
run: |
if [[ ! -f 'spring-versions.txt' ]]; then
echo "No new Spring Boot version, no updates!"
elif grep -q -- "-RC" spring-versions.txt; then
echo "Has RC version, create PR to test!"
mapfile -t versions < spring-versions.txt
{
echo "need_update_version=true"
printf 'update_branch=update-spring-dependencies-%s-%s\n' "$(date +%Y%m%d)" "${GITHUB_RUN_ID}"
printf 'spring_boot_version=%s\n' "${versions[0]}"
printf 'spring_cloud_version=%s\n' "${versions[1]}"
printf 'pr_descriptions=%s\n' "$(<pr-descriptions.txt)"
printf 'PR_TITLE=Test Spring Boot RC version %s and Spring Cloud %s\n' "${versions[0]}" "${versions[1]}"
} >> "$GITHUB_ENV"
else
echo "No RC version, cancel update!"
fi
- name: Generate spring_boot_managed_external_dependencies.txt
if: ${{ env.need_update_version == 'true' }}
run: |
echo "Updating Spring Boot Dependencies Version: ${{ env.spring_boot_version }}"
echo "Updating Spring Cloud Dependencies Version: ${{ env.spring_cloud_version }}"
git fetch origin "${{ env.BASE_BRANCH }}"
git checkout -B "${{ env.update_branch }}" "origin/${{ env.BASE_BRANCH }}"
pip install termcolor
python ./sdk/spring/scripts/get_spring_boot_managed_external_dependencies.py -b "${{ env.spring_boot_version }}" -c "${{ env.spring_cloud_version }}"
- name: Update external_dependencies.txt
if: ${{ env.need_update_version == 'true' }}
run: |
pip install termcolor
pip install in_place
python ./sdk/spring/scripts/sync_external_dependencies.py -b "${{ env.spring_boot_version }}" -sbmvn 4
- name: Update Versions
if: ${{ env.need_update_version == 'true' }}
run: |
python ./eng/versioning/update_versions.py --sr
- name: Update ChangeLog
if: ${{ env.need_update_version == 'true' }}
run: |
python ./sdk/spring/scripts/update_changelog.py -b "${{ env.spring_boot_version }}" -c "${{ env.spring_cloud_version }}"
- name: Push Commit
if: ${{ env.need_update_version == 'true' }}
run: |
git config --global user.email github-actions@github.com
git config --global user.name github-actions
git add -A
git commit -m "Upgrade external dependencies to align with Spring Boot ${{ env.spring_boot_version }}"
python - <<'PY'
import json
from pathlib import Path
spring_boot_version = "${{ env.spring_boot_version }}"
spring_cloud_version = "${{ env.spring_cloud_version }}"
placeholder = "NONE_SUPPORTED_SPRING_CLOUD_VERSION"
matrix_path = Path("./sdk/spring/pipeline/spring-cloud-azure-supported-spring.json")
with matrix_path.open("r", encoding="utf-8") as f:
entries = json.load(f)
updated = False
for entry in entries:
if (
entry.get("spring-boot-version") == spring_boot_version
and entry.get("spring-cloud-version") == placeholder
):
entry["spring-cloud-version"] = spring_cloud_version
updated = True
break
if not updated:
raise SystemExit(
"Did not find RC support-matrix entry for "
f"spring-boot-version={spring_boot_version} with placeholder cloud version"
)
with matrix_path.open("w", encoding="utf-8") as f:
json.dump(entries, f, indent=2)
f.write("\n")
PY
git add ./sdk/spring/pipeline/spring-cloud-azure-supported-spring.json
git commit -m "Upgrade spring-cloud-azure-supported-spring"
git push origin "HEAD:${{ env.update_branch }}"
- name: Create Pull Request
id: create_pr
if: ${{ env.need_update_version == 'true' }}
uses: actions/github-script@v7
with:
script: |
const body = [
`Test Spring Boot RC version [${process.env.spring_boot_version}](https://repo1.maven.org/maven2/org/springframework/boot/spring-boot-dependencies/${process.env.spring_boot_version}/spring-boot-dependencies-${process.env.spring_boot_version}.pom) and Spring Cloud version [${process.env.spring_cloud_version}](https://repo1.maven.org/maven2/org/springframework/cloud/spring-cloud-dependencies/${process.env.spring_cloud_version}/spring-cloud-dependencies-${process.env.spring_cloud_version}.pom).`,
process.env.pr_descriptions || '',
'',
`This PR is created by GitHub Actions: https://github.com/${context.repo.owner}/${context.repo.repo}/actions/runs/${process.env.GITHUB_RUN_ID}`
].join('\n');
const pr = await github.rest.pulls.create({
owner: context.repo.owner,
repo: context.repo.repo,
title: process.env.PR_TITLE,
head: process.env.update_branch,
base: process.env.BASE_BRANCH,
body,
draft: true
});
core.setOutput('pull_request_number', String(pr.data.number));
- name: Comment on Pull Request
if: ${{ env.need_update_version == 'true' }}
uses: actions/github-script@v7
with:
script: |
const prNumber = Number('${{ steps.create_pr.outputs.pull_request_number }}');
if (!prNumber) {
console.log('No pull request was created, nothing to comment on.');
return;
}
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: prNumber,
body: '/azp run java - spring - tests'
});