{"id":17918287,"url":"https://github.com/link-/ci-cd-intro","last_synced_at":"2025-04-05T14:05:17.129Z","repository":{"id":41818045,"uuid":"384082831","full_name":"Link-/ci-cd-intro","owner":"Link-","description":"Intro to CI/CD 💻 ☁️","archived":false,"fork":false,"pushed_at":"2024-08-18T15:12:14.000Z","size":2469,"stargazers_count":86,"open_issues_count":1,"forks_count":309,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-29T13:07:16.005Z","etag":null,"topics":["aws-elastic-beanstalk","ci-cd","ci-cd-pipeline","github-actions","terraform","tutorial"],"latest_commit_sha":null,"homepage":"https://glich.stream","language":"Shell","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/Link-.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":"FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"Link-","patreon":"glich_stream"}},"created_at":"2021-07-08T10:11:00.000Z","updated_at":"2025-03-27T14:00:10.000Z","dependencies_parsed_at":"2023-02-08T18:45:18.084Z","dependency_job_id":"0bc5dec5-6ebd-4911-8c3a-e556c46b9357","html_url":"https://github.com/Link-/ci-cd-intro","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/Link-%2Fci-cd-intro","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Link-%2Fci-cd-intro/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Link-%2Fci-cd-intro/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Link-%2Fci-cd-intro/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Link-","download_url":"https://codeload.github.com/Link-/ci-cd-intro/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247345850,"owners_count":20924102,"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":["aws-elastic-beanstalk","ci-cd","ci-cd-pipeline","github-actions","terraform","tutorial"],"created_at":"2024-10-28T20:10:37.456Z","updated_at":"2025-04-05T14:05:17.087Z","avatar_url":"https://github.com/Link-.png","language":"Shell","funding_links":["https://github.com/sponsors/Link-","https://patreon.com/glich_stream"],"categories":[],"sub_categories":[],"readme":"# Intro to CI/CD 💻 ☁️\n\n\u003e TLDR; This repository is a sample project demonstrating a basic continuous integration (CI) / continuous deployment (CD) setup. This project is in READ ONLY mode.\n\n:warning: **Fork this repository in order to use it!** If you're following along the videos and trying to run the workflows here, they will not work.\n\n### Course attachement\n\n\u003e This repository is best consumed while or after following the course attachment 👇\n\n\u003ca href=\"https://www.youtube.com/playlist?list=PLArH6NjfKsUhvGHrpag7SuPumMzQRhUKY\" target=\"_blank\"\u003e\u003cimg src=\"./images/course_banner.png\" /\u003e\u003c/a\u003e\n\n## Project structure\n\n```sh\n# You can generate this tree with:\n# $ tree -a -I '.git|assets|.github|venv|node_modules|images|.DS_Store|*.tfvars|.terraform'\n.\n├── .gitignore\n├── CODEOWNERS\n├── LICENSE\n├── README.md\n├── infra\n│   ├── README.md\n│   └── instances\n│       ├── production\n│       │   ├── .terraform.lock.hcl\n│       │   ├── main.tf\n│       │   └── terraform.auto.tfvars.example\n│       └── staging\n│           ├── .terraform.lock.hcl\n│           ├── create_staging_resource.sh\n│           ├── extra_staging.tf.example\n│           ├── main.tf\n│           └── terraform.tfvars.auto.example\n└── web\n    ├── README.md\n    ├── app.js\n    ├── bin\n    │   └── www\n    ├── package-lock.json\n    ├── package.json\n    ├── public\n    │   ├── javascripts\n    │   └── stylesheets\n    │       └── style.css\n    ├── routes\n    │   ├── index.js\n    │   └── users.js\n    ├── tests\n    │   ├── app.test.js\n    │   └── routes.test.js\n    └── views\n        ├── error.jade\n        ├── index.jade\n        └── layout.jade\n\n12 directories, 26 files\n```\n\n- `infra/images`: contains [Packer](https://learn.hashicorp.com/packer) template to build our [AWS EC2 AMI](https://aws.amazon.com/ec2/)\n- `infra/instances`: contains our [Terraform](https://learn.hashicorp.com/terraform) templates to setup our `staging` and `production` EC2 instances\n- `web`: contains our simple [Express](https://expressjs.com/) web application\n\n## Setup\n\n### Configure your GitHub repository to run the workflows\n\n\u003cdetails\u003e\n    \u003csummary\u003eClick to expand\u003c/summary\u003e\n\n1. Navigate to the `Settings` in your repository then to `Environments`\n    ![37EE1AFF-BDBC-405E-8D43-672E09CA87D5](https://user-images.githubusercontent.com/568794/125194173-86195400-e250-11eb-89dd-e52cdf867c74.png)\n\n1. Add a new environment and call it `staging` (or anything else you like)\n    ![F1BC0A94-3BB5-4409-B057-6E6FC241C78A](https://user-images.githubusercontent.com/568794/125194219-9d584180-e250-11eb-9495-e2a30ddee5c5.png)\n\n1. Enable required reviewers and add your secrets\n    ![085BF9C1-552E-46C5-91D0-687A9634A885](https://user-images.githubusercontent.com/568794/125194260-b9f47980-e250-11eb-9e10-c603a3ee8232.png)\n\n1. Enable branch protection on the `main` branch\n    ![2E8B02F5-CD8E-40C1-B03C-5FD7074C1C77](https://user-images.githubusercontent.com/568794/125194325-15266c00-e251-11eb-9c39-f9b847971dae.png)\n    ![955A1F29-D628-46C4-86A4-8F614A712CFF](https://user-images.githubusercontent.com/568794/125194345-266f7880-e251-11eb-8055-4d0d392b6f2a.png)\n\n\u003c/details\u003e\n\n### Test your setup\n\n1. Create a new branch from the `main` branch and make some changes to the app\n1. Push the new branch to GitHub\n1. Watch the CI workflow being triggered\n1. Troubleshoot issues as they rise\n\n## LICENSE\n\n[Copyright (c) 2021 Bassem Dghaidi (@Link-)](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flink-%2Fci-cd-intro","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flink-%2Fci-cd-intro","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flink-%2Fci-cd-intro/lists"}