entry-manual-steer.ymlΒΆ

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