{"id":22477274,"url":"https://github.com/base2services/ciinabox","last_synced_at":"2026-01-29T10:54:18.368Z","repository":{"id":145343938,"uuid":"86513019","full_name":"base2Services/ciinabox","owner":"base2Services","description":"ciinabox","archived":false,"fork":false,"pushed_at":"2017-04-04T06:12:29.000Z","size":3,"stargazers_count":1,"open_issues_count":0,"forks_count":2,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-02-01T20:46:23.686Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/base2Services.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2017-03-28T22:28:23.000Z","updated_at":"2017-09-07T12:41:19.000Z","dependencies_parsed_at":null,"dependency_job_id":"b1d1c906-7297-4f96-acac-145d0c8a73b7","html_url":"https://github.com/base2Services/ciinabox","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/base2Services%2Fciinabox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/base2Services%2Fciinabox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/base2Services%2Fciinabox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/base2Services%2Fciinabox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/base2Services","download_url":"https://codeload.github.com/base2Services/ciinabox/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245897405,"owners_count":20690455,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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-12-06T14:10:06.562Z","updated_at":"2026-01-29T10:54:18.318Z","avatar_url":"https://github.com/base2Services.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ciinabox\n\n## Intro\n\nCiinabox is set of tools that was created in order to leverage creation and\nmanagement of large numbers of CI/CD environments, allowing user to treat\nset of CI tools and automation tasks as code. These tools are responsible for\nfollowing\n\n- Provisioning of underlying infrastructure for CI Tools\n- Provisioning of CI/CD tools themselves\n- Provisioning of automation tasks in repeatable manner. Storing these tasks\n  in a human readbale format, and treating them as a code\n\n## Repositories\n\n- [ciinabox-ecs](https://github.com/base2Services/ciinabox-ecs) is responsible for provisioning infrastructure and CI tools on AWS.\nAny automation servers are provisioned as [Docker](https://www.docker.com) containers. In it's default setup\nciinabox-ecs provisions [Jenkins](https://jenkins.io) automation server containers automation server,\nhowever it is possible to rpvoision any automation server/tool that can be run as\na Docker container\n\n- [ciinabox-containers](https://github.com/base2Services/ciinabox-containers) is set of docker container definition for automation tools. Most of\ntooling is focused around Jenkins ecosystem. Pull requests are welcome :)\n\n- [ciinabox-jenkins](https://github.com/base2Services/ciinabox-jenkins) is command line utility for provisioning Jenkins tasks from human readbale\nYAML files. These YAML files can than be stored as code in repository and versioned,\ntreating your automation tasks as a code.\n\n\n- [ciinabox-pipelines](https://github.com/base2Services/ciinabox-pipelines) is [Jenkins pipelines library](https://jenkins.io/doc/book/pipeline/shared-libraries/) aiding in orchestration of existing Jenkins.\nThis library also contains methods that should enable it's users to build new pipeline jobs\nutilising methods such as `dockerBuild` for building docker images, or `withECR`\nfor executing Groovy closure while logged into Amazon's Elastic Container Service in case your pipeline is running\n\n## Getting started\n\n### Create Ciinabox environment on AWS\n\nBefore commencing to steps below, be aware that you will incur charges on\nyour AWS account (1 NAT Gateway, 1 t2.large instance and 1 ELB). Also note\nthat instance type can be tweaked using configuration files. Once environment\nhas been torn down, it will leave EBS snapshots behind, as deletion policies\nare set to `Snapshot` for data drives.\n\n#### Requirements\n\n- AWS Account\n- Route53 hosted zone for your tools (`tools.aws.example.net` in example below)\n- S3 Bucket for Cloud Formation templates (optional, can be automatically created)\n\n#### Creating ciinabox\n\nCiinabox creation consists of following steps\n\n1. Generation of configuration files\n2. (Optional) creation and upload of server certificates\n3. (Optional) creation of ciinabox key\n4. (Optional) creation of s3 bucket with Cloud Formation templates\n\nIf you have previously deployed ciinabox to your AWS account, you won't need\nsteps 2 and 3, as step 4 can be done either manually or trough setup script.\nEach of this steps can be executed in isolation, as separate rake task.\nFully guided install is available trough `ciinabox:full_install` rake task.\nType `rake -t` for more info.\n\n- Clone the repo and install required gems\n\n```\n$ git clone https://github.com/base2Services/ciinabox-ecs.git\n\nciinabox-ecs $ bundle install\nUsing rake 12.0.0\nUsing cfndsl 0.12.4\nUsing bundler 1.13.3\nBundle complete! 2 Gemfile dependencies, 3 gems now installed.\nUse  \\`bundle show [gemname]\\` to see where a bundled gem is installed.\n```\n\n- `ciinabox:full_install` rake task will guide you trough whole process of generating\n  configuration files new toolset, and provisioning all resources in your\n  AWSS account. Only 2 mandatory parameters are name of your ciinabox installation,\n  determining local path for configuration files, and Route53 hosted zone for newly\n  setup tools. Full install will wait for completion of stack creation before\n  exiting\n\n```\nciinabox-ecs $ bundle exec rake ciinabox:full_install\nEnter the name of your ciinabox:\ndemo\nEnter the AWS region to create your ciinabox [us-east-1]:\n\nUsing us-east-1 as AWS region\nEnter the name of the S3 bucket to deploy ciinabox to [ciinabox-deployment-0bce48b2-8eda-405e-a26f-8653882d3956]:\n\nEnter top level domain (e.g tools.example.com), must exist in Route53 in the same AWS account:\ntools.aws.example.net\nEnter AWS profile you wish to use for provisioning (empty for default):\n\nUsing AWS Account 111111111111\nEnter the name of created Cloud Formation stack [ciinabox]:\nciinabox-demo\nUsing user-provided services.yml File\n# Enable active ciinabox by executing or override ciinaboxes base directory:\nexport CIINABOXES_DIR=\"ciinaboxes\"\nexport CIINABOX=\"demo\"\n# or run\n# eval \"$(rake ciinabox:active[demo])\"\nCreate source bucket (y/n)? [y]\ny\nmake_bucket: s3://ciinabox-deployment-0bce48b2-8eda-405e-a26f-8653882d3956/\nSuccessfully created S3 source deployment bucket ciinabox-deployment-0bce48b2-8eda-405e-a26f-8653882d3956\nCreate and upload server certificate (y/n)? [y]\nn\nCreate and upload ciinabox key (y/n)? [y]\nn\n......\n..... # Output of template generation\n......\nSuccessfully uploaded rendered templates to S3 bucket ciinabox-deployment-0bce48b2-8eda-405e-a26f-8653882d3956\n{\n    \"StackId\": \"arn:aws:cloudformation:us-east-1:111111111111:stack/ciinabox-demo/xxxxxxx\"\n}\nStarting creation of ciinabox environment\nWaiting for Cloud Formation stack creation completion ...\n```\n\n### Making changes to ciinabox environment\n\n\n### Publishing jobs to Jenkins\n\nJenkins jobs can be provisioned by using [ciinabox-jenkins](https://github.com/base2Services/ciinabox-jenkins)\nCLI utility.\nPlease see repo's [README](https://github.com/base2Services/ciinabox-jenkins/blob/master/README.md) for reference on job dsl, and yaml file format.\nOnce you check out the repo, there will be some example jobs within `ciinaboxes.example/example/jenkins/dsl-reference-jobs.yml` file.\nTo provision these sample jobs to your newly created ciinabox environment, use command below.\nExample assumes that default username/password hasn't been changed.\n\n```\nciinabox-jenkins $ ./gradlew jenkins -Dusername=ciinabox -Dpassword=ciinabox -Durl=http://jenkins.aws.example.net -Dciinaboxes=ciinaboxes.example -Dciinabox=example\n\n```\n\nInfo output on all jobs created should be written to console\n\n```\n....\nprocessing job: MyJobWithParameters\nProcessing provided DSL script\ndsl-doc - updated\ndsl-doc/MyJobWithParameters - created\n\nprocessing job: MyJobWithDescription\nProcessing provided DSL script\ndsl-doc - updated\ndsl-doc/MyJobWithDescription - created\n\nBUILD SUCCESSFUL\n\nTotal time: 20.255 secs\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbase2services%2Fciinabox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbase2services%2Fciinabox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbase2services%2Fciinabox/lists"}