mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-11 15:57:32 +00:00

# Which Problems Are Solved The current maintained gRPC server in combination with a REST (grpc) gateway is getting harder and harder to maintain. Additionally, there have been and still are issues with supporting / displaying `oneOf`s correctly. We therefore decided to exchange the server implementation to connectRPC, which apart from supporting connect as protocol, also also "standard" gRCP clients as well as HTTP/1.1 / rest like clients, e.g. curl directly call the server without any additional gateway. # How the Problems Are Solved - All v2 services are moved to connectRPC implementation. (v1 services are still served as pure grpc servers) - All gRPC server interceptors were migrated / copied to a corresponding connectRPC interceptor. - API.ListGrpcServices and API. ListGrpcMethods were changed to include the connect services and endpoints. - gRPC server reflection was changed to a `StaticReflector` using the `ListGrpcServices` list. - The `grpc.Server` interfaces was split into different combinations to be able to handle the different cases (grpc server and prefixed gateway, connect server with grpc gateway, connect server only, ...) - Docs of services serving connectRPC only with no additional gateway (instance, webkey, project, app, org v2 beta) are changed to expose that - since the plugin is not yet available on buf, we download it using `postinstall` hook of the docs # Additional Changes - WebKey service is added as v2 service (in addition to the current v2beta) # Additional Context closes #9483 --------- Co-authored-by: Elio Bischof <elio@zitadel.com>
80 lines
2.3 KiB
YAML
80 lines
2.3 KiB
YAML
name: Build core
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
buf_version:
|
|
required: true
|
|
type: string
|
|
node_version:
|
|
required: true
|
|
type: string
|
|
outputs:
|
|
cache_key:
|
|
value: ${{ jobs.build.outputs.cache_key }}
|
|
cache_path:
|
|
value: ${{ jobs.build.outputs.cache_path }}
|
|
|
|
env:
|
|
cache_path: |
|
|
internal/statik/statik.go
|
|
internal/notification/statik/statik.go
|
|
internal/api/ui/login/static/resources/themes/zitadel/css/zitadel.css*
|
|
internal/api/ui/login/statik/statik.go
|
|
internal/api/assets/authz.go
|
|
internal/api/assets/router.go
|
|
openapi/v2
|
|
pkg/grpc/**/*.pb.*
|
|
pkg/grpc/**/*.connect.go
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
cache_key: ${{ steps.cache.outputs.cache-primary-key }}
|
|
cache_path: ${{ env.cache_path }}
|
|
steps:
|
|
-
|
|
uses: actions/checkout@v4
|
|
-
|
|
uses: actions/cache/restore@v4
|
|
timeout-minutes: 1
|
|
continue-on-error: true
|
|
id: cache
|
|
with:
|
|
key: core-${{ hashFiles( 'go.*', 'openapi', 'cmd', 'pkg/grpc/**/*.go', 'proto', 'internal') }}
|
|
restore-keys: |
|
|
core-
|
|
path: ${{ env.cache_path }}
|
|
-
|
|
if: ${{ steps.cache.outputs.cache-hit != 'true' }}
|
|
uses: bufbuild/buf-setup-action@v1
|
|
with:
|
|
github_token: ${{ github.token }}
|
|
version: ${{ inputs.buf_version }}
|
|
|
|
-
|
|
# node to install sass
|
|
if: ${{ steps.cache.outputs.cache-hit != 'true' }}
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: ${{ inputs.node_version }}
|
|
-
|
|
if: ${{ steps.cache.outputs.cache-hit != 'true' }}
|
|
run: npm install -g sass
|
|
|
|
-
|
|
if: ${{ steps.cache.outputs.cache-hit != 'true' }}
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
go-version-file: 'go.mod'
|
|
-
|
|
if: ${{ steps.cache.outputs.cache-hit != 'true' }}
|
|
run: make core_build
|
|
-
|
|
if: ${{ steps.cache.outputs.cache-hit != 'true' }}
|
|
uses: actions/cache/save@v4
|
|
with:
|
|
key: ${{ steps.cache.outputs.cache-primary-key }}
|
|
path: ${{ env.cache_path }}
|
|
|