Skip to content

xcsh Manifest Automation

Validate, compare, apply, and remove F5 Distributed Cloud resources from version-controlled JSON and YAML—without an LLM turn.
No LLM turn SHA-256 verified Cross-platform

The xcsh Action turns a manifest commit into a direct F5 Distributed Cloud API operation. GitHub Actions checks out your repository, the Action installs a pinned and verified xcsh release, and xcsh executes the requested operation against your tenant.

Declarative workflows

Keep desired resources in Git and use apply to create missing resources, update changed resources, and preserve identical resources.

Safe pull requests

Run local validate jobs without XC credentials, then reserve authenticated mutation for protected branches and environments.

Automation outputs

Gate later steps with stable counts for created, updated, unchanged, deleted, different, valid, and failed resources.

Verified tooling

Install an exact xcsh build and verify both its release archive and executable before every run, including cache hits.

  1. Commit a manifest. Store one or more JSON or YAML resource declarations in the repository.
  2. Trigger a workflow. Use a path filter so validation or deployment runs only when manifests change.
  3. Run xcsh. The Action resolves the files, validates the full batch, and invokes xcsh directly with shell: false.
  4. Inspect the result. Read typed Action outputs or the aggregate JSON report without parsing terminal text.
.github/workflows/apply.yml
name: Apply XC manifests
on:
push:
branches: [main]
paths: ["manifests/**"]
permissions:
contents: read
jobs:
apply:
runs-on: ubuntu-latest
environment: xc-production
steps:
- uses: actions/checkout@v7
with:
persist-credentials: false
- name: Apply committed manifests
id: xcsh
uses: f5-sales-demo/xcsh-action@v1
env:
XCSH_API_URL: ${{ vars.XCSH_API_URL }}
XCSH_API_TOKEN: ${{ secrets.XCSH_API_TOKEN }}
XCSH_NAMESPACE: ${{ vars.XCSH_NAMESPACE }}
with:
operation: apply
files: manifests/
recursive: true