-
Notifications
You must be signed in to change notification settings - Fork 10
[Docs] Added Use Case to the Github Action README #3
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
base: main
Are you sure you want to change the base?
Conversation
Hi @SxMShaDoW,
I've produced a few things to get the ball rolling for our dev users, would you like to take a look and see if it answers most of the questions? Setting up your first CI/CD pipeline with GitHub Actions (YouTube) |
Hi @chiarnglin, P.S. I thought I would respond from my partner account instead of my personal one for this one - since this is where I use source control the most. Happy to put on my "value add" hat and answer some pain points. I looked through the pipeline sample and your youtube video. You are doing great work! Hopefully my response helps articulate some of the pain points. The biggest question I am struggling with is "When to use Github Actions vs Flow Designer + CICD Spokes/Custom Spokes?". I can't articulate the value of Github Actions over Flow Designer, just yet. Does Github Actions help in non git related cases (such as Instance Scans on Update Sets)? The second question I am struggling with is "When do I move things to test vs doing things in dev". Your video shows that your actions in dev are: (1) Apply remote changes and (2) Publish. I believe that we should be incorporating Instance Scans and ATFs before we publish on Dev. This will prevent unnecessary rollbacks. The third question I am struggling with is "How does a developer handle skipped records on application deploys?". Let's say you have a BR that is already in production, that needs some modification. For simplicity, let's say that a junior engineer modifies the change in an update set in dev and manually in test. In the "update set world", a "local update is newer" action will show up when retrieving update sets from dev. In the scoped app world, a skip record is generated. If an ATF is expected to pass for that BR, it may fail and cause a rollback. How would one handle that scenario with github actions? My fourth question (un-related to CICD specifically) is: 'How does a "global scoped bundle" handle skip logs/upgrades?" Let's say I create a Global scoped app called "New Global". If I make a change in something that is in "legacy" global scope, I move the application file over to the "New Global" (reasoning: to take advance of CICD and source control). When I do an upgrade, how will those skip logs show up? Should I just be de-activate "legacy" global files and instead copy it over instead to "New Global" and deal with skip records later? Do I still use update sets in "legacy" global - if the file originated from "legacy" global? You asked 3 questions below, so I thought I would add some clarity:
|
Hi Dorian, I've previously tried to clarify the use cases for both the CI/CD spoke on Flow Designer, as well as Team Development + Update Sets vs the new app-based model and Source Control Git branches in the following articles:
I fully get that it's hard to discover those, so perhaps we need to link them in a more discoverable way to these external integrations we are building. But to answer a few of your questions succinctly:
Thanks, |
The devproductivity docs you linked were really helpful. It answered most of my questions. The claims resolution is very interesting and I will need to sink my teeth in it more. I am still confused on the following use case:
|
once you publish to application repository, then install to another instance (Test or Prod), it doesn't live in sys_app table anymore, it lives in sys_store_app, and you can no longer "develop" on it. the app client instance will always only have a version of the app, not a version of the app + changes made on that instance. |
@chiarnglin - I agree that it can't be "developed" on, but what is stopping an admin from changing scope to the app in the picker and then making changes in the default update set of that app (Test or Prod)? Am I missing something? |
@dorian-cask hmmm i don't think you can make changes to a sys_store_app that way in test or prod, but @bmeeder22 can you help with describing any limitations we've implemented to ensure that applications don't end up with "merge conflicts" in the above case? |
Hi @dorian-cask, This is a great question and one that is asked quite frequently from people moving from update sets. The entire idea of applications inside of ServiceNow is that they act as the "source of truth". What that means is that upon application load we do not check for "collisions" as you see in update sets. The idea is that your application contains the complete subset of records contained in the application and that is what will load. So going back to your scenario where Junior Dev changes a BR on test and then loads the application which has a different version of the BR, we won't throw any conflicts we will just override that Junior Devs version with the version in the app. If any developers want to make changes to records belonging to an application they should ALWAYS update the application itself and push via SC or publish via app repo to promote those changes to other envs. Thanks, PS claimsClaims are designed to help negotiate conflicts between apps since multiple apps could modify the same file in the same scope. In the example above of a developer manually/update set editing in a test instance you would still observe the above behavior. |
PS pt2: If you want more clarification around claim resolution between apps I would be happy to provide that and answer your questions. |
Finally to answer this question:
Nothing is stopping them, that is why they have |
Hi @bmeeder22 - thanks for the clarity. Claim is interesting. The only question I have is around claim resolution is between Global and "Global Bundle" (a global scoped app to hold all the customizations we may make instead of using "Legacy" Global). Are there going to be claim issues on upgrades if we go that path? |
^ Perfect - I like source of truth changes. |
Glad you like it! So your question appears to be around the difference between things in the Basically, global apps are a way to allow customers who need to modify global files to switch from update sets to an application driven model, but since everything is still in the same scope from a system level we need the extra protections of claims to handle those conflicts. |
I think the Github Action is awesome!
I was struggling to understand the use cases though, so I tried brainstorming a few of them. If I am off target, maybe you could write up a few better ones.
This PR was mostly to get the conversation started, I will not be offended if the PR doesn't get accepted.