Feature request: Add project-level option to prevent tagged builds from being deleted
<!--IssueSummary start-->
<details>
<summary>
Everyone can contribute. [Help move this issue forward](https://handbook.gitlab.com/handbook/marketing/developer-relations/contributor-success/community-contributors-workflows/#contributor-links) while earning points, leveling up and collecting rewards.
</summary>
- [Close this issue](https://contributors.gitlab.com/manage-issue?action=close&projectId=278964&issueIid=16490)
</details>
<!--IssueSummary end-->
### Description
In many environments, Git tags are considered sacred. We deliver binaries built from GitLab CI when tags are pushed. *"Tagged builds"* (i.e. builds triggered by Git tags) should be considered sacred as well.
Currently, it is simply too easy for "tagged" builds to be removed:
1. The "remove build" button is available on tagged builds
- *I believe this is even enabled at the* ***developer*** *level.*
2. It is difficult to enable artifact expiration while keeping tagged builds.
- One must split their build job into `only: tags` and `except: tags` parts
3. Because of the large disk space requirements, there are issues open for managing artifacts at a site-level. One must also consider tagged builds in these scenarios:
- https://gitlab.com/gitlab-org/gitlab-ce/issues/23366
- https://gitlab.com/gitlab-org/gitlab-ce/issues/18351
4. Tools that leverage the GitLab API could also accidentally remove tagged builds
- My tool, [**`gitlab-artifact-cleanup`**](https://github.com/JonathonReinhart/gitlab-artifact-cleanup) specifically never removes tagged builds
I first raised this concern during the development of the artifact expiration feature: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/4200#note_12118456. This behavior has been requested by a number of people:
- https://gitlab.com/gitlab-org/gitlab-ce/issues/3439#note_2742296
- https://gitlab.com/gitlab-org/gitlab-ce/issues/3439#note_2742700
- https://gitlab.com/gitlab-org/gitlab-ce/issues/3439#note_2799721
- https://gitlab.com/gitlab-org/gitlab-ce/issues/3439#note_4921935
- https://gitlab.com/gitlab-org/gitlab-ce/issues/5572#note_4891084
- https://gitlab.com/gitlab-org/gitlab-ce/issues/5572#note_4891172
### Proposal
**Add project-level option to prevent tagged builds from being deleted.**
This option would, for tagged builds:
- Override artifact expiration -- the build will never be deleted
- Prevent users from clicking the "erase build" button
- Prevent the build from being erased via the API
- Prevent the build from being erased via any future "cleanup" admin tools
There may be a desire to override this feature, but only by project owners, and with extra confirmation.
<!-- triage-serverless v3 PLEASE DO NOT REMOVE THIS SECTION -->
*This page may contain information related to upcoming products, features and functionality.
It is important to note that the information presented is for informational purposes only, so please do not rely on the information for purchasing or planning purposes.
Just like with all projects, the items mentioned on the page are subject to change or delay, and the development, release, and timing of any products, features, or functionality remain at the sole discretion of GitLab Inc.*
<!-- triage-serverless v3 PLEASE DO NOT REMOVE THIS SECTION -->
issue