Skip to content

Commit

Permalink
[BCIRepoPublisher] trigger a rebuild of devel:BCI:SLE-15-SPX as well
Browse files Browse the repository at this point in the history
  • Loading branch information
dcermak committed Oct 25, 2023
1 parent fc5b24c commit a42d180
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 12 deletions.
8 changes: 4 additions & 4 deletions gocd/bci.gocd.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ pipelines:
tasks:
- script: |
export PYTHONPATH=scripts
./scripts/gocd/bci_repo_publish.py -A https://api.suse.de --verbose --debug run "--token=$BCI_TOKEN" 15-SP3
./scripts/gocd/bci_repo_publish.py -A https://api.suse.de --verbose --debug run "--repo-token=$BCI_TOKEN" "--rebuild-token=$DEVEL_BCI_REBUILD_TOKEN" 15-SP3
SLE_BCI_15SP4.RelPkgs:
group: BCI
Expand Down Expand Up @@ -256,7 +256,7 @@ pipelines:
tasks:
- script: |
export PYTHONPATH=scripts
./scripts/gocd/bci_repo_publish.py -A https://api.suse.de --verbose --debug run "--token=$BCI_TOKEN" 15-SP4
./scripts/gocd/bci_repo_publish.py -A https://api.suse.de --verbose --debug run "--repo-token=$BCI_TOKEN" "--rebuild-token=$DEVEL_BCI_REBUILD_TOKEN" 15-SP4
SLE_BCI_15SP5.RelPkgs:
group: BCI
Expand Down Expand Up @@ -364,7 +364,7 @@ pipelines:
tasks:
- script: |
export PYTHONPATH=scripts
./scripts/gocd/bci_repo_publish.py -A https://api.suse.de --verbose --debug run "--token=$BCI_TOKEN" 15-SP5
./scripts/gocd/bci_repo_publish.py -A https://api.suse.de --verbose --debug run "--repo-token=$BCI_TOKEN" "--rebuild-token=$DEVEL_BCI_REBUILD_TOKEN" 15-SP5
SLE_BCI_15SP6.RelPkgs:
group: BCI
Expand Down Expand Up @@ -472,5 +472,5 @@ pipelines:
tasks:
- script: |
export PYTHONPATH=scripts
./scripts/gocd/bci_repo_publish.py -A https://api.suse.de --verbose --debug run "--token=$BCI_TOKEN" 15-SP6
./scripts/gocd/bci_repo_publish.py -A https://api.suse.de --verbose --debug run "--repo-token=$BCI_TOKEN" "--rebuild-token=$DEVEL_BCI_REBUILD_TOKEN" 15-SP6
2 changes: 1 addition & 1 deletion gocd/bci.gocd.yaml.erb
Original file line number Diff line number Diff line change
Expand Up @@ -148,5 +148,5 @@ pipelines:
tasks:
- script: |
export PYTHONPATH=scripts
./scripts/gocd/bci_repo_publish.py -A https://api.suse.de --verbose --debug run "--token=$BCI_TOKEN" 15-<%= sp %>
./scripts/gocd/bci_repo_publish.py -A https://api.suse.de --verbose --debug run "--repo-token=$BCI_TOKEN" "--rebuild-token=$DEVEL_BCI_REBUILD_TOKEN" 15-<%= sp %>
<% end %>
30 changes: 23 additions & 7 deletions gocd/bci_repo_publish.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,13 @@ def is_repo_published(self, project: str, repo: str) -> bool:

return True

def run(self, version: _SLE_VERSION_T, token: Optional[str]=None) -> None:
def fetch_package_names_in_project(self, apiurl: str, prj_name: str) -> List[str]:
url = makeurl(apiurl, ['source', prj_name])
root = ET.parse(http_GET(url)).getroot()
return [elem.get("name") for elem in root]

def run(self, version: _SLE_VERSION_T, repo_token: Optional[str] = None,
rebuild_token: Optional[str] = None) -> None:

class Package(TypedDict):
arch: str
Expand All @@ -95,6 +101,8 @@ class Package(TypedDict):
published_mtime: int

build_prj = f'SUSE:SLE-{version}:Update:BCI'
devel_prj = f'devel:BCI:SLE-{version}'
_DEVEL_PRJ_APIURL = "https://api.opensuse.org"

if not self.is_repo_published(build_prj, 'images'):
self.logger.info(f'{build_prj}/images not successfully built')
Expand Down Expand Up @@ -166,8 +174,16 @@ class Package(TypedDict):
self.logger.info('No positive result from openQA (yet)')
return

if rebuild_token:
for pkg in self.fetch_package_names_in_project(_DEVEL_PRJ_APIURL, devel_prj):
url = makeurl(_DEVEL_PRJ_APIURL, ['trigger', 'rebuild'], {'project': devel_prj, 'package': pkg})
req = requests.post(url, headers={'Authorization': f'Token {rebuild_token}'})
req.raise_for_status()
else:
self.logger.warning('Would rebuild %s now, but no token specified', devel_prj)

# Trigger publishing
if token is None:
if repo_token is None:
self.logger.warning('Would publish now, but no token specified')
return

Expand All @@ -180,9 +196,8 @@ class Package(TypedDict):
}
url = makeurl(self.apiurl, ['trigger', 'release'], params)
# No bindings for using tokens yet, so do the request manually
req = requests.post(url, headers={'Authorization': f'Token {token}'})
if req.status_code != 200:
raise RuntimeError(f'Releasing failed: {req.text}')
req = requests.post(url, headers={'Authorization': f'Token {repo_token}'})
req.raise_for_status()

self.logger.info('Waiting for publishing to finish')
for pkg in packages:
Expand All @@ -204,7 +219,8 @@ def setup_tool(self):

return tool

@cmdln.option('--token', help='The token for publishing. Does a dry run if not given.')
@cmdln.option('--repo-token', help='The token for publishing. Does a dry run if not given.')
@cmdln.option('--rebuild-token', help='The token for rebuilding devel:BCI. Does a dry run if not given.')
def do_run(self, subcmd, opts, project):
"""${cmd_name}: run the BCI repo publisher for the specified project,
e.g. 15-SP3
Expand All @@ -213,7 +229,7 @@ def do_run(self, subcmd, opts, project):
${cmd_option_list}
"""

self.tool.run(project, token=opts.token)
self.tool.run(project, repo_token=opts.repo_token, rebuild_token=opts.rebuild_token)


if __name__ == "__main__":
Expand Down

0 comments on commit a42d180

Please sign in to comment.