Skip to content

Commit d057fb5

Browse files
LLC, script, bug fix on set version in version_client.txt (Azure#26044)
1 parent 189bd8c commit d057fb5

File tree

4 files changed

+124
-137
lines changed

4 files changed

+124
-137
lines changed

eng/mgmt/automation/changelog.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,10 @@
77
pwd = os.getcwd()
88
os.chdir(os.path.abspath(os.path.dirname(sys.argv[0])))
99
from parameters import *
10-
import generate
10+
from generate import update_parameters
11+
from generate import get_version
12+
from generate import compile_package
13+
from generate import compare_with_maven_package
1114
os.chdir(pwd)
1215

1316

@@ -24,16 +27,15 @@ def main():
2427
sdk_root = os.path.abspath(
2528
os.path.join(os.path.dirname(sys.argv[0]), SDK_ROOT))
2629
service = args['service']
27-
generate.update_parameters(args.get('suffix'))
30+
update_parameters(args.get('suffix'))
2831

2932
if args.get('compile'):
30-
generate.compile_package(sdk_root, service)
33+
compile_package(sdk_root, service)
3134

32-
versions = generate.get_version(sdk_root, service).split(';')
35+
versions = get_version(sdk_root, service).split(';')
3336
stable_version = versions[1]
3437
current_version = versions[2]
35-
generate.compare_with_maven_package(sdk_root, service, stable_version,
36-
current_version)
38+
compare_with_maven_package(sdk_root, service, stable_version, current_version)
3739

3840

3941
if __name__ == "__main__":
@@ -42,4 +44,4 @@ def main():
4244
format = '%(asctime)s %(levelname)s %(message)s',
4345
datefmt = '%Y-%m-%d %X',
4446
)
45-
main()
47+
main()

eng/mgmt/automation/generate.py

