Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .github/workflows/package-promote.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,11 @@ name: Promote package repositories
on:
workflow_dispatch:
inputs:
filter:
description: Space-separated list of regular expressions matching short_name of repositories to promote
type: string
required: false
default: ""
kayobe_config_branch:
required: false
description: Branch of StackHPC Kayobe configuration to use
Expand Down Expand Up @@ -47,4 +52,8 @@ jobs:
ansible-playbook -i ansible/inventory \
ansible/dev-pulp-repo-version-query-kayobe.yml \
ansible/dev-pulp-repo-promote.yml \
-e deb_package_repo_filter="'$FILTER'" \
-e rpm_package_repo_filter="'$FILTER'" \
-e kayobe_config_repo_path=./stackhpc-kayobe-config/
env:
FILTER: ${{ github.event.inputs.filter }}
17 changes: 15 additions & 2 deletions .github/workflows/package-sync.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,11 @@ on:
description: Sync package repositories in Test Pulp
default: true
type: boolean
filter:
description: Space-separated list of regular expressions matching short_name of repositories to sync
type: string
required: false
default: ""
schedule:
# Daily at 02:17
- cron: '17 2 * * *'
Expand Down Expand Up @@ -50,7 +55,11 @@ jobs:
ansible-playbook -i ansible/inventory \
ansible/dev-pulp-repo-sync.yml \
ansible/dev-pulp-repo-publication-cleanup.yml \
ansible/dev-pulp-repo-publish.yml
ansible/dev-pulp-repo-publish.yml \
-e deb_package_repo_filter="'$FILTER'" \
-e rpm_package_repo_filter="'$FILTER'"
env:
FILTER: ${{ github.event.inputs.filter }}

package-sync-test:
name: Sync package repositories in test
Expand Down Expand Up @@ -82,4 +91,8 @@ jobs:
ansible-playbook -i ansible/inventory \
ansible/test-pulp-repo-version-query.yml \
ansible/test-pulp-repo-sync.yml \
ansible/test-pulp-repo-publish.yml
ansible/test-pulp-repo-publish.yml \
-e deb_package_repo_filter="'$FILTER'" \
-e rpm_package_repo_filter="'$FILTER'"
env:
FILTER: ${{ github.event.inputs.filter }}
9 changes: 9 additions & 0 deletions .github/workflows/package-update-kayobe.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,11 @@ name: Update Kayobe package repository versions
on:
workflow_dispatch:
inputs:
filter:
description: Space-separated list of regular expressions matching short_name of repositories to update
type: string
required: false
default: ""
kayobe_config_branch:
required: false
description: Branch of StackHPC Kayobe configuration to use
Expand Down Expand Up @@ -47,7 +52,11 @@ jobs:
ansible-playbook -i ansible/inventory \
ansible/test-pulp-repo-version-query.yml \
ansible/test-kayobe-repo-version-generate.yml \
-e deb_package_repo_filter="'$FILTER'" \
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does something swallow the single quotes? Otherwise, I'd expect the variable not to be interpreted 🤔

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems not

foo=bar
echo "'$foo'"
'bar'

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Didn't know that! Found the table in: https://stackoverflow.com/a/42082956 useful.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nice find

-e rpm_package_repo_filter="'$FILTER'" \
-e kayobe_config_repo_path=./stackhpc-kayobe-config/
env:
FILTER: ${{ github.event.inputs.filter }}

- name: Check for version changes
id: git-diff
Expand Down
15 changes: 15 additions & 0 deletions ansible/filter_plugins/filters.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,20 @@
import re


def select_repos(repos, filter_string):
"""Select repositories that match a filter string.

The filter string is a whitespace-separated list of regular expressions
matching repository short names.
"""
if not filter_string:
return repos
regexes = filter_string.split()
patterns = re.compile(r"|".join(regexes).join('()'))
return [repo for repo in repos
if "short_name" in repo and re.search(patterns, repo["short_name"])]


