From fcfa9a8bfa41f2f78f9bedbd6415ffd7eec31b3f Mon Sep 17 00:00:00 2001 From: Matt Martz Date: Thu, 5 Mar 2026 12:01:06 -0600 Subject: [PATCH 1/6] Use custom runner for guaranteed capacity --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5783a47..e5a480f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,7 +21,7 @@ jobs: matrix: include: - runner: ubuntu-24.04 - - runner: ubuntu-24.04-arm64 + - runner: ubuntu-24.04-arm64-core permissions: contents: read From 40e32f148f7e9c58b551ab03fa17d1e1bf29d3d0 Mon Sep 17 00:00:00 2001 From: Matt Martz Date: Thu, 5 Mar 2026 12:36:53 -0600 Subject: [PATCH 2/6] ensure build.py failure results in job failure --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e5a480f..a025b6d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -58,6 +58,7 @@ jobs: - name: Build container id: build run: | + set -o pipefail python3 build.py galaxy_ng ${{ steps.determine-tag.outputs.tag }} | tee /dev/stderr >> $GITHUB_OUTPUT - name: Log in to GitHub Container Registry From 36a48949241af0f231b15727b346114ff53cc266 Mon Sep 17 00:00:00 2001 From: Matt Martz Date: Thu, 5 Mar 2026 12:37:15 -0600 Subject: [PATCH 3/6] dump setup_collections container logs if the process fails --- build.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/build.py b/build.py index c4b1f09..fb603c3 100644 --- a/build.py +++ b/build.py @@ -75,7 +75,12 @@ def run_compose(tag: str, src: str) -> None: dc_command(['up', '-d'], env=os.environ | {'TAG': tag, 'GALAXY_NG_SRC': src}) print('Prepopulate galaxy...', file=sys.stderr) - dc_command(['wait', 'setup_collections']) + try: + dc_command(['wait', 'setup_collections']) + except subprocess.CalledProcessError: + print('Setup collections failed, dumping logs:', file=sys.stderr) + dc_command(['logs', 'setup_collections'], check=False) + raise print('Stop compose...', file=sys.stderr) dc_command(['stop']) From c28de3d8d966839ebba757bfa12769ed0c8d83df Mon Sep 17 00:00:00 2001 From: Matt Martz Date: Thu, 5 Mar 2026 12:50:02 -0600 Subject: [PATCH 4/6] increase setup_collections timeout --- .../local/galaxy_ng/plugins/modules/setup_collections.py | 6 ++---- playbooks/playbook.yml | 1 + 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/playbooks/collections/ansible_collections/local/galaxy_ng/plugins/modules/setup_collections.py b/playbooks/collections/ansible_collections/local/galaxy_ng/plugins/modules/setup_collections.py index d117413..12914b4 100644 --- a/playbooks/collections/ansible_collections/local/galaxy_ng/plugins/modules/setup_collections.py +++ b/playbooks/collections/ansible_collections/local/galaxy_ng/plugins/modules/setup_collections.py @@ -100,9 +100,6 @@ from multiprocessing import TimeoutError -COLLECTIONS_BUILD_AND_PUBLISH_TIMEOUT = 300 - - def publish_collection(module, collection): output_dir = module.params['output_dir'] @@ -260,6 +257,7 @@ def run_module(): ), gpg_homedir=dict(type='path', default=None), output_dir=dict(type='path', default=None), + timeout=dict(type='int', default=300), ) module = AnsibleModule( @@ -275,7 +273,7 @@ def run_module(): try: result['results'] = pool.map_async( publish_func, module.params['collections'] - ).get(timeout=COLLECTIONS_BUILD_AND_PUBLISH_TIMEOUT) + ).get(timeout=module.params['timeout']) except TimeoutError as timeout_err: module.fail_json( 'Timed out waiting for collections to be provisioned.', diff --git a/playbooks/playbook.yml b/playbooks/playbook.yml index 2c36410..e28b71e 100644 --- a/playbooks/playbook.yml +++ b/playbooks/playbook.yml @@ -330,6 +330,7 @@ collections: '{{ primary_collections }}' gpg_homedir: '{{ gpg_homedir }}' output_dir: '{{ temp_root }}/primary_collections' + timeout: 600 environment: ANSIBLE_CONFIG: '{{ playbook_dir }}/ansible.cfg' register: setup_collections From 205047bbd68c6cf06e6b859c13901882582af9aa Mon Sep 17 00:00:00 2001 From: Matt Martz Date: Thu, 5 Mar 2026 13:04:20 -0600 Subject: [PATCH 5/6] reduce timeout --- playbooks/playbook.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/playbooks/playbook.yml b/playbooks/playbook.yml index e28b71e..091d76e 100644 --- a/playbooks/playbook.yml +++ b/playbooks/playbook.yml @@ -330,7 +330,7 @@ collections: '{{ primary_collections }}' gpg_homedir: '{{ gpg_homedir }}' output_dir: '{{ temp_root }}/primary_collections' - timeout: 600 + timeout: 500 environment: ANSIBLE_CONFIG: '{{ playbook_dir }}/ansible.cfg' register: setup_collections From 40b9b2ca321fc44ba90ba608083df6ff6e4acc9c Mon Sep 17 00:00:00 2001 From: Matt Martz Date: Thu, 5 Mar 2026 13:04:31 -0600 Subject: [PATCH 6/6] no tty interaction --- build.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.py b/build.py index fb603c3..e9eb6fe 100644 --- a/build.py +++ b/build.py @@ -109,7 +109,7 @@ def create_data_archive(tmpdir: str) -> str: archive = 'galaxy-archive.tar' print('Make volume tarball...', file=sys.stderr) docker_command( - ['exec', '-ti', alpine_id] + [ + ['exec', alpine_id] + [ 'tar', '-cf', f'/{archive}', '/var/lib/pulp', '/etc/pulp/certs', '/var/lib/postgresql/data', '/artifacts',