{"id":17069787,"url":"https://github.com/jlong/cjp-example-conf","last_synced_at":"2026-04-13T13:32:01.309Z","repository":{"id":66244183,"uuid":"76070702","full_name":"jlong/cjp-example-conf","owner":"jlong","description":"An experimental repository that contains example configuration for CJP written in an imaginary Groovy DSL","archived":false,"fork":false,"pushed_at":"2016-12-12T20:57:39.000Z","size":8,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-25T16:51:40.398Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jlong.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-12-09T21:12:58.000Z","updated_at":"2016-12-12T18:04:46.000Z","dependencies_parsed_at":"2023-05-18T09:00:17.035Z","dependency_job_id":null,"html_url":"https://github.com/jlong/cjp-example-conf","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jlong/cjp-example-conf","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlong%2Fcjp-example-conf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlong%2Fcjp-example-conf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlong%2Fcjp-example-conf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlong%2Fcjp-example-conf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jlong","download_url":"https://codeload.github.com/jlong/cjp-example-conf/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlong%2Fcjp-example-conf/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31754854,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-13T13:27:56.013Z","status":"ssl_error","status_checked_at":"2026-04-13T13:21:23.512Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-14T11:27:51.357Z","updated_at":"2026-04-13T13:32:01.282Z","avatar_url":"https://github.com/jlong.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# CJP Example Configuration DSL\n\nThis is an experimental repository that contains example configuration for CJP\nwritten in an imaginary Groovy DSL. Have a look at\n[conf/main.conf](conf/main.conf) to view example configuration. None of this is\nworking code. It is merely the sketch of an idea.\n\nThe following themes are explored:\n\n* Is it possible to combine configuration for my entire CJP setup (with\n  multiple masters) into one set of files? Configuration can then be pushed\n  from CJOC to CJP masters as needed.\n* What if Jenkins config as code was built from the ground up with support for\n  Docker containers? While support for Docker would almost certainly be\n  optional, what would Jenkins configuration look like if Docker support was a\n  first-class feature?\n\nIn this model a new command line tool would need to be created for Jenkins to\nevaluate configuration, bring up docker containers, and sync configuration\nacross masters. I've detailed the experience with an imaginary `jenkins`\nconfiguration tool below.\n\n\n## Start containers\n\nAfter creating your config, you can run:\n\n    $ jenkins start -d -c conf/main.conf\n\nThis does the following:\n\n1. Lints and reads configuration from the entry point `conf/main.conf`\n2. Detects that the config is using Docker\n3. Generates a `docker-compose.yml` in a temp directory\n4. Executes `docker-compose up -d` on this configuration to build and start the\n   necessary Docker containers in the background\n3. Syncs configuration through CJOC across masters\n\n\n## Stop containers\n\nTo stop running containers:\n\n    $ jenkins stop -c conf/main.conf\n\nThis does the following:\n\n1. Reads configuration from the entry point `conf/main.conf`\n2. Generates a `docker-compose.yml` in a temp directory\n3. Executes `docker-compose stop` to stop running containers\n\n\n## Lint config\n\nTo lint your configuration for syntax errors, run:\n\n    $ jenkins lint -c conf/main.conf\n\nThis does the following:\n\n1. Reads configuration from the entry point `conf/main.conf`\n2. Outputs parse errors with file and line number\n\n\n## Generate a docker-compose file\n\nFor debugging purposes or integration with other scripts it is helpful to be\nable to generate a `docker-compose` configuration file. This is accomplished\nwith:\n\n    $ jenkins compose -c conf/main.conf \u003e my-docker-compose.yml\n\nThis does the following:\n\n1. Reads configuration from `conf/main.conf`\n2. Outputs docker-compose compatible YAML\n3. Pipes the output into `my-docker-compose.yml`\n\n\n## Sync configuration\n\nOnce our containers are up and running, we can sync configuration updates with:\n\n    $ jenkins sync -c conf/main.conf\n\nThis does the following:\n\n1. Lints and reads configuration from the entry point `conf/main.conf`\n2. Ensures that containers are present for all masters present in\n   configuration, if not the command fails\n3. Syncs configuration through CJOC across masters\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjlong%2Fcjp-example-conf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjlong%2Fcjp-example-conf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjlong%2Fcjp-example-conf/lists"}