name: "πŸ•ΉοΈ Manual" run-name: "πŸ•ΉοΈ ${{ inputs.chunk_gate && 'πŸ›‘ ' || '' }}${{ inputs.offset != '0' && inputs.offset != '' && format('⏩{0} ', inputs.offset) || '' }}${{ inputs.workspace != 'auto' && format('πŸ§‘β€πŸ’»{0} ', inputs.workspace == 'true' && '是' || '否') || '' }}${{ inputs.tor != 'auto' && format('{0} ', inputs.tor == 'disabled' && '🌐' || inputs.tor == 'enforced' && 'πŸ§…εΌΊεˆΆ' || 'πŸ§…η‹¬ε ') || '' }}${{ inputs.vpn != 'auto' && format('{0} ', inputs.vpn == 'disabled' && 'πŸ›£οΈ' || 'πŸš‡εΌΊεˆΆ') || '' }}${{ inputs.filesystem != '' && format('πŸ—„οΈ{0} ', inputs.filesystem) || '' }}${{ inputs.distros != '' && format('🐧{0} ', inputs.distros) || '' }}${{ inputs.lifecycles != '' && format('♻️{0} ', inputs.lifecycles) || '' }}${{ inputs.mode != 'auto' && format('πŸš€{0} ', inputs.mode) || '' }}${{ inputs.priority != '' && format('⭐{0} ', inputs.priority) || '' }}${{ inputs.whitelist != '' && format('🎯{0}', inputs.whitelist) || 'πŸ”€ diff (origin/main)' }}" concurrency: group: global-ci-${{ github.repository }}-${{ github.ref_name }} cancel-in-progress: true on: workflow_dispatch: inputs: distros: description: "🐧 Distro pool the rows are spread over. Empty: all five. Example: 'arch debian'" required: false default: "" type: string priority: description: "⭐ Roles to lead, in every combination left open (see README)" required: false default: "" type: string whitelist: description: "🎯 Roles to deploy. Empty: diff vs origin/main. '__ALL__': every role" required: false default: "" type: string lifecycles: description: "♻️ Lifecycle envelope for test-deploy discovery (comma/space-separated)." required: false default: "" type: string mode: description: "πŸš€ Deploy mode. 'auto' rotates a row over the modes its role offers" required: false default: "auto" type: choice options: - "auto" - "host" - "compose" - "swarm" filesystem: description: "πŸ—„οΈ Filesystem pool the rows are spread over. Empty: ext4, btrfs, zfs" required: false default: "" type: string tor: description: "πŸ§… Tor axis for swarm and compose; the four values are in the README" required: false default: "auto" type: choice options: - "auto" - "enforced" - "exclusive" - "disabled" vpn: description: "πŸš‡ WireGuard axis for swarm; auto rotates, the others hold every row" required: false default: "auto" type: choice options: - "auto" - "enforced" - "disabled" meshes: description: "πŸ•ΈοΈ WireGuard layout meshed swarm rows deploy. Empty: the development lab's" required: false default: "" type: string offset: description: "⏩ Where chunk 0 starts: a row count, or a token like web-app-x#2" required: false default: "0" type: string chunk_size: description: "πŸ“¦ Rows one chunk holds. Empty: derive it from slots and queue window" required: false default: "" type: string chunk_gate: description: "πŸ›‘ Stop the chunk chain at its first failed chunk" required: false default: true type: boolean sweep: description: "πŸ” Sweep number driving the mode and tor rotation. Empty: the run number" required: false default: "" type: string workspace: description: "πŸ§‘β€πŸ’» Run the workspace test. 'auto': on a global scope only" required: false default: "auto" type: choice options: - "auto" - "true" - "false" workspace_track: description: "πŸ§‘β€πŸ’» Workspace track per distro. 'rotate' splits compose and swarm" required: false default: "rotate" type: choice options: - "rotate" - "compose" - "swarm" permissions: contents: read jobs: ci-orchestrator: name: πŸŽ›οΈ Orchestrate CI (manual) permissions: actions: read contents: read packages: write security-events: write issues: write uses: ./.github/workflows/call-orchestrator.yml with: distros: ${{ inputs.distros }} whitelist: ${{ inputs.whitelist }} lifecycles: ${{ inputs.lifecycles }} mode: ${{ inputs.mode }} priority: ${{ inputs.priority }} sweep: ${{ inputs.sweep }} offset: ${{ inputs.offset }} chunk_size: ${{ inputs.chunk_size != '' && inputs.chunk_size || '0' }} chunk_gate: ${{ inputs.chunk_gate }} filesystem: ${{ inputs.filesystem }} workspace: ${{ inputs.workspace }} workspace_track: ${{ inputs.workspace_track }} tor: ${{ inputs.tor }} vpn: ${{ inputs.vpn }} meshes: ${{ inputs.meshes }} secrets: inherit