Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/grafana/security-patch-actions
Security Patching Automation
https://github.com/grafana/security-patch-actions
backstage-include
Last synced: 29 days ago
JSON representation
Security Patching Automation
- Host: GitHub
- URL: https://github.com/grafana/security-patch-actions
- Owner: grafana
- Created: 2023-06-26T14:56:32.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-07-02T15:26:42.000Z (4 months ago)
- Last Synced: 2024-09-28T15:21:05.412Z (about 1 month ago)
- Topics: backstage-include
- Language: Shell
- Homepage:
- Size: 85.9 KB
- Stars: 0
- Watchers: 11
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# Security Patch Actions
Here live the Github Actions that handle the automation for [Grafana's security patching][sp].
There are 2 sets of Action files:
- `.github/workflows` contains Actions that perform the mirroring, patching, and patch verifications.
- `external-workflows` contains Actions meant to be dropped into the upstream repo's `.github/workflows` folder, intended only to trigger the downstream pipelines in this repo.Additionally, `test-scripts` includes Bash scripts that automate some of the headache away of testing this.
All scripts are hard-coded to run against `grafana/grafana-ci-sandbox`.## Testing
There are a set of scripts in test-scripts that can help to test against grafana-ci-sandbox, using the develop branch of this project.
They assume that you have the following 3 repos cloned in the same directory that you have the `security-patch-actions` repo cloned to:- `grafana/grafana-ci-sandbox`
- `grafana/grafana-ci-sandbox-security-mirror`
- `grafana/grafana-ci-sandbox-security-patches`All Bash scripts are hard coded to run against `grafana/grafana-ci-sandbox`.
### Setup test env
- `setup-branch.sh ` sets up grafana-ci-sandbox to run against the develop branch of this repo.
- `create-grafana-ci-sandbox-pr.sh ` creates a PR in grafana-ci-sandbox to the branch supplied (default: main)
- `create-grafana-ci-sandbox-security-mirror-pr.sh ` creates a PR in grafana-ci-sandbox-security mirror to the branch supplied (default: main)
- `create-merge-conflict-pr.sh ` will create a PR to grafana-ci-sandbox that will conflict with the PR created by `create-grafana-ci-sandbox-security-mirror-pr.sh`, for testing conflicts## Provided actions
### `create-patch.yml`
Creates a git patch from the diff between one branch and another, and uploads it to a patch repository. Meant to create security patches from pull requests.
```
gh workflow run --repo grafana/security-patch-actions create-patch.yml \
-f repo=grafana/grafana-ci-sandbox-security-mirror \
-f patch_repo=grafana/grafana-ci-sandbox-security-patches \
-f src_ref= \
-f patch_ref=v10.1.x \
-f patch_prefix=
```### `publish-patch.yml`
Publishes a single patch from a patches repository onto a ref in a destination repository.
This does not push to that branch directly but creates a pull-request.```
gh workflow run --repo grafana/security-patch-actions publish-patch.yml \
-f dest_repo=grafana/grafana-ci-sandbox-security-mirror \
-f patch_repo=grafana/grafana-ci-sandbox-security-patches \
-f ref=v10.1.x \
-f patch_name=my-patch.patch
```
### `mirror-branch.yml`Used for mirroring a single branch from a source repository over to a specific destination repository.
There is also an optional input called `with_conficts` which will also include conflicting files in the patch commit of the destination repository.
This should allow testing of conflicting patches in a low-risk environment.
Note that this will execute a force-push and therefore overwrite existing changes in the destination repository.```
gh workflow run --repo grafana/security-patch-actions mirror-branch.yml \
-f src_repo=grafana/grafana-ci-sandbox \
-f dest_repo=grafana/grafana-ci-sandbox-security-mirror \
-f ref=v10.1.x
```
### `mirror-branch-and-apply-patches.yml`Mirrors a specific branch from the source repository to the destination repository and applies all the patches that are relevant for that branch.
```
gh workflow run --repo grafana/security-patch-actions mirror-branch-and-apply-patches.yml \
-f src_repo=grafana/grafana-ci-sandbox \
-f dest_repo=grafana/grafana-ci-sandbox-security-mirror \
-f patch_repo=grafana/grafana-ci-sandbox-security-patches \
-f ref=v10.1.x
```### `mirror-tag.yml`
Used for mirroring a single tag from a source repository over to a specific destination repository.
```
gh workflow run --repo grafana/security-patch-actions mirror-tag.yml \
-f src_repo=grafana/grafana-ci-sandbox \
-f dest_repo=grafana/grafana-ci-sandbox-security-mirror \
-f ref=v10.0.3
```### `test-patches.yml`
This workflow will try to apply all security patches to a specific ref in the source repository to check for conflicts.
```
gh workflow run --repo grafana/security-patch-actions test-patches.yml \
-f src_repo=grafana/grafana-ci-sandbox \
-f src_ref=v10.0.x \
-f patch_repo=grafana/grafana-ci-sandbox-security-patches \
-f patch_ref=v10.0.x
```## Provided workflow templates
These are templates you can drop into your project's workflows to enable mirroring to a `${REPO_OWNER}/${REPO_NAME}-security-mirror` repository.
### `create-security-patch-from-security-mirror.yml`
Runs the `create-patch.yml` action against a pull-request targeting a version branch or main in the security-mirror.
### `pr-patch-check.yml`
Runs the `test-patches.yml` action against a newly created pull-request targeting a release branch (or main).
It expects the security patches to be stored inside a `${REPO_OWNER}/${REPO_NAME}-security-patches` repository.### `sync-mirror.yml`
Runs the `mirror-branch-and-apply-patches.yml` workflow when a pull-request is closed that targets a release branch (or main).
It expects the security patches to be stored inside a `${REPO_OWNER}/${REPO_NAME}-security-patches` repository and the mirror to be available in `${REPO_OWNER}/${REPO_NAME}-security-mirror`.[sp]: https://github.com/grafana/grafana-delivery/tree/main/docs/topics/security-patching