Package: cycleops
Cycleops CLIThis is the official command line interface for the Cycleops API.RequirementsTo run the Cycleops CLI either Python 3.11 or newer, or Docker is required.InstallationPythonThe Cycleops CLI is available as a Python package on PyPI:pip install cycleopsCYCLEOPS_API_KEY=your-api-key cycleops --helpDockerIf your system is running Docker, you can also use Cycleops directly its Docker image:docker run -e CYCLEOPS_API_KEY=your-api-key ghcr.io/stackmasters/cycleops --helpUsageAuthenticationTo authenticate with the Cycleops CLI, you need to provide an API key. Documentation on how to create an API key is available athttps://cycleops.io/docs/api-keys/create-a-new-api-key.Environment variableSet theCYCLEOPS_API_KEYenvironment variable to your API key.export CYCLEOPS_API_KEY=<cycleops_api_key>Command line optionConfigure the Cycleops client through the command line interface.cycleops --api-key=<cycleops_api_key> services update <service_id> --variable <key>=<value>Note: If both the environment variable and command line option are set, the command line option will be used by default.UnitsList of all of the available unitscycleops units listServicesList your servicescycleops services listRetrieve a servicecycleops services retrieve <service_name>|<service_id>Create a servicecycleops services create --name <service_name> --unit-id <unit_id>Update a servicecycleops services update <service_name>|<service_id> --name <service_name> --description <service_description --unit-id <unit_id> --variable <key_1>=<value_1> --variable <key_2>=<value_2> ... --variable <key_n>=<value_n>Delete a servicecycleops services delete <service_name>|<service_id>Create a Containercycleops services create-container <service_name>|<service_id> <container_name> --image <image_name>:<image_tag> --ports <ports>,<ports> --volumes <volume>,<volume>,<volume> --env-file <env_file_path> --command <command>Update a Containercycleops services update-container <service_name>|<service_id> <container_name> --name <new_container_name> --image <image_name>:<image_tag> --ports <ports>,<ports> --volumes <volume>,<volume>,<volume> --env-file <env_file_path> --command <command>StacksList your stackscycleops stacks listRetrieve a stackcycleops stacks retrieve <stack_name>|<stack_id>Create a stackcycleops stacks create --name <stack_name>Update a stackcycleops stacks update <stack_name>|<stack_id> --name <stack_name> --description <stack_description> --unit-id <unit_id> ... --unit-id <unit_id>Delete a stackcycleops stacks delete <stack_name>|<stack_id>SetupsList your setupscycleops setups listRetrieve a setupcycleops setups retrieve <setup_name>|<setup_id>Create a setupcycleops setups create --name <setup_name>Update a setupcycleops setups update <setup_name>|<setup_id> --name <setup_name> --stack-id <stack_id> --environment-id <environment_id> --host-id <host_id> ... --host-id <host_id> --hostgroup-id <hostgroup_id> ... --hostgroup-id <hostgroup_id> --service-id <service_id> ... --service-id <service_id>Delete a setupcycleops setups delete <setup_name>|<setup_id>Deploy a setupcycleops setups deploy <setup_name>|<setup_id>GitHub ActionsYou can use Cycleops with your GitHub Actions to deploy a setup right from GitHub. For example this is how you could update the Docker image of a service and deploy a setup:deploy:
    runs-on: ubuntu-latest
    env:
      CYCLEOPS_API_KEY: ${{ secrets.CYCLEOPS_API_KEY }}
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v4
        with:
          python-version: "3.11"
      - name: Install Cycleops
        run: pip install cycleops
      - name: Update Cycleops services
        run: cycleops services update-container <service_name> <container_name> --image <image_name>:<image_tag>
      - name: Deploy Cycleops setups
        run: cycleops setups deploy <setup_name>ExampleYou can update a service's image and deploy a setup as follows:$cycleopsservicesupdatedefault-container-ngnix--variablecontainers.0.image=nginx:1.23$cycleopssetupsdeploydefault-container-ngnixLicenseThis project is licensed under theMIT License