mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2025-12-07 09:56:41 +00:00
Changes: - Update GitHub Actions test-deploy workflow to run three staged deploys (normal+debug, reset+debug, async) using inventory-generated vault password files. - Switch Ansible stdout_callback to ansible.builtin.default and enable YAML-style result_format via callback_default. - Refactor cli/deploy.py: typed run_ansible_playbook(), structured MODE_* handling, better error reporting, and preserved vault/interactive behaviour. - Add unit tests for deploy CLI (bool parsing, MODE_* loading, dynamic args, validation, and ansible-playbook command construction) under tests/unit/cli/test_deploy.py. Context: see ChatGPT conversation on 2025-12-02: https://chatgpt.com/share/692f1035-6bc4-800f-91a9-342db54e1a75
82 lines
2.5 KiB
YAML
82 lines
2.5 KiB
YAML
name: Build & Test Infinito.Nexus CLI in Docker Container
|
||
|
||
on:
|
||
push:
|
||
branches:
|
||
- master
|
||
pull_request:
|
||
|
||
jobs:
|
||
test-deploy:
|
||
runs-on: ubuntu-latest
|
||
timeout-minutes: 30
|
||
|
||
steps:
|
||
- name: Checkout repository
|
||
uses: actions/checkout@v4
|
||
|
||
- name: Build Docker image
|
||
run: |
|
||
docker build --network=host --no-cache --pull -t infinito:latest .
|
||
|
||
# 1) First deploy: normal + debug
|
||
- name: First deploy (normal + debug)
|
||
run: |
|
||
docker run --network=host --rm \
|
||
infinito:latest \
|
||
/bin/sh -lc '
|
||
set -e
|
||
cd /opt/infinito-src
|
||
|
||
# Create inventory (also creates inventories/github-ci/.password if missing)
|
||
infinito create inventory inventories/github-ci \
|
||
--host localhost \
|
||
--ssl-disabled
|
||
|
||
INVENTORY_PATH="inventories/github-ci/servers.yml"
|
||
VAULT_FILE="inventories/github-ci/.password"
|
||
|
||
# First deploy with debug
|
||
infinito deploy "$INVENTORY_PATH" -T server -p "$VAULT_FILE" --debug
|
||
'
|
||
|
||
# 2) Second deploy: reset + debug
|
||
- name: Second deploy (--reset --debug)
|
||
run: |
|
||
docker run --network=host --rm \
|
||
infinito:latest \
|
||
/bin/sh -lc '
|
||
set -e
|
||
cd /opt/infinito-src
|
||
|
||
# Rebuild inventory; .password will be reused if present
|
||
infinito create inventory inventories/github-ci \
|
||
--host localhost \
|
||
--ssl-disabled
|
||
|
||
INVENTORY_PATH="inventories/github-ci/servers.yml"
|
||
VAULT_FILE="inventories/github-ci/.password"
|
||
|
||
infinito deploy "$INVENTORY_PATH" -T server -p "$VAULT_FILE" --skip-tests --reset --debug
|
||
'
|
||
|
||
# 3) Third deploy: async (no debug)
|
||
- name: Third deploy (async deploy – no debug)
|
||
run: |
|
||
docker run --network=host --rm \
|
||
infinito:latest \
|
||
/bin/sh -lc '
|
||
set -e
|
||
cd /opt/infinito-src
|
||
|
||
infinito create inventory inventories/github-ci \
|
||
--host localhost \
|
||
--ssl-disabled
|
||
|
||
INVENTORY_PATH="inventories/github-ci/servers.yml"
|
||
VAULT_FILE="inventories/github-ci/.password"
|
||
|
||
# Async-style deploy: no --debug, so some processes run in parallel
|
||
infinito deploy "$INVENTORY_PATH" -T server -p "$VAULT_FILE" --skip-tests
|
||
'
|