-
Notifications
You must be signed in to change notification settings - Fork 94
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
protobuf: automate derived file generation
* Use the bufbuild/buf tool to: * Lint the protobuf schema. * Check for breaking changes. * Configure the generation of derived Python files. * Adds a GitHub action which automates the checking and generation of derived files and commits the results back on pull request branches.
- Loading branch information
1 parent
a967c00
commit ea0e306
Showing
16 changed files
with
238 additions
and
126 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
exclude_paths: | ||
- 'etc/**' | ||
- 'tests/**' | ||
- 'cylc/flow/**_pb2.py' | ||
- 'cylc/flow/network/protobuf/**_pb2.py' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
name: protobuf | ||
# CI tests to run against the protobuf schema on change: | ||
|
||
on: | ||
# run for any PRs raising changes to the protobuf files or setup | ||
pull_request: | ||
paths: | ||
- 'cylc/flow/network/protobuf/**' | ||
|
||
jobs: | ||
protobuf: | ||
runs-on: ubuntu-latest | ||
timeout-minutes: 10 | ||
|
||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
with: | ||
# we need all of the commits on the PR branch in order to be able to add new ones | ||
fetch-depth: 100 | ||
|
||
- name: Configure git | ||
uses: cylc/release-actions/configure-git@v1 | ||
|
||
- name: Install Protobuf | ||
uses: mamba-org/setup-micromamba@v1 | ||
with: | ||
# install protobuf into a mamba env (note use shell = "bash -el {0}" | ||
# to access this envionment) | ||
environment-name: protobuf | ||
create-args: protobuf | ||
init-shell: bash | ||
|
||
- name: Install bufbuild/buf | ||
run: | | ||
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" # activate homebrew | ||
# NOTE: bufbuild does exist on conda-forge but hasn't been updated for a while | ||
brew install bufbuild/buf/buf | ||
- name: Lint | ||
run: | | ||
# lint .proto files | ||
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" # activate homebrew | ||
cd cylc/flow/network/protobuf | ||
buf lint | ||
- name: Compatibility | ||
shell: bash -el {0} | ||
run: | | ||
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" # activate homebrew | ||
cd cylc/flow/network/protobuf | ||
# NOTE: there is currently no process for committing a breaking change. | ||
# If a breaking change is needed: | ||
# - Increment the Cylc API version number. | ||
# - Increment the protobuf schema version number to match. | ||
# - Increment the API number filter in cylc-uiserver. | ||
# - Bypass this step of the workflow. | ||
buf breaking \ | ||
--against 'https://github.com/cylc/cylc-flow.git#tag=${{ github.base_ref }},subdir=cylc/flow/network/protobuf' | ||
- name: Build | ||
shell: bash -el {0} | ||
run: | | ||
# generate .py and .pyi files from the .proto files | ||
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" # activate homebrew | ||
micromamba activate protobuf | ||
cd cylc/flow/network/protobuf | ||
buf generate | ||
- name: Commit & Push | ||
run: | | ||
if [[ -z $(git diff --stat) ]]; then | ||
echo '::error:: No functional changes made to the protobuf schema' | ||
exit 0 | ||
else | ||
echo '::info:: pushing update commit' | ||
git add -u | ||
git commit -m 'protobuf: updating generated files' | ||
git remote add pr https://github.com/${{ github.event.pull_request.head.repo.owner.login }}/cylc-flow | ||
git push pr HEAD:${{ github.head_ref }} | ||
exit 0 | ||
fi |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
# file containing protobuf configuration | ||
|
||
version: v2 | ||
|
||
plugins: | ||
- protoc_builtin: python | ||
out: . | ||
|
||
- protoc_builtin: pyi | ||
out: . |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
# file containing protobuf configuration | ||
|
||
version: v2 | ||
|
||
lint: | ||
use: | ||
- DEFAULT | ||
|
||
breaking: | ||
use: | ||
- FILE |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Large diffs are not rendered by default.
Oops, something went wrong.
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters