Skip to content

Commit d43f3a5

Browse files
Repo tag test failure fix (#86)
* Use a git log command that works on git 1.8.x and 2.x * Use a git log command that works on git 1.8.x and 2.x * Use a git log command that works on git 1.8.x and 2.x * Use a git log command that works on git 1.8.x and 2.x * Use a git log command that works on git 1.8.x and 2.x * Add type check fixes. * Add type check fixes. * build fix * build fix * build fix * Add release tagging * Add release tagging Minor updates * Add release tagging * Add release tagging * Bandit checks * Git tagging fix * Git tagging fix * Git tagging fix * Make tagging work if ssh is setup by the screwdriver server setup. * Support the old package publish environment setting variable so old templates don't break. * Don't run the validation on centos 5 since it doesn't work. * Don't run the validation on centos 5 since it doesn't work. * Remove debug print * Don't override the package version * Display a message when changing the metadata in screwdriver. * - Make the release tagger use the Versioner class to get the metadata version so there aren't multiple implementations of the same thing. - Update the Versioner base class to allow specifying the meta command as an argument. To simplify writing tests.
1 parent 1094fb9 commit d43f3a5

4 files changed

Lines changed: 27 additions & 24 deletions

File tree

screwdriver.yaml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -64,11 +64,6 @@ jobs:
6464
template: python/validate_pypi_package
6565
environment:
6666
PYPI_INDEX_URL: https://test.pypi.org/simple
67-
steps:
68-
- update_version: |
69-
PACKAGE_VERSION="`meta get package.version`"
70-
echo $PACKAGE_VERSION
71-
- preend: meta set package.version "$PACKAGE_VERSION"
7267
requires: [publish_test_pypi]
7368

7469
publish_pypi:

src/screwdrivercd/repo/release.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
from ..changelog.generate import changelog_contents
1313
from ..utility.environment import env_bool
14+
from ..version.version_types import Version
1415

1516

1617
def create_release_tag(version: str, git_command: str='git', message: str=''):
@@ -50,12 +51,13 @@ def main(meta_command: str='meta') -> int:
5051
print('Tagging is disabled for this job')
5152
return 0
5253

53-
if not os.environ.get('GIT_DEPLOY_KEY', '') and not os.environ.get('SSH_AUTH_SOCK', ''):
54-
print('Git deployment key is not present, cannot commit tags to the git repo')
55-
return 0
54+
if not os.environ.get('SSH_AUTH_SOCK', ''): # If ssh-agent isn't already configured, we use the GIT_DEPLOY_KEY
55+
if not os.environ.get('GIT_DEPLOY_KEY', ''):
56+
print('Git deployment key is not present, cannot commit tags to the git repo')
57+
return 0
5658

57-
version = subprocess.check_output([meta_command, 'get', 'package.version']).decode(errors='ignore').strip() # nosec
58-
if version == 'null': # pragma: no cover
59+
version = Version(meta_command=meta_command).meta_version
60+
if not version: # pragma: no cover
5961
print('No release version in metadata', flush=True)
6062
return 0
6163

src/screwdrivercd/version/version_types.py

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,19 @@
1313
LOG = logging.getLogger(__name__)
1414

1515

16-
class Version:
16+
class Version():
1717
"""
1818
Base Screwdriver Versioning class
1919
"""
2020
name: Union[str, None] = None
2121
default_version: List[str] = ['0', '0', '0']
2222
setup_cfg_filename: str = 'setup.cfg'
23+
_meta_version: str = ''
2324

24-
def __init__(self, setup_cfg_filename=None, ignore_meta_version=False, update_sdv4_meta=True):
25+
def __init__(self, setup_cfg_filename=None, ignore_meta_version: bool=False, update_sdv4_meta: bool=True, meta_command: str='meta'):
2526
if setup_cfg_filename: # pragma: no cover
2627
self.setup_cfg_filename = setup_cfg_filename
28+
self.meta_command = meta_command
2729
self.ignore_meta_version = ignore_meta_version
2830
self.update_sdv4_meta = update_sdv4_meta
2931

@@ -89,9 +91,11 @@ def update_meta_version(self): # noqa
8991
"""
9092
if not self.meta_version: # pragma: no cover
9193
if not self.pull_request_number:
92-
self.meta_version = self.generated_version
94+
new_version = self.generated_version
9395
else: # pragma: no cover
94-
self.meta_version = f'{self.generated_version}a{self.pull_request_number}'
96+
new_version = f'{self.generated_version}a{self.pull_request_number}'
97+
print(f'Updating the screwdriver metadata: package.version={new_version}', flush=True)
98+
self.meta_version = new_version
9599

96100
@property
97101
def pull_request_number(self):
@@ -118,28 +122,31 @@ def generated_version(self):
118122
return '.'.join(self.generate())
119123

120124
@property
121-
def meta_version(self):
125+
def meta_version(self) -> str:
122126
"""
123127
The version from the screwdriver metadata package.version value or None if not present.
124128
"""
125129
if self.ignore_meta_version:
126-
return None
130+
return ''
131+
if self._meta_version:
132+
return self._meta_version
127133
try: # pragma: no cover
128-
version = subprocess.check_output(['meta', 'get', 'package.version']).decode(errors='ignore').strip() # nosec
129-
except FileNotFoundError: # pragma: no cover
130-
version = None
131-
if not version or version == 'null': # pragma: no cover
132-
version = None
133-
return version # pragma: no cover
134+
self._meta_version = subprocess.check_output([self.meta_command, 'get', 'package.version']).decode(errors='ignore').strip() # nosec
135+
except (FileNotFoundError, subprocess.CalledProcessError): # pragma: no cover
136+
pass
137+
if self._meta_version == 'null':
138+
self._meta_version = ''
139+
return self._meta_version # pragma: no cover
134140

135141
@meta_version.setter
136142
def meta_version(self, new_version):
137143
if not self.update_sdv4_meta: # pragma: no cover
138144
return
139145
try:
140-
subprocess.check_call(['meta', 'set', 'package.version', new_version]) # nosec
146+
subprocess.check_call([self.meta_command, 'set', 'package.version', new_version]) # nosec
141147
except FileNotFoundError: # pragma: no cover
142148
LOG.warning('The screwdriver meta command is missing, unable to set version in screwdriver metadata')
149+
self._meta_version = new_version
143150

144151
@property
145152
def version(self):

tests/test_repo.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,6 @@ def test__release__main__package_tag__disabled(self):
9090
def test__release__main__git_deploy_key__missing(self):
9191
os.environ['PUBLISH'] = 'True'
9292
os.environ['PACKAGE_TAG'] = 'True'
93-
os.environ['GIT_DEPLOY_KEY'] = ''
9493
result = release_main()
9594
self.assertEqual(result, 0)
9695

0 commit comments

Comments
 (0)