Lines changed: 7 additions & 128 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
pwd = os.getcwd()
1818
os.chdir(os.path.abspath(os.path.dirname(sys.argv[0])))
1919
from parameters import *
20+
from utils import set_or_increase_version
2021
from utils import update_service_ci_and_pom
2122
from utils import update_root_pom
2223
from utils import update_version
@@ -81,7 +82,7 @@ def generate(
8182
module = ARTIFACT_FORMAT.format(service)
8283
group = GROUP_ID
8384
output_folder = OUTPUT_FOLDER_FORMAT.format(service)
84-
update_service_ci_and_pom(sdk_root, group, service, module)
85+
update_service_ci_and_pom(sdk_root, service, group, module)
8586
update_root_pom(sdk_root, service)
8687
update_version(sdk_root, output_folder)
8788

@@ -214,131 +215,6 @@ def get_version(
214215
return None
215216

216217

217-
def update_version(sdk_root: str, service: str):
218-
pwd = os.getcwd()
219-
try:
220-
os.chdir(sdk_root)
221-
print(os.getcwd())
222-
subprocess.run(
223-
'python3 eng/versioning/update_versions.py --ut library --bt client --sr',
224-
stdout = subprocess.DEVNULL,
225-
stderr = sys.stderr,
226-
shell = True,
227-
)
228-
subprocess.run(
229-
'python3 eng/versioning/update_versions.py --ut library --bt client --tf {0}/README.md'
230-
.format(OUTPUT_FOLDER_FORMAT.format(service)),
231-
stdout = subprocess.DEVNULL,
232-
stderr = sys.stderr,
233-
shell = True,
234-
)
235-
finally:
236-
os.chdir(pwd)
237-
238-
239-
def write_version(
240-
version_file: str,
241-
lines: list,
242-
index: int,
243-
project: str,
244-
stable_version: str,
245-
current_version: str,
246-
):
247-
lines[index] = '{0};{1};{2}'.format(project, stable_version,
248-
current_version)
249-
with open(version_file, 'w') as fout:
250-
fout.write('\n'.join(lines))
251-
fout.write('\n')
252-
253-
254-
def set_or_increase_version(
255-
sdk_root: str,
256-
service: str,
257-
preview = True,
258-
version = None,
259-
**kwargs,
260-
) -> Tuple[str, str]:
261-
version_file = os.path.join(sdk_root, 'eng/versioning/version_client.txt')
262-
module = ARTIFACT_FORMAT.format(service)
263-
project = '{0}:{1}'.format(GROUP_ID, module)
264-
version_pattern = '(\d+)\.(\d+)\.(\d+)(-beta\.\d+)?'
265-
version_format = '{0}.{1}.{2}{3}'
266-
default_version = version if version else DEFAULT_VERSION
267-
268-
with open(version_file, 'r') as fin:
269-
lines = fin.read().splitlines()
270-
version_index = -1
271-
for i, version_line in enumerate(lines):
272-
version_line = version_line.strip()
273-
if version_line.startswith('#'):
274-
continue
275-
versions = version_line.split(';')
276-
if versions[0] == project:
277-
if len(versions) != 3:
278-
logging.error(
279-
'[VERSION][Fallback] Unexpected version format "{0}"'.
280-
format(version_line))
281-
stable_version = ''
282-
current_version = default_version
283-
else:
284-
logging.info(
285-
'[VERSION][Found] current version "{0}"'.format(
286-
version_line))
287-
stable_version = versions[1]
288-
current_version = versions[2]
289-
version_index = i
290-
break
291-
else:
292-
logging.info(
293-
'[VERSION][Not Found] cannot find version for "{0}"'.format(
294-
project))
295-
for i, version_line in enumerate(lines):
296-
if version_line.startswith('{0}:'.format(GROUP_ID)):
297-
version_index = i + 1
298-
lines = lines[:version_index] + [''] + lines[version_index:]
299-
stable_version = ''
300-
current_version = default_version
301-
302-
# version is given, set and return
303-
if version:
304-
if not stable_version:
305-
stable_version = version
306-
logging.info(
307-
'[VERSION][Set] set to given version "{0}"'.format(version))
308-
write_version(version_file, lines, version_index, project,
309-
stable_version, version)
310-
return stable_version, version
311-
312-
current_versions = list(re.findall(version_pattern, current_version)[0])
313-
stable_versions = re.findall(version_pattern, stable_version)
314-
# no stable version
315-
if len(stable_versions) < 1 or stable_versions[0][-1] != '':
316-
if not preview:
317-
current_versions[-1] = ''
318-
current_version = version_format.format(*current_versions)
319-
if not stable_version:
320-
stable_version = current_version
321-
logging.info(
322-
'[VERSION][Not Found] cannot find stable version, current version "{0}"'
323-
.format(current_version))
324-
325-
write_version(version_file, lines, version_index, project,
326-
stable_version, current_version)
327-
else:
328-
# TODO: auto-increase for stable version and beta version if possible
329-
current_version = version_format.format(*current_versions)
330-
if not stable_version:
331-
stable_version = current_version
332-
logging.warning(
333-
'[VERSION][Not Implement] set to current version "{0}" by default'.
334-
format(current_version))
335-
336-
write_version(version_file, lines, version_index, project,
337-
stable_version, current_version)
338-
339-
return stable_version, current_version
340-
341-
342218
def parse_args() -> argparse.Namespace:
343219
parser = argparse.ArgumentParser()
344220
parser.add_argument(
@@ -513,9 +389,11 @@ def sdk_automation(input_file: str, output_file: str):
513389
else:
514390
tag = 'package-resources-2020-10'
515391

392+
module = ARTIFACT_FORMAT.format(service)
516393
stable_version, current_version = set_or_increase_version(
517394
sdk_root,
518-
service,
395+
GROUP_ID,
396+
module
519397
)
520398
succeeded = generate(
521399
sdk_root,
@@ -595,7 +473,8 @@ def main():
595473
service = get_and_update_service_from_api_specs(api_specs_file, spec,
596474
args['service'])
597475
args['service'] = service
598-
stable_version, current_version = set_or_increase_version(sdk_root, **args)
476+
module = ARTIFACT_FORMAT.format(service)
477+
stable_version, current_version = set_or_increase_version(sdk_root, GROUP_ID, module, **args)
599478
args['version'] = current_version
600479
generate(sdk_root, **args)
601480

eng/mgmt/automation/generate_data.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from typing import List
1010

1111
from parameters import *
12+
from utils import set_or_increase_version
1213
from utils import update_service_ci_and_pom
1314
from utils import update_root_pom
1415
from utils import update_version
@@ -117,7 +118,8 @@ def generate(
117118
return False
118119

119120
group = "com.azure"
120-
update_service_ci_and_pom(sdk_root, group, service, module)
121+
set_or_increase_version(sdk_root, group, module)
122+
update_service_ci_and_pom(sdk_root, service, group, module)
121123
update_root_pom(sdk_root, service)
122124
update_version(sdk_root, output_dir)
123125

eng/mgmt/automation/utils.py

Lines changed: 105 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from parameters import CI_FORMAT
1111
from parameters import POM_FORMAT
1212
from parameters import POM_MODULE_FORMAT
13+
from parameters import DEFAULT_VERSION
1314

1415

1516
# Add two more indent for list in yaml dump
@@ -98,7 +99,7 @@ def update_root_pom(sdk_root: str, service: str):
9899
logging.info('[POM][Success] Write to root pom')
99100

100101

101-
def update_service_ci_and_pom(sdk_root: str, group: str, service: str, module: str):
102+
def update_service_ci_and_pom(sdk_root: str, service: str, group: str, module: str):
102103
folder = os.path.join(sdk_root, 'sdk/{0}'.format(service))
103104
ci_yml_file = os.path.join(folder, 'ci.yml')
104105
pom_xml_file = os.path.join(folder, 'pom.xml')
@@ -177,3 +178,106 @@ def update_version(sdk_root: str, output_folder: str):
177178
)
178179
finally:
179180
os.chdir(pwd)
181+
182+
183+
def write_version(
184+
version_file: str,
185+
lines: list,
186+
index: int,
187+
project: str,
188+
stable_version: str,
189+
current_version: str,
190+
):
191+
lines[index] = '{0};{1};{2}'.format(project, stable_version,
192+
current_version)
193+
with open(version_file, 'w') as fout:
194+
fout.write('\n'.join(lines))
195+
fout.write('\n')
196+
197+
198+
def set_or_increase_version(
199+
sdk_root: str,
200+
group: str,
201+
module: str,
202+
preview=True,
203+
version=None,
204+
**kwargs,
205+
) -> Tuple[str, str]:
206+
version_file = os.path.join(sdk_root, 'eng/versioning/version_client.txt')
207+
project = '{0}:{1}'.format(group, module)
208+
version_pattern = '(\d+)\.(\d+)\.(\d+)(-beta\.\d+)?'
209+
version_format = '{0}.{1}.{2}{3}'
210+
default_version = version if version else DEFAULT_VERSION
211+
212+
with open(version_file, 'r') as fin:
213+
lines = fin.read().splitlines()
214+
version_index = -1
215+
for i, version_line in enumerate(lines):
216+
version_line = version_line.strip()
217+
if version_line.startswith('#'):
218+
continue
219+
versions = version_line.split(';')
220+
if versions[0] == project:
221+
if len(versions) != 3:
222+
logging.error(
223+
'[VERSION][Fallback] Unexpected version format "{0}"'.
224+
format(version_line))
225+
stable_version = ''
226+
current_version = default_version
227+
else:
228+
logging.info(
229+
'[VERSION][Found] current version "{0}"'.format(
230+
version_line))
231+
stable_version = versions[1]
232+
current_version = versions[2]
233+
version_index = i
234+
break
235+
else:
236+
logging.info(
237+
'[VERSION][Not Found] cannot find version for "{0}"'.format(
238+
project))
239+
for i, version_line in enumerate(lines):
240+
if version_line.startswith('{0}:'.format(group)):
241+
version_index = i + 1
242+
lines = lines[:version_index] + [''] + lines[version_index:]
243+
stable_version = ''
244+
current_version = default_version
245+
246+
# version is given, set and return
247+
if version:
248+
if not stable_version:
249+
stable_version = version
250+
logging.info(
251+
'[VERSION][Set] set to given version "{0}"'.format(version))
252+
write_version(version_file, lines, version_index, project,
253+
stable_version, version)
254+
return stable_version, version
255+
256+
current_versions = list(re.findall(version_pattern, current_version)[0])
257+
stable_versions = re.findall(version_pattern, stable_version)
258+
# no stable version
259+
if len(stable_versions) < 1 or stable_versions[0][-1] != '':
260+
if not preview:
261+
current_versions[-1] = ''
262+
current_version = version_format.format(*current_versions)
263+
if not stable_version:
264+
stable_version = current_version
265+
logging.info(
266+
'[VERSION][Not Found] cannot find stable version, current version "{0}"'
267+
.format(current_version))
268+
269+
write_version(version_file, lines, version_index, project,
270+
stable_version, current_version)
271+
else:
272+
# TODO: auto-increase for stable version and beta version if possible
273+
current_version = version_format.format(*current_versions)
274+
if not stable_version:
275+
stable_version = current_version
276+
logging.warning(
277+
'[VERSION][Not Implement] set to current version "{0}" by default'.
278+
format(current_version))
279+
280+
write_version(version_file, lines, version_index, project,
281+
stable_version, current_version)
282+
283+
return stable_version, current_version

0 commit comments

Comments
 (0)