Skip to content
Snippets Groups Projects
Commit c7e043f8 authored by André Anjos's avatar André Anjos :speech_balloon:
Browse files

[scripts/ci] Be selective about packages we are supposed to cleanup at clean-betas action

parent 5e17870a
No related branches found
No related tags found
1 merge request!100More cleanup improvements
Pipeline #32633 passed
...@@ -215,8 +215,23 @@ def select_user_condarc(paths, branch): ...@@ -215,8 +215,23 @@ def select_user_condarc(paths, branch):
return select_build_file("condarc", paths, branch) return select_build_file("condarc", paths, branch)
def clean_betas(dry_run, username, password): def clean_betas(dry_run, username, password, includes):
"""Cleans-up betas (through the CI). Executes if ``dry_run==False`` only. """Cleans-up betas (through the CI). Executes if ``dry_run==False`` only.
Parameters:
dry_run (bool): If set, then does not execute any action, just print
what it would do instead.
username (str): The user to use for interacting with the WebDAV service
password (str): Password the the above user
includes (re.SRE_Pattern): A regular expression that matches the names
of packages that should be considered for clean-up. For example: for
Bob and BATL packages, you may use ``^(bob|batl|gridtk).*`` For BEAT
packages you may use ``^beat.*``
""" """
from .deploy import _setup_webdav_client from .deploy import _setup_webdav_client
...@@ -255,4 +270,4 @@ def clean_betas(dry_run, username, password): ...@@ -255,4 +270,4 @@ def clean_betas(dry_run, username, password):
server_path = davclient.get_url(arch_path) server_path = davclient.get_url(arch_path)
echo_info('Cleaning beta packages from %s' % server_path) echo_info('Cleaning beta packages from %s' % server_path)
remove_old_beta_packages(client=davclient, path=arch_path, remove_old_beta_packages(client=davclient, path=arch_path,
dry_run=dry_run, pyver=True) dry_run=dry_run, pyver=True, includes=includes)
...@@ -66,7 +66,7 @@ def setup_webdav_client(private): ...@@ -66,7 +66,7 @@ def setup_webdav_client(private):
return c return c
def remove_old_beta_packages(client, path, dry_run, pyver=True): def remove_old_beta_packages(client, path, dry_run, pyver=True, includes=None):
"""Removes old conda packages from a conda channel. """Removes old conda packages from a conda channel.
What is an old package depends on how the packages are produced. In What is an old package depends on how the packages are produced. In
...@@ -100,6 +100,11 @@ def remove_old_beta_packages(client, path, dry_run, pyver=True): ...@@ -100,6 +100,11 @@ def remove_old_beta_packages(client, path, dry_run, pyver=True):
a package will be a part of a package's name. This is need to account a package will be a part of a package's name. This is need to account
for the fact that our CI jobs run per Python version. for the fact that our CI jobs run per Python version.
includes (re.SRE_Pattern): A regular expression that matches the names
of packages that should be considered for clean-up. For example: for
Bob and BATL packages, you may use ``^(bob|batl|gridtk).*`` For BEAT
packages you may use ``^beat.*``
""" """
server_path = client.get_url(path) server_path = client.get_url(path)
...@@ -120,6 +125,11 @@ def remove_old_beta_packages(client, path, dry_run, pyver=True): ...@@ -120,6 +125,11 @@ def remove_old_beta_packages(client, path, dry_run, pyver=True):
continue continue
name, version, build_string = f[:-8].rsplit("-", 2) name, version, build_string = f[:-8].rsplit("-", 2)
# see if this package should be included or not in our clean-up
if (includes is not None) and (not includes.match(name)):
continue
hash_, build = build_string.rsplit("_", 1) hash_, build = build_string.rsplit("_", 1)
if pyver: if pyver:
......
...@@ -992,8 +992,15 @@ def clean_betas(dry_run): ...@@ -992,8 +992,15 @@ def clean_betas(dry_run):
echo_warning("!!!! DRY RUN MODE !!!!") echo_warning("!!!! DRY RUN MODE !!!!")
echo_warning("Nothing is being executed on server.") echo_warning("Nothing is being executed on server.")
import re
if os.environ["CI_PROJECT_NAMESPACE"] == "beat":
includes = re.compile(r'^beat.*')
else:
includes = re.compile(r'^(bob|batl|gridtk).*')
clean_betas( clean_betas(
dry_run=dry_run, dry_run=dry_run,
username=os.environ["DOCUSER"], username=os.environ["DOCUSER"],
password=os.environ["DOCPASS"], password=os.environ["DOCPASS"],
includes=includes,
) )
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment