Skip to content
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

Add new private channel publishing guardrails #14167

Open
5 tasks
mmitche opened this issue Oct 26, 2023 · 4 comments
Open
5 tasks

Add new private channel publishing guardrails #14167

mmitche opened this issue Oct 26, 2023 · 4 comments
Assignees
Labels
Ops - Service Maintenance Used to track issues related to maintaining the services .NET Eng Supports

Comments

@mmitche
Copy link
Member

mmitche commented Oct 26, 2023

  • This issue is blocking
  • This issue is causing unreasonable pain

As extra insurance, Arcade publishing should refuse to publish to public endpoints if the commit being published is not anonymously accessible. I could see this implemented in a couple ways:

Darc

  • Darc would attempt to anonymously access to commit of the BAR build id that is about to be published. This would happen locally as well as in CI automation, assuming that a local dev has updated their darc client.
  • If the commit is anonymously accessible, any channel is permissible
  • If the commit is not anonymously accessible, only internal channels are permissible.

Because publishing endpoint data is kept in arcade, this would require some kind of DB addition. On that note, I don't love it.

Arcade

  • The maestro publishing logic would attempt to anonymously access to commit of the BAR build id that is about to be published.
  • For all channels to be published to, if any are public (this metadata is on the channel config) and the commit is not anonymously accessible, we fail.

This method does have one annoying side effect. Dev builds of branches pushed only to AzDO (e.g. for testing arcade changes) would not be able to be published to the public "General Testing" channel. I propose that this would be deal with by adding an override switch to darc that would explicitly pass the "SkipSafetyChecks" parameter to the build task.

Verdict

I think going with the arcade publishing method is best.

Release Note Category

  • Feature changes/additions
  • Bug fixes
  • Internal Infrastructure Improvements

Release Note Description

@mmitche
Copy link
Member Author

mmitche commented Oct 26, 2023

@mmitche
Copy link
Member Author

mmitche commented Oct 26, 2023

@mmitche
Copy link
Member Author

mmitche commented Oct 26, 2023

And the safety check is never executed.

@missymessa missymessa added the Ops - Service Maintenance Used to track issues related to maintaining the services .NET Eng Supports label Nov 16, 2023
@garath garath added the Ops - P2 Operations task, priority 2 label Mar 25, 2024
@garath garath removed the Ops - P2 Operations task, priority 2 label Apr 9, 2024
@dkurepa dkurepa self-assigned this Sep 2, 2024
@dkurepa
Copy link
Member

dkurepa commented Jan 10, 2025

The main part of this issue is in #15041. This PR isn't merged yet and might need a bit more work, but what it does it it adds the internal repo check, along with an ignore check flag.
The ignore check flag would be set to true in the beginning, this is because we'll have some internal repos like wpf-int that will still need to publish to public channels.
This is where the second currently alive PR comes in dotnet/arcade-services#4013. The PR adds a darc flag that makes it so we pass an ignore check parameter to repos that need to ignore it.

So what we need to do is:

  • Finish and merge the first, arcade PR
  • Merge the darc PR
  • Figure out the list of repos that need to ignore the check
  • Make sure the flag is set everywhere
  • Set the default value of ignore check to false

These changes will also have to be communicated to our customers

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Ops - Service Maintenance Used to track issues related to maintaining the services .NET Eng Supports
Projects
None yet
Development

No branches or pull requests

4 participants