{"id":26392,"library":"singularci","title":"SingularCI","description":"SingularCI is a DSL transpiler for generating CI/CD configuration files from a unified YAML pipeline definition. Version 1.1.13 supports GitHub Actions and GitLab CI/CD, with planned support for Jenkins, TravisCI, CircleCI, and others. It is released as an npm package and standalone executables (via pkg), so it works with any project without requiring Node.js. Key differentiator: write pipelines once in a platform-agnostic DSL and transpile to multiple CI/CD formats. Release cadence is irregular; last update was 1.1.13.","status":"active","version":"1.1.13","language":"javascript","source_language":"en","source_url":"https://github.com/Tobiaskr12/SingularCI","tags":["javascript","CI","CD","CI/CD","DSL","Transpiler","TypeScript"],"install":[{"cmd":"npm install singularci","lang":"bash","label":"npm"},{"cmd":"yarn add singularci","lang":"bash","label":"yarn"},{"cmd":"pnpm add singularci","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Used to package SingularCI as standalone executables for non-Node.js environments","package":"pkg","optional":true}],"imports":[{"note":"Package is a CLI tool; programmatic usage is not documented - main import is just for version info or initialization.","wrong":"const singularci = require('singularci')","symbol":"package","correct":"import singularci from 'singularci'"},{"note":"No programmatic API; use CLI via npx or binary.","wrong":"singularci","symbol":"CLI","correct":"npx singularci"},{"note":"The main usage is providing a .singularci.yml file in your project root, not importing code.","symbol":"DSL configuration","correct":"// Add .singularci.yml to project root"}],"quickstart":{"code":"# Add .singularci.yml to your project root with a simple pipeline:\nname: my-pipeline\non:\n  push:\n    branches: [main]\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v3\n      - run: npm install && npm test\n\n# Then run:\nnpx singularci\n# This generates .github/workflows/my-pipeline.yml for GitHub Actions and .gitlab-ci.yml for GitLab CI/CD.","lang":"typescript","description":"Shows how to define a pipeline in .singularci.yml and generate CI/CD files using the CLI."},"warnings":[{"fix":"Update .singularci.yml to use new branch filtering syntax.","message":"DSL syntax changed in v1.1.0: 'branches' keyword replaced by 'branches-ignore' and 'branches' now only specifies included branches.","severity":"breaking","affected_versions":"<1.1.0"},{"fix":"Adjust any CI references that expected the old output location.","message":"Output file paths changed in v1.1.0: GitHub Actions workflows are now generated under .github/workflows/ instead of a flat file.","severity":"breaking","affected_versions":"<1.1.0"},{"fix":"Review generated GitLab config manually and report issues.","message":"Support for GitLab CI/CD is experimental in v1.1.13; the generated .gitlab-ci.yml may not cover all features.","severity":"deprecated","affected_versions":"<=1.1.13"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Create a .singularci.yml file with your pipeline definition.","cause":"Missing configuration file in the project root.","error":"Error: No .singularci.yml file found in /path/to/project"},{"fix":"Refer to the DSL keywords documentation at https://github.com/Tobiaskr12/SingularCI/blob/main/documentation/dsl_keywords_documentation.yml","cause":"Misuse of unupported DSL keyword.","error":"Error: Invalid DSL: unknown keyword 'some_keyword'"},{"fix":"Validate YAML syntax with a linter; ensure proper indentation and key-value formatting.","cause":"Malformed YAML in .singularci.yml.","error":"Error: Failed to parse YAML: mapping values are not allowed here"},{"fix":"Run 'npm install -g singularci' or use 'npx singularci'.","cause":"Package not installed or not in PATH.","error":"singularci: command not found"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}