{"action":"created","issue":{"url":"https://api.github.com/repos/RxSwiftCommunity/contributors/issues/44","repository_url":"https://api.github.com/repos/RxSwiftCommunity/contributors","labels_url":"https://api.github.com/repos/RxSwiftCommunity/contributors/issues/44/labels{/name}","comments_url":"https://api.github.com/repos/RxSwiftCommunity/contributors/issues/44/comments","events_url":"https://api.github.com/repos/RxSwiftCommunity/contributors/issues/44/events","html_url":"https://github.com/RxSwiftCommunity/contributors/issues/44","id":296026387,"number":44,"title":"[Proposal] Resolve Deployment of new CocoaPods on a Community-level","user":{"login":"freak4pc","id":605076,"avatar_url":"https://avatars0.githubusercontent.com/u/605076?v=4","gravatar_id":"","url":"https://api.github.com/users/freak4pc","html_url":"https://github.com/freak4pc","followers_url":"https://api.github.com/users/freak4pc/followers","following_url":"https://api.github.com/users/freak4pc/following{/other_user}","gists_url":"https://api.github.com/users/freak4pc/gists{/gist_id}","starred_url":"https://api.github.com/users/freak4pc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/freak4pc/subscriptions","organizations_url":"https://api.github.com/users/freak4pc/orgs","repos_url":"https://api.github.com/users/freak4pc/repos","events_url":"https://api.github.com/users/freak4pc/events{/privacy}","received_events_url":"https://api.github.com/users/freak4pc/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":14,"created_at":"2018-02-09T22:03:41Z","updated_at":"2018-02-13T15:49:57Z","closed_at":null,"author_association":"OWNER","body":"This is in continued discussion to #29 & #27. \r\n\r\n## The Problem\r\n\r\nPeople who are the sole owners of a Cocoapod abandon their - still active - project, leaving the community without an ability to deploy new Pod versions of a library. This is a huge issue in RxGoogleMaps and has the potential to be an issue in other repos as well. \r\n\r\n## Proposed Solution\r\n\r\nIt might've seemed this discussion have \"died\", but I had a thought on how to resolve this for a while now, but just had to go through several steps to \"get the needed resources\".\r\n\r\nAfter several thoughts back and forth about this, I believe I've found a relatively \"perfect\" solution to make sure deploys can always be done by the community and not \"tied\" to a single owner. \r\n\r\nThis solution is composed of two parts : **Community-Controlled Deploys** *(mandatory)*, and **Auto Deploys** (optional, but extremely cool). \r\n\r\n### Community-Controlled Deploys \r\n\r\nAs some of you may know, we have a community domain for RxSwift, aptly named www.rxswift.org. It has been inactive for a while due to some issues but thanks to the very generous help of @bontoJR, it is now active again and I also have secondary access to it so I could work through some of the related details (and also http://slack.rxswift.org is now back, woohoo!)\r\n\r\nThe first part of the solution is extremely simple - Amend the [Checklist for Transferring Ownership](https://github.com/RxSwiftCommunity/contributors#checklist-for-transferring-ownership) to include an extra step: \r\n\r\n- [ ] Add `community@rxswift.org` as an owner of your project's Cocoapod by using `pod trunk add-owner community@rxswift.org`.\r\n\r\nThe email address community@rxswift.org is a simple email forwarder, currently forwarding only to myself, but it could forward to an arbitrary list of Highly-Active Community Leaders (such as @ashfurrow etc), and will let us address pushing a podspec up if an owner goes missing leaving us \"hanging dry\" \r\n\r\n### Auto Deploys\r\n\r\nThis is all great and solves the problem in the most basic of levels, but there is a second step we can go through to take this to the next level and make things really neat and smooth and that's Auto Deploys. \r\n\r\nThis description will be relevant to CircleCI, but should be applicable to Travis as well.\r\n\r\nWhenever `community@rxswift.org` is added as an owner, one of the forwarded-to owners will \"register\" a session for that repo (using `pod trunk register community@rxswift.org \"RxSwift Community\"`), in order to generate a token (found in `~/.netrc`) that can be used to deploy the Podspec later.\r\n\r\nThis token will be added as a **Secured Environment Variable** to your CI of choice with the key `COCOAPODS_TRUNK_TOKEN`. This will let the CI push a Podspec to trunk *as* RxSwift Community. \r\n\r\n<img width=\"751\" alt=\"ca3ebbf2-c995-497e-b7c1-36b86d612ebc\" src=\"https://user-images.githubusercontent.com/605076/36051807-04162f16-0df4-11e8-84cd-605f35ab65bb.png\">\r\n\r\nTo neatly wrap up this entire thing, adding a [\"Tag-level\" deployment script](https://github.com/RxSwiftCommunity/FakeRepo/blob/master/circle.yml#L20) in CircleCI to make sure **only** when a new tag (release) is pushed, CircleCI will build **and also push an updated podspec**. \r\n\r\nI've made a Fake Repo to test this and it works extremely well, as you can see in this build: https://circleci.com/gh/RxSwiftCommunity/FakeRepo/30 (see the \"pod trunk push\" phase at the bottom)\r\n\r\n<img width=\"748\" alt=\"6253aa0c-86cc-4b43-a945-29aa8af08f80\" src=\"https://user-images.githubusercontent.com/605076/36052217-6133b2c6-0df5-11e8-8c41-a627be4b78f9.png\">\r\n\r\nYou can also [experiment with my Fake Repo yourself, if you'd like](http://github.com/RxSwiftCommunity/FakeRepo). You can modify the podspec, push it to master and then creating a new \"Release\" will trigger a build on CircleCI and push up a podspec. Super smooth and makes sure all deploys of Podspecs are done automatically and are always coming from \"RxSwift Community\". \r\n\r\nI'd really appreciate your opinions on this (@ashfurrow @bobgodwinx @fpillet @RxSwiftCommunity/contributors) on if you think this is a viable solution, as I think it would easily resolve all of the issues we've been having around this.\r\n\r\nThanks for reading !"},"comment":{"url":"https://api.github.com/repos/RxSwiftCommunity/contributors/issues/comments/365308100","html_url":"https://github.com/RxSwiftCommunity/contributors/issues/44#issuecomment-365308100","issue_url":"https://api.github.com/repos/RxSwiftCommunity/contributors/issues/44","id":365308100,"user":{"login":"ashfurrow","id":498212,"avatar_url":"https://avatars3.githubusercontent.com/u/498212?v=4","gravatar_id":"","url":"https://api.github.com/users/ashfurrow","html_url":"https://github.com/ashfurrow","followers_url":"https://api.github.com/users/ashfurrow/followers","following_url":"https://api.github.com/users/ashfurrow/following{/other_user}","gists_url":"https://api.github.com/users/ashfurrow/gists{/gist_id}","starred_url":"https://api.github.com/users/ashfurrow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ashfurrow/subscriptions","organizations_url":"https://api.github.com/users/ashfurrow/orgs","repos_url":"https://api.github.com/users/ashfurrow/repos","events_url":"https://api.github.com/users/ashfurrow/events{/privacy}","received_events_url":"https://api.github.com/users/ashfurrow/received_events","type":"User","site_admin":false},"created_at":"2018-02-13T15:49:57Z","updated_at":"2018-02-13T15:49:57Z","author_association":"OWNER","body":"Yeah I was surprised by that too. Normally `pod trunk push` is _really_ parsimonious with its output. Maybe it detects its on a CI environment? Hmm. "}}
{"actor":{"display_login":"ashfurrow"}}