Skip to main content
Glama

generate_github_actions

Create GitHub Actions workflow files for CI/CD pipelines, testing, security scanning, and deployment automation across multiple project types.

Instructions

Generates GitHub Actions workflow files for CI/CD, testing, security scanning, and deployment.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
projectTypeYesType of project
featuresYesFeatures to include

Implementation Reference

  • The handler function that generates GitHub Actions workflow YAML files based on the provided projectType and features. It constructs CI/CD pipelines for testing, linting, building, and security scanning.
    export function generateGitHubActionsHandler(args: any) {
        const { projectType, features } = args;
    
        const workflows: string[] = [];
    
        if (features.includes("test") || features.includes("lint") || features.includes("build")) {
            const ciSteps = [];
            if (projectType === "node") {
                ciSteps.push(`      - uses: actions/checkout@v4
          - uses: actions/setup-node@v4
            with:
              node-version: '20'
              cache: 'npm'
          - run: npm ci`);
                if (features.includes("lint")) ciSteps.push(`      - run: npm run lint`);
                if (features.includes("test")) ciSteps.push(`      - run: npm test`);
                if (features.includes("build")) ciSteps.push(`      - run: npm run build`);
            } else if (projectType === "python") {
                ciSteps.push(`      - uses: actions/checkout@v4
          - uses: actions/setup-python@v5
            with:
              python-version: '3.12'
          - run: pip install -r requirements.txt`);
                if (features.includes("lint")) ciSteps.push(`      - run: ruff check .`);
                if (features.includes("test")) ciSteps.push(`      - run: pytest`);
            }
    
            workflows.push(`# .github/workflows/ci.yml
    name: CI
    on:
      push:
        branches: [main]
      pull_request:
        branches: [main]
    
    jobs:
      build:
        runs-on: ubuntu-latest
        steps:
    ${ciSteps.join("\n")}`);
        }
    
        if (features.includes("security")) {
            workflows.push(`# .github/workflows/security.yml
    name: Security Scan
    on:
      push:
        branches: [main]
      schedule:
        - cron: '0 0 * * 0'  # Weekly
    
    jobs:
      security:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v4
          - name: Run security audit
            run: ${projectType === "node" ? "npm audit --audit-level=high" : projectType === "python" ? "pip-audit" : "cargo audit"}
          - name: Dependency review
            uses: actions/dependency-review-action@v4
            if: github.event_name == 'pull_request'`);
        }
    
        const result = `# GitHub Actions Workflows
    
    ## Generated Workflows for ${projectType}
    
    ${workflows.join("\n\n---\n\n")}
    
    ---
    
    ## Additional Recommended Workflows
    
    ### Dependabot Config
    Create \`.github/dependabot.yml\`:
    \`\`\`yaml
    version: 2
    updates:
      - package-ecosystem: "${projectType === "node" ? "npm" : projectType === "python" ? "pip" : projectType}"
        directory: "/"
        schedule:
          interval: "weekly"
        open-pull-requests-limit: 10
    \`\`\`
    
    ### Branch Protection
    Enable in GitHub Settings:
    - Require PR reviews
    - Require status checks (CI must pass)
    - Require up-to-date branches
    `;
    
        return { content: [{ type: "text", text: result }] };
    }
  • Zod schema defining the input structure for the tool, including projectType (enum) and features (array of enums).
    export const generateGitHubActionsSchema = {
        name: "generate_github_actions",
        description: "Generates GitHub Actions workflow files for CI/CD, testing, security scanning, and deployment.",
        inputSchema: z.object({
            projectType: z.enum(["node", "python", "rust", "go", "docker"]).describe("Type of project"),
            features: z.array(z.enum(["test", "lint", "build", "deploy", "security", "release"])).describe("Features to include")
        })
    };
  • src/index.ts:115-115 (registration)
    Registration of the tool in the main stdio server's toolRegistry Map.
    ["generate_github_actions", { schema: generateGitHubActionsSchema, handler: generateGitHubActionsHandler }],
  • src/server.ts:120-120 (registration)
    Registration of the tool in the HTTP server's toolRegistry Map.
    ["generate_github_actions", { schema: generateGitHubActionsSchema, handler: generateGitHubActionsHandler }],

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/millsydotdev/Code-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server