AgentSkillsCN

devops-deploy-job

作业部署配置的脚手架搭建。关键词:部署、作业、DevOps、脚手架搭建。

SKILL.md
--- frontmatter
name: devops-deploy-job
description: "Scaffold job deployment configuration. Keywords: deploy, job, devops, scaffolding."

Scaffold: Job Deployment

This document is an entrypoint for job deployment scaffolding. The step-by-step flow is in /.system/skills/ssot/repo/scaffolding/devops-deploy-job/SKILL.md.


1. Purpose & Scope

Purpose: Generate deployment skeleton for running a batch job in target environments (Kubernetes CronJob, scheduled tasks, etc.).

Scope:

  • Creates job deployment configuration files
  • Sets up schedule configuration
  • Generates deployment scripts
  • Records deployment decisions in workdocs

Out of scope:

  • Actual deployment execution (requires human with credentials)
  • Packaging/Docker build (see devops_packaging_job.md)
  • HTTP service deployment (see devops_deploy_service.md)
  • Infrastructure provisioning

2. Inputs & Preconditions

Required Inputs

ParameterTypeDescription
job_namestringJob identifier (matches packaging)
environmentstringTarget environment: dev, staging, prod

Optional Inputs

ParameterTypeDefaultDescription
image_tagstringlatestDocker image tag
schedulestring""Cron schedule (e.g., 0 2 * * *)
resourcesobject{}CPU/memory limits
env_varsobject{}Environment variables
secretsarray[]Secret references
concurrency_policystringForbidCronJob concurrency: Allow, Forbid, Replace
restart_policystringOnFailurePod restart policy

Preconditions

  1. Job has been packaged (see devops_packaging_job.md)
  2. /ops/deploy/ directory exists
  3. Human has deployment credentials for target environment
  4. Target environment infrastructure exists

3. Step-by-Step Flow (AI + Human)

See /.system/skills/ssot/repo/scaffolding/devops-deploy-job/SKILL.md.


4. Tools & Scripts

ToolPurpose
scripts/devops/scaffold/devops_deploy_job.pyOrchestrator script
/ops/deploy/scripts/deploy.shGenerated deploy script

5. Outputs & Side Effects

Files Created

code
ops/deploy/jobs/<job_name>/<environment>/
  cronjob.yaml        # Kubernetes CronJob
  configmap.yaml      # ConfigMap (if env_vars)
  config.yaml         # Deployment configuration
  deploy.sh           # Deployment script
  run-once.sh         # Manual trigger script
  README.md           # Human-facing documentation

Kubernetes CronJob Template

yaml
# Auto-generated by devops_deploy_job scaffold
apiVersion: batch/v1
kind: CronJob
metadata:
  name: <job_name>
  namespace: <environment>
spec:
  schedule: "<schedule>"
  concurrencyPolicy: Forbid
  successfulJobsHistoryLimit: 3
  failedJobsHistoryLimit: 3
  jobTemplate:
    spec:
      backoffLimit: 3
      activeDeadlineSeconds: 3600
      template:
        spec:
          restartPolicy: OnFailure
          containers:
            - name: <job_name>
              image: <registry>/<job_name>:<image_tag>
              resources:
                limits:
                  cpu: "1000m"
                  memory: "1Gi"
                requests:
                  cpu: "100m"
                  memory: "256Mi"

Configuration File

yaml
job_name: <job_name>
environment: <environment>
image_tag: latest
schedule: "0 2 * * *"
concurrency_policy: Forbid
restart_policy: OnFailure
timeout: 3600
backoff_limit: 3
resources:
  limits:
    cpu: "1000m"
    memory: "1Gi"
  requests:
    cpu: "100m"
    memory: "256Mi"
env_vars: {}
secrets: []

6. Safety & Rollback

Safety Measures

  • --dry-run always available for preview
  • Human approval required before execution
  • No actual deployment during scaffold
  • Credentials not stored in generated files
  • Production jobs require additional approval

Rollback Procedure

For job suspension (human executes):

bash
kubectl patch cronjob/<job_name> -n <environment> -p '{"spec":{"suspend":true}}'

For scaffold rollback:

  1. Delete the deployment directory:
    bash
    rm -rf ops/deploy/jobs/<job_name>/<environment>/
    

7. Job Operations (Human Required)

After scaffold, human manages job:

Deploy CronJob

bash
kubectl apply -f ops/deploy/jobs/<job_name>/<environment>/

Trigger Manual Run

bash
kubectl create job --from=cronjob/<job_name> <job_name>-manual-$(date +%s) -n <environment>

Check Job Status

bash
kubectl get cronjobs -n <environment>
kubectl get jobs -n <environment> -l app=<job_name>
kubectl logs -n <environment> job/<job_name>-xxx

Suspend/Resume Job

bash
# Suspend
kubectl patch cronjob/<job_name> -n <environment> -p '{"spec":{"suspend":true}}'

# Resume
kubectl patch cronjob/<job_name> -n <environment> -p '{"spec":{"suspend":false}}'

8. Related Documents

  • /.system/skills/ssot/repo/scaffolding/devops-deploy-job/templates/deploy_template.md - Deployment knowledge template
  • /.system/skills/ssot/repo/scaffolding/devops-packaging-job/SKILL.md - Job packaging scaffold
  • /.system/skills/ssot/repo/scaffolding/devops-deploy-service/SKILL.md - Service deployment scaffold
  • /ops/deploy/AGENTS.md - Deployment strategy