Make sure -em tag is on last release
We don't want to allow tagging EM if there were no releases. We also want to make sure the -em tag is on the last official release that was done. Change-Id: I7afb3a52cf2ec47d8e0154b51825b500806aa590 Signed-off-by: Sean McGinnis <sean.mcginnis@gmail.com>
This commit is contained in:
parent
4ed0d612f0
commit
05f5aed7fa
@ -430,7 +430,7 @@ def validate_series_eol(deliv, context):
|
|||||||
@skip_existing_tags
|
@skip_existing_tags
|
||||||
@applies_to_released
|
@applies_to_released
|
||||||
def validate_series_em(deliv, context):
|
def validate_series_em(deliv, context):
|
||||||
"The EM tag should be applied to the previous release."
|
"""The EM tag should be applied to the previous release."""
|
||||||
|
|
||||||
current_release = deliv.releases[-1]
|
current_release = deliv.releases[-1]
|
||||||
|
|
||||||
@ -439,6 +439,13 @@ def validate_series_em(deliv, context):
|
|||||||
'a series as extended-maintenance')
|
'a series as extended-maintenance')
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if len(deliv.releases) == 1:
|
||||||
|
context.error('at least one release will have to been done to '
|
||||||
|
'mark as extended-maintenance')
|
||||||
|
print('This deliverable may need to be cleaned up if a '
|
||||||
|
'release was not actually done for the series.')
|
||||||
|
return
|
||||||
|
|
||||||
_require_tag_on_all_repos(
|
_require_tag_on_all_repos(
|
||||||
deliv,
|
deliv,
|
||||||
current_release,
|
current_release,
|
||||||
@ -446,6 +453,23 @@ def validate_series_em(deliv, context):
|
|||||||
context,
|
context,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Make sure we are taking the last release
|
||||||
|
previous_release = deliv.releases[-2]
|
||||||
|
for project in deliv.known_repo_names:
|
||||||
|
current_proj = current_release.project(project)
|
||||||
|
previous_proj = previous_release.project(project)
|
||||||
|
|
||||||
|
if current_proj is None or previous_proj is None:
|
||||||
|
# Error will be picked up above
|
||||||
|
continue
|
||||||
|
|
||||||
|
current_hash = current_proj.hash
|
||||||
|
previous_hash = previous_proj.hash
|
||||||
|
if current_hash != previous_hash:
|
||||||
|
context.error('EM tag must match the last release, tagging '
|
||||||
|
'%s, last release %s' %
|
||||||
|
(current_hash, previous_hash))
|
||||||
|
|
||||||
|
|
||||||
@skip_em_eol_tags
|
@skip_em_eol_tags
|
||||||
def validate_bugtracker(deliv, context):
|
def validate_bugtracker(deliv, context):
|
||||||
|
@ -300,6 +300,11 @@ class Release(object):
|
|||||||
def projects(self):
|
def projects(self):
|
||||||
return sorted(self._projects.values())
|
return sorted(self._projects.values())
|
||||||
|
|
||||||
|
def project(self, repo):
|
||||||
|
if repo in self._projects:
|
||||||
|
return self._projects[repo]
|
||||||
|
return None
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def diff_start(self):
|
def diff_start(self):
|
||||||
return self._data.get('diff-start')
|
return self._data.get('diff-start')
|
||||||
|
@ -3258,6 +3258,10 @@ class TestValidateSeriesEM(base.BaseTestCase):
|
|||||||
---
|
---
|
||||||
team: Release Management
|
team: Release Management
|
||||||
releases:
|
releases:
|
||||||
|
- version: 1.2.3
|
||||||
|
projects:
|
||||||
|
- repo: openstack/automaton
|
||||||
|
hash: be2885f544637e6ee6139df7dc7bf937925804dd
|
||||||
- version: newton-em
|
- version: newton-em
|
||||||
projects:
|
projects:
|
||||||
- repo: openstack/automaton
|
- repo: openstack/automaton
|
||||||
@ -3277,15 +3281,111 @@ class TestValidateSeriesEM(base.BaseTestCase):
|
|||||||
self.assertEqual(0, len(self.ctx.warnings))
|
self.assertEqual(0, len(self.ctx.warnings))
|
||||||
self.assertEqual(0, len(self.ctx.errors))
|
self.assertEqual(0, len(self.ctx.errors))
|
||||||
|
|
||||||
|
def test_em_no_releases(self):
|
||||||
|
deliverable_data = yamlutils.loads(textwrap.dedent('''
|
||||||
|
---
|
||||||
|
team: Release Management
|
||||||
|
releases:
|
||||||
|
- version: newton-em
|
||||||
|
projects:
|
||||||
|
- repo: openstack/automaton
|
||||||
|
hash: be2885f544637e6ee6139df7dc7bf937925804dd
|
||||||
|
'''))
|
||||||
|
deliv = deliverable.Deliverable(
|
||||||
|
None,
|
||||||
|
'newton',
|
||||||
|
'test',
|
||||||
|
deliverable_data,
|
||||||
|
)
|
||||||
|
validate.validate_series_em(
|
||||||
|
deliv,
|
||||||
|
self.ctx,
|
||||||
|
)
|
||||||
|
self.ctx.show_summary()
|
||||||
|
self.assertEqual(0, len(self.ctx.warnings))
|
||||||
|
self.assertEqual(1, len(self.ctx.errors))
|
||||||
|
|
||||||
|
def test_em_not_matching_last_release(self):
|
||||||
|
deliverable_data = yamlutils.loads(textwrap.dedent('''
|
||||||
|
---
|
||||||
|
team: Release Management
|
||||||
|
releases:
|
||||||
|
- version: 1.2.3
|
||||||
|
projects:
|
||||||
|
- repo: openstack/automaton
|
||||||
|
hash: be2885f544637e6ee6139df7dc7bf937925804dd
|
||||||
|
- version: 1.2.4
|
||||||
|
projects:
|
||||||
|
- repo: openstack/automaton
|
||||||
|
hash: beef85f544637e6ee6139df7dc7bf937925804dd
|
||||||
|
- version: newton-em
|
||||||
|
projects:
|
||||||
|
- repo: openstack/automaton
|
||||||
|
hash: be2885f544637e6ee6139df7dc7bf937925804dd
|
||||||
|
repository-settings:
|
||||||
|
openstack/automaton: {}
|
||||||
|
'''))
|
||||||
|
deliv = deliverable.Deliverable(
|
||||||
|
None,
|
||||||
|
'newton',
|
||||||
|
'test',
|
||||||
|
deliverable_data,
|
||||||
|
)
|
||||||
|
validate.validate_series_em(
|
||||||
|
deliv,
|
||||||
|
self.ctx,
|
||||||
|
)
|
||||||
|
self.ctx.show_summary()
|
||||||
|
self.assertEqual(0, len(self.ctx.warnings))
|
||||||
|
self.assertEqual(1, len(self.ctx.errors))
|
||||||
|
|
||||||
|
def test_em_matches_last_release(self):
|
||||||
|
deliverable_data = yamlutils.loads(textwrap.dedent('''
|
||||||
|
---
|
||||||
|
team: Release Management
|
||||||
|
releases:
|
||||||
|
- version: 1.2.3
|
||||||
|
projects:
|
||||||
|
- repo: openstack/automaton
|
||||||
|
hash: be2885f544637e6ee6139df7dc7bf937925804dd
|
||||||
|
- version: 1.2.4
|
||||||
|
projects:
|
||||||
|
- repo: openstack/automaton
|
||||||
|
hash: beef85f544637e6ee6139df7dc7bf937925804dd
|
||||||
|
- version: newton-em
|
||||||
|
projects:
|
||||||
|
- repo: openstack/automaton
|
||||||
|
hash: beef85f544637e6ee6139df7dc7bf937925804dd
|
||||||
|
repository-settings:
|
||||||
|
openstack/automaton: {}
|
||||||
|
'''))
|
||||||
|
deliv = deliverable.Deliverable(
|
||||||
|
None,
|
||||||
|
'newton',
|
||||||
|
'test',
|
||||||
|
deliverable_data,
|
||||||
|
)
|
||||||
|
validate.validate_series_em(
|
||||||
|
deliv,
|
||||||
|
self.ctx,
|
||||||
|
)
|
||||||
|
self.ctx.show_summary()
|
||||||
|
self.assertEqual(0, len(self.ctx.warnings))
|
||||||
|
self.assertEqual(0, len(self.ctx.errors))
|
||||||
|
|
||||||
def test_em_missing_repo(self):
|
def test_em_missing_repo(self):
|
||||||
deliverable_data = yamlutils.loads(textwrap.dedent('''
|
deliverable_data = yamlutils.loads(textwrap.dedent('''
|
||||||
---
|
---
|
||||||
team: Release Management
|
team: Release Management
|
||||||
releases:
|
releases:
|
||||||
|
- version: 1.2.3
|
||||||
|
projects:
|
||||||
|
- repo: openstack/automaton
|
||||||
|
hash: be2885f544637e6ee6139df7dc7bf937925804dd
|
||||||
- version: newton-em
|
- version: newton-em
|
||||||
projects:
|
projects:
|
||||||
- repo: openstack/automaton
|
- repo: openstack/automaton
|
||||||
hash: ce2885f544637e6ee6139df7dc7bf937925804dd
|
hash: be2885f544637e6ee6139df7dc7bf937925804dd
|
||||||
repository-settings:
|
repository-settings:
|
||||||
openstack/automaton: {}
|
openstack/automaton: {}
|
||||||
openstack/release-test: {}
|
openstack/release-test: {}
|
||||||
|
Loading…
Reference in New Issue
Block a user