def select_images(images, filter_string):
"""Select images that match a filter string.

Expand All @@ -32,5 +46,6 @@ class FilterModule(object):

def filters(self):
return {
"select_repos": select_repos,
"select_images": select_images,
}
12 changes: 6 additions & 6 deletions ansible/inventory/group_vars/all/dev-pulp-repos
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ dev_pulp_repository_deb_repo_common:

dev_pulp_repository_deb_repos: >-
{%- set dev_repos = [] -%}
{%- for repo in deb_package_repos -%}
{%- for repo in deb_package_repos_filtered -%}
{%- set dev_repo = {"name": repo.name} -%}
{%- if repo.sync | default(true) -%}
{%- set dev_repo = dev_repo | combine({"url": repo.url}) -%}
Expand Down Expand Up @@ -57,7 +57,7 @@ dev_pulp_distribution_deb_common:

dev_pulp_distribution_deb: >-
{%- set dev_dists = [] -%}
{%- for repo in deb_package_repos -%}
{%- for repo in deb_package_repos_filtered -%}
{%- if repo.publish | default(true) -%}
{%- set version = dev_pulp_distribution_version -%}
{%- set name = repo.distribution_name ~ version -%}
Expand All @@ -83,7 +83,7 @@ dev_pulp_distribution_deb_promote_common:

dev_pulp_distribution_deb_promote: >-
{%- set dev_dists = [] -%}
{%- for repo in deb_package_repos -%}
{%- for repo in deb_package_repos_filtered -%}
{%- if repo.publish | default(true) -%}
{%- set version = dev_pulp_distribution_deb_promote_versions.get(repo.short_name, omit) -%}
{%- set name = repo.distribution_name ~ version -%}
Expand All @@ -107,7 +107,7 @@ dev_pulp_repository_rpm_repo_common:

dev_pulp_repository_rpm_repos: >-
{%- set dev_repos = [] -%}
{%- for repo in rpm_package_repos -%}
{%- for repo in rpm_package_repos_filtered -%}
{%- set dev_repo = {"name": repo.name} -%}
{%- if repo.sync | default(true) -%}
{%- set dev_repo = dev_repo | combine({"url": repo.url}) -%}
Expand All @@ -132,7 +132,7 @@ dev_pulp_distribution_rpm_common:

dev_pulp_distribution_rpm: >-
{%- set dev_dists = [] -%}
{%- for repo in rpm_package_repos -%}
{%- for repo in rpm_package_repos_filtered -%}
{%- if repo.publish | default(true) -%}
{%- set version = dev_pulp_distribution_version -%}
{%- set name = repo.distribution_name ~ version -%}
Expand All @@ -155,7 +155,7 @@ dev_pulp_distribution_rpm_promote_common:

dev_pulp_distribution_rpm_promote: >-
{%- set dev_dists = [] -%}
{%- for repo in rpm_package_repos -%}
{%- for repo in rpm_package_repos_filtered -%}
{%- if repo.publish | default(true) -%}
{%- set version = dev_pulp_distribution_rpm_promote_versions.get(repo.short_name, omit) -%}
{%- set name = repo.distribution_name ~ version -%}
Expand Down
12 changes: 12 additions & 0 deletions ansible/inventory/group_vars/all/package-repos
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,12 @@ deb_package_repos:
short_name: docker_ce_ubuntu
distribution_name: docker-ce-for-ubuntu-

# Default filter string for Deb package repositories.
deb_package_repo_filter: ""

# List of package repositories after applying filter.
deb_package_repos_filtered: "{{ deb_package_repos | select_repos(deb_package_repo_filter) }}"

###############################################################################
# RPM

Expand Down Expand Up @@ -345,3 +351,9 @@ rpm_package_repos:
base_path: mlnx_ofed/5.6-1.0.3.3/rhel8.6/x86_64/
short_name: mlnx_ofed_5_6_1_0_3_3_rhel8_6
distribution_name: mlnx_ofed-5.6-1.0.3.3-rhel8.6-

# Default filter string for RPM package repositories.
rpm_package_repo_filter: ""

# List of package repositories after applying filter.
rpm_package_repos_filtered: "{{ rpm_package_repos | select_repos(rpm_package_repo_filter) }}"
8 changes: 4 additions & 4 deletions ansible/inventory/group_vars/all/test-pulp-repos
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ test_pulp_repository_deb_repo_versions: {}

test_pulp_repository_deb_repos: >-
{%- set test_repos = [] -%}
{%- for repo in deb_package_repos -%}
{%- for repo in deb_package_repos_filtered -%}
{%- if repo.sync | default(true) and repo.publish | default(true) -%}
{%- set version = test_pulp_repository_deb_repo_versions.get(repo.short_name, omit) -%}
{%- set test_repo = {"name": repo.name ~ " (ark)", "url": test_dev_pulp_content_url ~ repo.base_path ~ version, "short_name": repo.short_name} -%}
Expand All @@ -55,7 +55,7 @@ test_pulp_distribution_deb_common:

test_pulp_distribution_deb: >-
{%- set test_dists = [] -%}
{%- for repo in deb_package_repos -%}
{%- for repo in deb_package_repos_filtered -%}
{%- if repo.sync | default(true) and repo.publish | default(true) -%}
{%- set version = test_pulp_repository_deb_repo_versions.get(repo.short_name, omit) -%}
{%- set name = repo.distribution_name ~ version ~ "-ark" -%}
Expand Down Expand Up @@ -92,7 +92,7 @@ test_pulp_repository_rpm_repo_versions: {}

test_pulp_repository_rpm_repos: >-
{%- set test_repos = [] -%}
{%- for repo in rpm_package_repos -%}
{%- for repo in rpm_package_repos_filtered -%}
{%- if repo.sync | default(true) and repo.publish | default(true) -%}
{%- set version = test_pulp_repository_rpm_repo_versions.get(repo.short_name, omit) -%}
{%- set test_repo = {"name": repo.name ~ " (ark)", "url": test_dev_pulp_content_url ~ repo.base_path ~ version, "short_name": repo.short_name} -%}
Expand All @@ -110,7 +110,7 @@ test_pulp_distribution_rpm_common:

test_pulp_distribution_rpm: >-
{%- set test_dists = [] -%}
{%- for repo in rpm_package_repos -%}
{%- for repo in rpm_package_repos_filtered -%}
{%- if repo.sync | default(true) and repo.publish | default(true) -%}
{%- set version = test_pulp_repository_rpm_repo_versions.get(repo.short_name, omit) -%}
{%- set name = repo.distribution_name ~ version ~ "-ark" -%}
Expand Down
9 changes: 0 additions & 9 deletions ansible/test-kayobe-repo-version-generate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,6 @@
kayobe_pulp_repo_versions_path: "{{ (kayobe_config_repo_path ~ '/etc/kayobe/pulp-repo-versions.yml') | realpath }}"
kayobe_pulp_repo_versions_dest: "{{ kayobe_pulp_repo_versions_path }}"
tasks:
- name: Assert that versions variable is populated
assert:
that:
- missing_repos | length == 0
msg: >-
Some expected repositories not present in Kayobe Pulp repo versions: {{ missing_repos | join(',') }}
vars:
missing_repos: "{{ kayobe_pulp_repo_versions.keys() | list | difference(test_pulp_repository_rpm_repo_versions) | difference(test_pulp_repository_deb_repo_versions) | list }}"

- name: Set a fact about updated Kayobe Pulp repository versions
vars:
kayobe_var_name: "{{ 'stackhpc_pulp_repo_' ~ item.key ~ '_version' }}"
Expand Down
17 changes: 17 additions & 0 deletions ansible/validate-deb-repos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,23 @@
that:
- published_deb_package_repos | map(attribute='base_path') | list | map('last') | unique == ['/']

- name: Assert that Deb package repository list can be filtered to single
assert:
that:
- deb_package_repos_filtered | length == 1
- deb_package_repos_filtered[0].short_name == 'ubuntu_focal'
vars:
deb_package_repo_filter: ubuntu_focal$

- name: Assert that Deb package repository list can be filtered to multiple
assert:
that:
- deb_package_repos_filtered | length == 2
- deb_package_repos_filtered[0].short_name == 'ubuntu_focal'
- deb_package_repos_filtered[1].short_name == 'docker_ce_ubuntu'
vars:
deb_package_repo_filter: docker_ce_ubuntu ubuntu_focal$

- name: Assert that dev package repository list is defined
assert:
that:
Expand Down
17 changes: 17 additions & 0 deletions ansible/validate-rpm-repos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,23 @@
that:
- published_rpm_package_repos | map(attribute='base_path') | list | map('last') | unique == ['/']

- name: Assert that RPM package repository list can be filtered to single
assert:
that:
- rpm_package_repos_filtered | length == 1
- rpm_package_repos_filtered[0].short_name == 'centos_stream_8_baseos'
vars:
rpm_package_repo_filter: centos_stream_8_baseos

- name: Assert that RPM package repository list can be filtered to multiple
assert:
that:
- rpm_package_repos_filtered | length == 2
- rpm_package_repos_filtered[0].short_name == 'centos_stream_8_baseos'
- rpm_package_repos_filtered[1].short_name == 'docker'
vars:
rpm_package_repo_filter: docker centos_stream_8_baseos

- name: Assert that dev package repository list is defined
assert:
that:
Expand Down