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