diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a6ed347 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +# IDE files +.idea +*.iml + +# Build harness files +.build-harness +build-harness diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..61d8204 --- /dev/null +++ b/Makefile @@ -0,0 +1,16 @@ +export DEFAULT_HELP_TARGET ?= help +export HELP_FILTER ?= help|init|codefresh/sync +export BUILD_HARNESS_BRANCH ?= 0.15.3 +-include $(shell curl -sSL -o .build-harness "https://git.io/build-harness"; echo .build-harness) + +## Project name +PROJECT ?= cloudposse-pipelines + +## Repos to sync pipelines +REPOSITORIES ?= $(shell cat repositories.txt) + +## Codefresh accounts to operate with +ACCOUNTS ?= cloudposse + +## Pipelines for `cloudposse` +CLOUDPOSSE_PIPELINES ?= lint \ No newline at end of file diff --git a/README.md b/README.md index 04a9b8d..4eb90b8 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,226 @@ -# codefresh -Codefresh repos and pipelines in code +<!-- This file was automatically generated by the `build-harness`. Make all changes to `README.yaml` and run `make readme` to rebuild this file. --> +[![README Header][readme_header_img]][readme_header_link] + +[![Cloud Posse][logo]](https://cpco.io/homepage) + +# Codefresh pipelines [![Build Status](https://g.codefresh.io/api/badges/pipeline/cloudposse/cloudposse%2Fcodefresh%2Fcodefresh?type=cf-1)](https://g.codefresh.io/public/accounts/cloudposse/pipelines/cloudposse/codefresh/codefresh) [![Latest Release](https://img.shields.io/github/release/cloudposse/codefresh.svg)](https://github.com/cloudposse/codefresh/releases) [![Slack Community](https://slack.cloudposse.com/badge.svg)](https://slack.cloudposse.com) + + +This `codefresh` repo allows to create and update `Codefresh` pipelines for a collection of terraform modules and other repos. + + +--- + +This project is part of our comprehensive ["SweetOps"](https://cpco.io/sweetops) approach towards DevOps. +[<img align="right" title="Share via Email" src="https://docs.cloudposse.com/images/ionicons/ios-email-outline-2.0.1-16x16-999999.svg"/>][share_email] +[<img align="right" title="Share on Google+" src="https://docs.cloudposse.com/images/ionicons/social-googleplus-outline-2.0.1-16x16-999999.svg" />][share_googleplus] +[<img align="right" title="Share on Facebook" src="https://docs.cloudposse.com/images/ionicons/social-facebook-outline-2.0.1-16x16-999999.svg" />][share_facebook] +[<img align="right" title="Share on Reddit" src="https://docs.cloudposse.com/images/ionicons/social-reddit-outline-2.0.1-16x16-999999.svg" />][share_reddit] +[<img align="right" title="Share on LinkedIn" src="https://docs.cloudposse.com/images/ionicons/social-linkedin-outline-2.0.1-16x16-999999.svg" />][share_linkedin] +[<img align="right" title="Share on Twitter" src="https://docs.cloudposse.com/images/ionicons/social-twitter-outline-2.0.1-16x16-999999.svg" />][share_twitter] + + + + +It's 100% Open Source and licensed under the [APACHE2](LICENSE). + + + + + + + + + + + + + +## Usage + +If you need to add new repo, just update `Makefile` adding new repo to `REPOSITORIES` variable. Open a PR and as soon as it's closed, a new `Codefresh` repository will be created with proper pipeline. +If you need to update pipelines, feel free to update the files in `templates` folder, open a PR and as soon as it's closed all supported pipelines will be updated. + + + + + + + + +## Share the Love + +Like this project? Please give it a ★ on [our GitHub](https://github.com/cloudposse/codefresh-pipelines)! (it helps us **a lot**) + +Are you using this project or any of our other projects? Consider [leaving a testimonial][testimonial]. =) + + +## Related Projects + +Check out these related projects. + +- [build-harness](https://github.com/cloudposse/build-harness) - Collection of Makefiles to facilitate building Golang projects, Dockerfiles, Helm charts, and more +- [Packages](https://github.com/cloudposse/packages) - Cloud Posse installer and distribution of native apps + + + +## Help + +**Got a question?** + +File a GitHub [issue](https://github.com/cloudposse/codefresh-pipelines/issues), send us an [email][email] or join our [Slack Community][slack]. + +[![README Commercial Support][readme_commercial_support_img]][readme_commercial_support_link] + +## Commercial Support + +Work directly with our team of DevOps experts via email, slack, and video conferencing. + +We provide [*commercial support*][commercial_support] for all of our [Open Source][github] projects. As a *Dedicated Support* customer, you have access to our team of subject matter experts at a fraction of the cost of a full-time engineer. + +[![E-Mail](https://img.shields.io/badge/email-hello@cloudposse.com-blue.svg)][email] + +- **Questions.** We'll use a Shared Slack channel between your team and ours. +- **Troubleshooting.** We'll help you triage why things aren't working. +- **Code Reviews.** We'll review your Pull Requests and provide constructive feedback. +- **Bug Fixes.** We'll rapidly work to fix any bugs in our projects. +- **Build New Terraform Modules.** We'll [develop original modules][module_development] to provision infrastructure. +- **Cloud Architecture.** We'll assist with your cloud strategy and design. +- **Implementation.** We'll provide hands-on support to implement our reference architectures. + + + + +## Slack Community + +Join our [Open Source Community][slack] on Slack. It's **FREE** for everyone! Our "SweetOps" community is where you get to talk with others who share a similar vision for how to rollout and manage infrastructure. This is the best place to talk shop, ask questions, solicit feedback, and work together as a community to build totally *sweet* infrastructure. + +## Newsletter + +Signup for [our newsletter][newsletter] that covers everything on our technology radar. Receive updates on what we're up to on GitHub as well as awesome new projects we discover. + +## Contributing + +### Bug Reports & Feature Requests + +Please use the [issue tracker](https://github.com/cloudposse/codefresh-pipelines/issues) to report any bugs or file feature requests. + +### Developing + +If you are interested in being a contributor and want to get involved in developing this project or [help out](https://cpco.io/help-out) with our other projects, we would love to hear from you! Shoot us an [email][email]. + +In general, PRs are welcome. We follow the typical "fork-and-pull" Git workflow. + + 1. **Fork** the repo on GitHub + 2. **Clone** the project to your own machine + 3. **Commit** changes to your own branch + 4. **Push** your work back up to your fork + 5. Submit a **Pull Request** so that we can review your changes + +**NOTE:** Be sure to merge the latest changes from "upstream" before making a pull request! + + + +## Copyrights + +Copyright © 2019-2019 [Cloud Posse, LLC](https://cloudposse.com) + + + + + +## License + +[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) + +See [LICENSE](LICENSE) for full details. + + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. + + + + + + + + + +## Trademarks + +All other trademarks referenced herein are the property of their respective owners. + +## About + +This project is maintained and funded by [Cloud Posse, LLC][website]. Like it? Please let us know by [leaving a testimonial][testimonial]! + +[![Cloud Posse][logo]][website] + +We're a [DevOps Professional Services][hire] company based in Los Angeles, CA. We ❤️ [Open Source Software][we_love_open_source]. + +We offer [paid support][commercial_support] on all of our projects. + +Check out [our other projects][github], [follow us on twitter][twitter], [apply for a job][jobs], or [hire us][hire] to help with your cloud strategy and implementation. + + + +### Contributors + +| [![Erik Osterman][osterman_avatar]][osterman_homepage]<br/>[Erik Osterman][osterman_homepage] | [![Igor Rodionov][goruha_avatar]][goruha_homepage]<br/>[Igor Rodionov][goruha_homepage] | [![Maxim Mironenko][maximmi_avatar]][maximmi_homepage]<br/>[Maxim Mironenko][maximmi_homepage] | +|---|---|---| + + [osterman_homepage]: https://github.com/osterman + [osterman_avatar]: https://github.com/osterman.png?size=150 + [goruha_homepage]: https://github.com/goruha + [goruha_avatar]: https://github.com/goruha.png?size=150 + [maximmi_homepage]: https://github.com/maximmi + [maximmi_avatar]: https://github.com/maximmi.png?size=150 + + + +[![README Footer][readme_footer_img]][readme_footer_link] +[![Beacon][beacon]][website] + + [logo]: https://cloudposse.com/logo-300x69.svg + [docs]: https://cpco.io/docs + [website]: https://cpco.io/homepage + [github]: https://cpco.io/github + [jobs]: https://cpco.io/jobs + [hire]: https://cpco.io/hire + [slack]: https://cpco.io/slack + [linkedin]: https://cpco.io/linkedin + [twitter]: https://cpco.io/twitter + [testimonial]: https://cpco.io/leave-testimonial + [newsletter]: https://cpco.io/newsletter + [email]: https://cpco.io/email + [commercial_support]: https://cpco.io/commercial-support + [we_love_open_source]: https://cpco.io/we-love-open-source + [module_development]: https://cpco.io/module-development + [terraform_modules]: https://cpco.io/terraform-modules + [readme_header_img]: https://cloudposse.com/readme/header/img?repo=cloudposse/codefresh-pipelines + [readme_header_link]: https://cloudposse.com/readme/header/link?repo=cloudposse/codefresh-pipelines + [readme_footer_img]: https://cloudposse.com/readme/footer/img?repo=cloudposse/codefresh-pipelines + [readme_footer_link]: https://cloudposse.com/readme/footer/link?repo=cloudposse/codefresh-pipelines + [readme_commercial_support_img]: https://cloudposse.com/readme/commercial-support/img?repo=cloudposse/codefresh-pipelines + [readme_commercial_support_link]: https://cloudposse.com/readme/commercial-support/link?repo=cloudposse/codefresh-pipelines + [share_twitter]: https://twitter.com/intent/tweet/?text=Codefresh+pipelines&url=https://github.com/cloudposse/codefresh-pipelines + [share_linkedin]: https://www.linkedin.com/shareArticle?mini=true&title=Codefresh+pipelines&url=https://github.com/cloudposse/codefresh-pipelines + [share_reddit]: https://reddit.com/submit/?url=https://github.com/cloudposse/codefresh-pipelines + [share_facebook]: https://facebook.com/sharer/sharer.php?u=https://github.com/cloudposse/codefresh-pipelines + [share_googleplus]: https://plus.google.com/share?url=https://github.com/cloudposse/codefresh-pipelines + [share_email]: mailto:?subject=Codefresh+pipelines&body=https://github.com/cloudposse/codefresh-pipelines + [beacon]: https://ga-beacon.cloudposse.com/UA-76589703-4/cloudposse/codefresh-pipelines?pixel&cs=github&cm=readme&an=codefresh-pipelines diff --git a/README.yaml b/README.yaml new file mode 100644 index 0000000..2a40f95 --- /dev/null +++ b/README.yaml @@ -0,0 +1,52 @@ +# Name of this project +name: Codefresh pipelines + +# License of this project +license: "APACHE2" + +# Copyrights +copyrights: + - name: "Cloud Posse, LLC" + url: "https://cloudposse.com" + year: "2019" + +# Canonical GitHub repo +github_repo: cloudposse/codefresh-pipelines + +# Badges to display +badges: + - name: "Build Status" + image: "https://g.codefresh.io/api/badges/pipeline/cloudposse/cloudposse%2Fcodefresh%2Fcodefresh?type=cf-1" + url: "https://g.codefresh.io/public/accounts/cloudposse/pipelines/cloudposse/codefresh/codefresh" + - name: "Latest Release" + image: "https://img.shields.io/github/release/cloudposse/codefresh.svg" + url: "https://github.com/cloudposse/codefresh/releases" + - name: "Slack Community" + image: "https://slack.cloudposse.com/badge.svg" + url: "https://slack.cloudposse.com" + +related: + - name: "build-harness" + description: "Collection of Makefiles to facilitate building Golang projects, Dockerfiles, Helm charts, and more" + url: "https://github.com/cloudposse/build-harness" + - name: "Packages" + description: "Cloud Posse installer and distribution of native apps" + url: "https://github.com/cloudposse/packages" + +# Short description of this project +description: |- + This `codefresh` repo allows to create and update `Codefresh` pipelines for a collection of terraform modules and other repos. + +# How to use this project +usage: |- + If you need to add new repo, just update `Makefile` adding new repo to `REPOSITORIES` variable. Open a PR and as soon as it's closed, a new `Codefresh` repository will be created with proper pipeline. + If you need to update pipelines, feel free to update the files in `templates` folder, open a PR and as soon as it's closed all supported pipelines will be updated. + +# Contributors to this project +contributors: + - name: "Erik Osterman" + github: "osterman" + - name: "Igor Rodionov" + github: "goruha" + - name: "Maxim Mironenko" + github: "maximmi" diff --git a/codefresh.yml b/codefresh.yml new file mode 100644 index 0000000..aa08e28 --- /dev/null +++ b/codefresh.yml @@ -0,0 +1,11 @@ +# Build a service with environment variables +version: '1.0' + +steps: + apply_codefresh_sync: + title: Sync codefresh pipelines + image: cloudposse/build-harness:${{BUILD_HARNESS_VERSION}} + commands: + # Requires CF_API_KEY, here it will get it from Shared Configuration + - make codefresh/sync/auth/cloudposse + - make codefresh/sync/apply diff --git a/codefresh/terraform.yml b/codefresh/terraform.yml new file mode 100644 index 0000000..f3c26f6 --- /dev/null +++ b/codefresh/terraform.yml @@ -0,0 +1,14 @@ +version: '1.0' + +steps: + test: + title: Terraform Module Integration Tests + image: cloudposse/build-harness:${{BUILD_HARNESS_VERSION}} + commands: + - make init + - make terraform/install + - make terraform/get-plugins + - make terraform/get-modules + - make terraform/lint + - make terraform/validate + - make readme/lint \ No newline at end of file diff --git a/repositories.txt b/repositories.txt new file mode 100644 index 0000000..62adf32 --- /dev/null +++ b/repositories.txt @@ -0,0 +1,2 @@ +cloudposse/terraform-aws-s3-bucket +cloudposse/terraform-aws-mq-broker \ No newline at end of file diff --git a/templates/cloudposse/lint.yaml b/templates/cloudposse/lint.yaml new file mode 100644 index 0000000..21d5f8f --- /dev/null +++ b/templates/cloudposse/lint.yaml @@ -0,0 +1,32 @@ +version: "1.0" +kind: "pipeline" +metadata: + name: {{ (ds "repository") }}/lint + isPublic: true + labels: + tags: [] + deprecate: + applicationPort: '8080' + repoPipeline: true + project: {{ (ds "repository") }} +spec: + triggers: + - branchRegex: /.*/gi + branchRegexInput: regex + commentRegex: /.*/gi + context: github-webhooks + events: + - push + provider: github + pullRequestAllowForkEvents: false + repo: {{ (ds "repository") }} + type: git + contexts: + - terraform modules + variables: [] + specTemplate: + location: url + url: >- + https://raw.githubusercontent.com/cloudposse/codefresh/master/codefresh/terraform.yml + stages: [] + steps: {}