-
Notifications
You must be signed in to change notification settings - Fork 66
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
How to enable Partial Publishing in a CI/CD workflow? #821
Comments
Thinking about this, it's even more complicated:
|
Ultimately, what I want to do with this issue is figure out how to catch errors when moving from running quality assurance on an Right now I feel like there is no good answer for the above. For the devsite, we have both staging and production in our helix-config. So when our continuous deployment kicks in, it's all or nothing. While rolling back is easy, it still exposes us to pushing bugs to production. That's what I want to avoid. My old-fashioned-website-building mind therefore fell back to what was familiar: deploy to a publicly accessible URL that is considered a staging environment and run tests against it before deploying to production. So my off-the-top-of-my-head suggestion was: partial deploys? That is, having the ability to deploy staging strains separately from production strains. That would solve my problem. In the end I lean on y'all to tell me how to use helix 😄 |
"Partial publish" was just my suggestion on a solution, but doesn't capture the underlying problem. The problem is: how to deploy/publish a helix site, have it be powered by Fastly (and not the simulator), give me the ability to verify that version works properly and finally let me deploy/publish to my production domain. Bonus points for a solution to the above problem that works with a pull request system! That is, a pull request that passes |
Maybe a quick solution would be to have a flag for It would then merge the filtered list of strains with the list of strains of the current |
As long as you are disciplined about your strain names and don't have developers who take liberty with the conditions, that might work. |
That sounds good to me. I was planning on adding static analysis tests for the helix config to ensure that our |
Do y'all have a plan to implement anything for this? Suffering on the devsite end due to lack of support for this 😞 |
why not have a distinct |
@filmaj yes, I'll start on this today. @tripodsan I don't think it is a good idea to replicate the old pattern of Having a singular staging branch would make it harder to gradually release new features, because you'd have to cherry-pick which commits from the By having one single config, albeit with flight control to determine what can get published from which branch, you have everything in one place, and can easily assess the impact of a single branch. |
…function required for adobe/helix-cli#821
I would prefer not to have the oldschool gitflow-style of environment management via git branches, as that makes the overall configuration across domains/environments less visible. However, if that is the recommended approach with helix in the end, we would adopt it on the devsite side. |
@filmaj can you elaborate? |
If we can ensure a CD flow across multiple environments such that all the environment information sits in one place (i.e. one config file), and not spread that info across separate branches, that would be preferable. If we use different branches for different environments, then a developer needs to check out different branches to see details around different environments. To me that is not ideal. |
I think the monolithic huge |
maybe we can save-guard against this, by adding a version: 1.0
domains:
- "*.project-helix.dev"
strains:
... by default, hlx publish will fetch the domains of the service first and match them with the config. if diffrent, it aborts the publish. |
We could yes. That's maybe the point where we might need to re-think the whole process, we start having too many dimensions: fastly service id, fastly domain, strain name, regex on strain names to classify the strains, strain domains, strain url, strain condition... and we still not have a good and simple way to describe a dev, stage, prod setup. |
Wouldn't that mean that the config file sits somehow outside of the version control system (if it can't be branched)? I think with the mechanism in #834 we have a way to restrict what can take effect in non-master branches. In addition, you could use the strain pinning feature (with the |
Great idea; we ended up implementing a set of basic static analysis tests for the devsite's On separate but related topic to this issue, this came up in a discussion with @simonwex yesterday. I want to plant a seed with y'all on the Helix team. One use case we want to cover is the following:
For content authors managing content repos, I think it would be good to study this use case from the content author perspective. What if content authors are working on multiple changes simultaneously? Imagine a content repo with several working branches; what would the preview flow through the devsite look like for them? My naive wish/suggestion would be something like: each content repo branch is available on a different (perhaps randomly-generated) subdomain in a stage environment. This also applies to me-as-a-devsite-developer: I want to make a change (send a PR) to the devsite and preview the site on a publicly-available URL before accepting the change (that's what this issue is discussing). What if I have multiple PRs happening at the same time? While the suggestions for this issue unblock me in the short term (I can manage a single staging environment and juggle different PRs between that single environment myself through automation), does that enable a longer-term vision of multiple content repos, possibly each containing multiple versions, that each need to be previewable, as well as the devsite itself needing multiple versions to be previewable? I wanted to plant this seed, especially with the upcoming hackathon. |
# [2.1.0](v2.0.5...v2.1.0) (2019-05-08) ### Bug Fixes * **package:** update snyk to version 1.163.0 ([3e96915](3e96915)), closes [#841](#841) * **publish:** fix loggers ([1db7669](1db7669)) * **publish:** update description of `--exclude` param ([adf486f](adf486f)) ### Features * **git:** helper functions for getting the contents of a file at a ref ([0b349d8](0b349d8)) * **publish:** add new --only and --exclude flags for publish command line ([8739ef4](8739ef4)) * **publish:** implement filtering with `--only` and `--exclude` ([e94ea52](e94ea52)), closes [#821](#821)
🎉 This issue has been resolved in version 2.1.0 🎉 The release is available on: Your semantic-release bot 📦🚀 |
@filmaj [Yesterday at 9:05 PM]
@trieloff [10 hours ago]
@trieloff [10 hours ago]
@trieloff [10 hours ago]
@trieloff [10 hours ago]
@dominique-pfister [8 hours ago]
@trieloff [8 hours ago]
@dominique-pfister [8 hours ago]
@filmaj [1 hour ago]
@filmaj [38 minutes ago]
@filmaj [11 minutes ago]
@trieloff [6 minutes ago]
@trieloff [4 minutes ago]
The text was updated successfully, but these errors were encountered: