mirror of
https://github.com/google/brotli.git
synced 2026-07-08 17:56:58 +00:00
Add BCR publishing configuration for brotli and brotli_go modules
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
This commit is contained in:
69
.bcr/README.md
Normal file
69
.bcr/README.md
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
# Bazel Central Registry Publishing Configuration
|
||||||
|
|
||||||
|
This directory contains the configuration files for publishing brotli modules to the Bazel Central Registry (BCR).
|
||||||
|
|
||||||
|
## Modules
|
||||||
|
|
||||||
|
This repository publishes two modules to BCR:
|
||||||
|
|
||||||
|
1. **brotli** (root) - The main Brotli C library
|
||||||
|
2. **brotli_go** (go/) - Go bindings for Brotli
|
||||||
|
|
||||||
|
Each module has its own set of template files under `.bcr` and `.bcr/go` respectively.
|
||||||
|
|
||||||
|
## Files
|
||||||
|
|
||||||
|
### Root module (brotli)
|
||||||
|
- **metadata.template.json**: Metadata about the brotli module including homepage, maintainers, and repository location
|
||||||
|
- **source.template.json**: Template for generating source archive URLs for releases
|
||||||
|
- **presubmit.yml**: BCR CI configuration that defines build and test tasks to validate the module
|
||||||
|
|
||||||
|
### Go module (brotli_go)
|
||||||
|
- **go/metadata.template.json**: Metadata for the brotli_go module
|
||||||
|
- **go/source.template.json**: Source configuration with path to the go subdirectory
|
||||||
|
- **go/presubmit.yml**: BCR CI configuration for the Go module
|
||||||
|
|
||||||
|
### Shared
|
||||||
|
- **config.yml**: Configuration specifying both modules via moduleRoots
|
||||||
|
- **README.md**: This file
|
||||||
|
|
||||||
|
## Setup (One-time)
|
||||||
|
|
||||||
|
Before you can publish to BCR, you need to set up the following:
|
||||||
|
|
||||||
|
1. **Fork the Bazel Central Registry**
|
||||||
|
- Fork https://github.com/bazelbuild/bazel-central-registry to your GitHub account
|
||||||
|
|
||||||
|
2. **Create a Personal Access Token**
|
||||||
|
- Go to GitHub Settings > Developer settings > Personal access tokens > Tokens (classic)
|
||||||
|
- Click "Generate new token (classic)"
|
||||||
|
- Select scopes: `repo` and `workflow`
|
||||||
|
- Generate the token and copy it
|
||||||
|
|
||||||
|
3. **Add the token to repository secrets**
|
||||||
|
- Go to the brotli repository Settings > Secrets and variables > Actions
|
||||||
|
- Click "New repository secret"
|
||||||
|
- Name: `BCR_PUBLISH_TOKEN`
|
||||||
|
- Value: Paste the token from step 2
|
||||||
|
- Click "Add secret"
|
||||||
|
|
||||||
|
## Publishing Process
|
||||||
|
|
||||||
|
To publish new versions of both modules to BCR:
|
||||||
|
|
||||||
|
1. Create a GitHub release with a tag (e.g., `v1.2.1`)
|
||||||
|
2. Go to the Actions tab in GitHub
|
||||||
|
3. Select the "Publish to BCR" workflow
|
||||||
|
4. Click "Run workflow"
|
||||||
|
5. Enter the release tag name (e.g., `v1.2.1`)
|
||||||
|
6. Enter your BCR fork (e.g., `yourusername/bazel-central-registry`)
|
||||||
|
7. Click "Run workflow"
|
||||||
|
|
||||||
|
The workflow will automatically create pull requests to the Bazel Central Registry for both modules.
|
||||||
|
|
||||||
|
## References
|
||||||
|
|
||||||
|
- [Bazel Central Registry](https://github.com/bazelbuild/bazel-central-registry)
|
||||||
|
- [publish-to-bcr Documentation](https://github.com/bazel-contrib/publish-to-bcr)
|
||||||
|
- [Bzlmod User Guide](https://bazel.build/external/module)
|
||||||
|
- [Multi-module Publishing](https://github.com/bazel-contrib/publish-to-bcr/tree/main/templates#optional-configyml)
|
||||||
8
.bcr/config.yml
Normal file
8
.bcr/config.yml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
# BCR configuration file for publish-to-bcr
|
||||||
|
fixedReleaser:
|
||||||
|
login: eustas
|
||||||
|
email: eustas@google.com
|
||||||
|
# Publish both the main brotli module and the Go bindings module
|
||||||
|
moduleRoots:
|
||||||
|
- "."
|
||||||
|
- "go"
|
||||||
14
.bcr/go/metadata.template.json
Normal file
14
.bcr/go/metadata.template.json
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"homepage": "https://github.com/google/brotli",
|
||||||
|
"maintainers": [
|
||||||
|
{
|
||||||
|
"email": "eustas@google.com",
|
||||||
|
"github": "eustas",
|
||||||
|
"name": "Evgenii Kliuchnikov",
|
||||||
|
"github_user_id": 203457
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"repository": ["github:google/brotli"],
|
||||||
|
"versions": [],
|
||||||
|
"yanked_versions": {}
|
||||||
|
}
|
||||||
19
.bcr/go/presubmit.yml
Normal file
19
.bcr/go/presubmit.yml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
matrix:
|
||||||
|
platform:
|
||||||
|
- debian10
|
||||||
|
- ubuntu2004
|
||||||
|
- macos
|
||||||
|
- macos_arm64
|
||||||
|
bazel:
|
||||||
|
- 8.x
|
||||||
|
- 7.x
|
||||||
|
- 6.x
|
||||||
|
tasks:
|
||||||
|
verify_targets:
|
||||||
|
name: Verify build targets
|
||||||
|
platform: ${{ platform }}
|
||||||
|
bazel: ${{ bazel }}
|
||||||
|
build_targets:
|
||||||
|
- '@brotli_go//cbrotli'
|
||||||
|
test_targets:
|
||||||
|
- '@brotli_go//cbrotli:cbrotli_test'
|
||||||
5
.bcr/go/source.template.json
Normal file
5
.bcr/go/source.template.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"integrity": "",
|
||||||
|
"strip_prefix": "{REPO}-{VERSION}/go",
|
||||||
|
"url": "https://github.com/{OWNER}/{REPO}/archive/refs/tags/{TAG}.tar.gz"
|
||||||
|
}
|
||||||
14
.bcr/metadata.template.json
Normal file
14
.bcr/metadata.template.json
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"homepage": "https://github.com/google/brotli",
|
||||||
|
"maintainers": [
|
||||||
|
{
|
||||||
|
"email": "eustas@google.com",
|
||||||
|
"github": "eustas",
|
||||||
|
"name": "Evgenii Kliuchnikov",
|
||||||
|
"github_user_id": 203457
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"repository": ["github:google/brotli"],
|
||||||
|
"versions": [],
|
||||||
|
"yanked_versions": {}
|
||||||
|
}
|
||||||
21
.bcr/presubmit.yml
Normal file
21
.bcr/presubmit.yml
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
matrix:
|
||||||
|
platform:
|
||||||
|
- debian10
|
||||||
|
- ubuntu2004
|
||||||
|
- macos
|
||||||
|
- macos_arm64
|
||||||
|
- windows
|
||||||
|
bazel:
|
||||||
|
- 8.x
|
||||||
|
- 7.x
|
||||||
|
- 6.x
|
||||||
|
tasks:
|
||||||
|
verify_targets:
|
||||||
|
name: Verify build targets
|
||||||
|
platform: ${{ platform }}
|
||||||
|
bazel: ${{ bazel }}
|
||||||
|
build_targets:
|
||||||
|
- '@brotli//:brotli'
|
||||||
|
- '@brotli//:brotlicommon'
|
||||||
|
- '@brotli//:brotlidec'
|
||||||
|
- '@brotli//:brotlienc'
|
||||||
5
.bcr/source.template.json
Normal file
5
.bcr/source.template.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"integrity": "",
|
||||||
|
"strip_prefix": "{REPO}-{VERSION}",
|
||||||
|
"url": "https://github.com/{OWNER}/{REPO}/archive/refs/tags/{TAG}.tar.gz"
|
||||||
|
}
|
||||||
29
.github/workflows/publish_to_bcr.yaml
vendored
Normal file
29
.github/workflows/publish_to_bcr.yaml
vendored
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
name: Publish to BCR
|
||||||
|
|
||||||
|
on:
|
||||||
|
# Manually trigger the publish workflow
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
tag_name:
|
||||||
|
description: Release tag to publish to the Bazel Central Registry
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
registry_fork:
|
||||||
|
description: Registry fork to push to (e.g., username/bazel-central-registry)
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
publish:
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
id-token: write
|
||||||
|
attestations: write
|
||||||
|
uses: bazel-contrib/publish-to-bcr/.github/workflows/publish.yaml@v2
|
||||||
|
with:
|
||||||
|
tag_name: ${{ inputs.tag_name }}
|
||||||
|
registry_fork: ${{ inputs.registry_fork }}
|
||||||
|
# Set to false since not using the release_ruleset workflow
|
||||||
|
attest: false
|
||||||
|
secrets:
|
||||||
|
publish_token: ${{ secrets.BCR_PUBLISH_TOKEN }}
|
||||||
Reference in New Issue
Block a user