diff --git a/.env b/.env index 54b37a6..b581718 100644 --- a/.env +++ b/.env @@ -3,6 +3,6 @@ # You SHOULD specify point releases here so that build time and run time Erlang/OTPs # are the same. See: https://github.com/erlware/relx/pull/902 SERVICE_NAME=bender -OTP_VERSION=24.2.0 +OTP_VERSION=24.3.4 REBAR_VERSION=3.18 -THRIFT_VERSION=0.14.2.2 +THRIFT_VERSION=0.14.2.3 diff --git a/.github/workflows/build-and-push-image.yml b/.github/workflows/build-and-push-image.yml deleted file mode 100644 index ecf6c17..0000000 --- a/.github/workflows/build-and-push-image.yml +++ /dev/null @@ -1,54 +0,0 @@ -name: Build and push Docker image -on: - push: - branches: [master] - -env: - REGISTRY: ghcr.io - -jobs: - build: - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v3 - - - name: Log in to the Container registry - uses: docker/login-action@v1 - with: - registry: ${{ env.REGISTRY }} - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Construct tags / labels for an image - id: meta - uses: docker/metadata-action@v3 - with: - images: | - ${{ env.REGISTRY }}/${{ github.repository }} - tags: | - type=sha - - # https://docs.github.com/en/actions/learn-github-actions/workflow-commands-for-github-actions#setting-an-environment-variable - - name: Update environment variables - run: grep -v '^#' .env >> $GITHUB_ENV - - - name: Set up QEMU - uses: docker/setup-qemu-action@v1 - - - name: Setup Buildx - uses: docker/setup-buildx-action@v1 - - - name: Build and push Docker image - uses: docker/build-push-action@v2 - with: - push: true - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - platforms: linux/amd64,linux/arm64 - cache-from: type=gha - cache-to: type=gha,mode=max - build-args: | - OTP_VERSION=${{ env.OTP_VERSION }} - THRIFT_VERSION=${{ env.THRIFT_VERSION }} - SERVICE_NAME=${{ env.SERVICE_NAME }} diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml index c75d347..ff53b0e 100644 --- a/.github/workflows/build-image.yml +++ b/.github/workflows/build-image.yml @@ -1,43 +1,21 @@ -name: Build Docker image +name: Build and publish Docker image + on: + push: + branches: + - 'master' + - 'epic/**' pull_request: - branches: ["*"] + branches: ['**'] env: REGISTRY: ghcr.io jobs: - build: + build-push: runs-on: ubuntu-latest steps: - - name: Checkout code - uses: actions/checkout@v3 - - - name: Construct tags / labels for an image - id: meta - uses: docker/metadata-action@v3 + - uses: valitydev/action-deploy-docker@v2 with: - images: | - ${{ env.REGISTRY }}/${{ github.repository }} - tags: | - type=sha - - # https://docs.github.com/en/actions/learn-github-actions/workflow-commands-for-github-actions#setting-an-environment-variable - - name: Update environment variables - run: grep -v '^#' .env >> $GITHUB_ENV - - - name: Setup Buildx - uses: docker/setup-buildx-action@v1 - - - name: Build Docker image - uses: docker/build-push-action@v2 - with: - push: false - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - cache-from: type=gha - cache-to: type=gha,mode=max - build-args: | - OTP_VERSION=${{ env.OTP_VERSION }} - THRIFT_VERSION=${{ env.THRIFT_VERSION }} - SERVICE_NAME=${{ env.SERVICE_NAME }} + registry-username: ${{ github.actor }} + registry-access-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/apps/bender/src/bender.erl b/apps/bender/src/bender.erl index c715c77..a2299ba 100644 --- a/apps/bender/src/bender.erl +++ b/apps/bender/src/bender.erl @@ -91,11 +91,11 @@ get_handler_spec() -> GeneratorPath = maps:get(generator_path, Generator, <<"/v1/generator">>), [ {BenderPath, { - {bender_thrift, 'Bender'}, + {bender_bender_thrift, 'Bender'}, bender_handler }}, {GeneratorPath, { - {bender_thrift, 'Generator'}, + {bender_bender_thrift, 'Generator'}, generator_handler }} ]. diff --git a/apps/bender/src/bender_generator.erl b/apps/bender/src/bender_generator.erl index 50e26de..85bf99d 100644 --- a/apps/bender/src/bender_generator.erl +++ b/apps/bender/src/bender_generator.erl @@ -19,7 +19,7 @@ -type internal_id() :: binary() | {binary(), pos_integer()}. -type schema() :: bender:schema(). --type user_context() :: msgpack_thrift:'Value'() | undefined. +-type user_context() :: msgp_msgpack_thrift:'Value'() | undefined. -type state() :: #{ internal_id := internal_id(), user_context := user_context() diff --git a/apps/bender/src/bender_handler.erl b/apps/bender/src/bender_handler.erl index 783f1d3..29f6878 100644 --- a/apps/bender/src/bender_handler.erl +++ b/apps/bender/src/bender_handler.erl @@ -6,17 +6,17 @@ -export([handle_function/4]). --include_lib("bender_proto/include/bender_thrift.hrl"). +-include_lib("bender_proto/include/bender_bender_thrift.hrl"). -include("bender_internal.hrl"). -type woody_context() :: woody_context:ctx(). --type external_id() :: bender_thrift:'ExternalID'(). +-type external_id() :: bender_bender_thrift:'ExternalID'(). -type schema() :: bender:schema(). --type user_context() :: msgpack_thrift:'Value'(). --type generate_id_result() :: bender_thrift:'GenerationResult'(). --type get_internal_id_result() :: bender_thrift:'GetInternalIDResult'(). +-type user_context() :: msgp_msgpack_thrift:'Value'(). +-type generate_id_result() :: bender_bender_thrift:'GenerationResult'(). +-type get_internal_id_result() :: bender_bender_thrift:'GetInternalIDResult'(). -spec handle_function(woody:func(), woody:args(), woody_context(), woody:options()) -> {ok, woody:result()}. handle_function(Func, Args, WoodyCtx, Opts) -> @@ -37,7 +37,7 @@ handle_function_('GetInternalID', {ExternalID}, WoodyCtx, _Opts) -> }), get_internal_id(ExternalID, WoodyCtx). --spec generate_id(external_id(), bender_thrift:'GenerationSchema'(), user_context(), woody_context()) -> +-spec generate_id(external_id(), bender_bender_thrift:'GenerationSchema'(), user_context(), woody_context()) -> {ok, generate_id_result()} | no_return(). generate_id(ExternalID, {constant, #bender_ConstantSchema{} = Schema}, UserCtx, WoodyCtx) -> NewInternalID = Schema#bender_ConstantSchema.internal_id, diff --git a/apps/bender/src/bender_internal.hrl b/apps/bender/src/bender_internal.hrl index 7f90cec..c0f413f 100644 --- a/apps/bender/src/bender_internal.hrl +++ b/apps/bender/src/bender_internal.hrl @@ -2,7 +2,7 @@ -define(__BENDER_INTERNAL_HRL__, included). -record(constant, { - internal_id :: bender_thrift:'InternalID'() + internal_id :: bender_bender_thrift:'InternalID'() }). -record(sequence, { diff --git a/apps/bender/src/generator_handler.erl b/apps/bender/src/generator_handler.erl index 5f87149..4b6696a 100644 --- a/apps/bender/src/generator_handler.erl +++ b/apps/bender/src/generator_handler.erl @@ -6,14 +6,14 @@ -export([handle_function/4]). --include_lib("bender_proto/include/bender_thrift.hrl"). +-include_lib("bender_proto/include/bender_bender_thrift.hrl"). -include("bender_internal.hrl"). -type woody_context() :: woody_context:ctx(). -type schema() :: bender:schema(). --type generate_id_result() :: bender_thrift:'GeneratedID'(). +-type generate_id_result() :: bender_bender_thrift:'GeneratedID'(). -spec handle_function(woody:func(), woody:args(), woody_context(), woody:options()) -> {ok, woody:result()}. handle_function(Func, Args, WoodyCtx, Opts) -> @@ -26,7 +26,8 @@ handle_function(Func, Args, WoodyCtx, Opts) -> handle_function_('GenerateID', {Schema}, WoodyCtx, _Opts) -> generate_id(Schema, WoodyCtx). --spec generate_id(bender_thrift:'GenerationSchema'(), woody_context()) -> {ok, generate_id_result()} | no_return(). +-spec generate_id(bender_bender_thrift:'GenerationSchema'(), woody_context()) -> + {ok, generate_id_result()} | no_return(). generate_id({constant, #bender_ConstantSchema{} = Schema}, WoodyCtx) -> NewInternalID = Schema#bender_ConstantSchema.internal_id, Constant = #constant{internal_id = NewInternalID}, diff --git a/apps/bender/test/bender_client.erl b/apps/bender/test/bender_client.erl index c414b93..0b0717a 100644 --- a/apps/bender/test/bender_client.erl +++ b/apps/bender/test/bender_client.erl @@ -6,9 +6,9 @@ -type client() :: woody_context:ctx(). --type external_id() :: bender_thrift:'ExternalID'(). --type schema() :: bender_thrift:'GenerationSchema'(). --type user_context() :: msgpack_thrift:'Value'(). +-type external_id() :: bender_bender_thrift:'ExternalID'(). +-type schema() :: bender_bender_thrift:'GenerationSchema'(). +-type user_context() :: msgp_msgpack_thrift:'Value'(). -define(RETRY_STATEGY, genlib_retry:linear(5, 1000)). @@ -30,7 +30,7 @@ get_internal_id(ExternalID, Client) -> -spec call(atom(), tuple(), client()) -> woody:result() | no_return(). call(Function, Args, Client) -> - Call = {{bender_thrift, 'Bender'}, Function, Args}, + Call = {{bender_bender_thrift, 'Bender'}, Function, Args}, Opts = #{ url => <<"http://bender:8022/v1/bender">>, event_handler => scoper_woody_event_handler, diff --git a/apps/bender/test/bender_tests_SUITE.erl b/apps/bender/test/bender_tests_SUITE.erl index 98492e0..3fed330 100644 --- a/apps/bender/test/bender_tests_SUITE.erl +++ b/apps/bender/test/bender_tests_SUITE.erl @@ -1,7 +1,5 @@ -module(bender_tests_SUITE). --include_lib("common_test/include/ct.hrl"). - -export([all/0]). -export([groups/0]). -export([init_per_suite/1]). @@ -21,7 +19,7 @@ -export([retrieve_unknown_id/1]). -export([retrieve_known_id/1]). --include_lib("bender_proto/include/bender_thrift.hrl"). +-include_lib("bender_proto/include/bender_bender_thrift.hrl"). -type config() :: [{atom(), term()}]. -type group_name() :: atom(). diff --git a/apps/bender/test/generator_client.erl b/apps/bender/test/generator_client.erl index ba685bd..9a7b537 100644 --- a/apps/bender/test/generator_client.erl +++ b/apps/bender/test/generator_client.erl @@ -5,7 +5,7 @@ -type client() :: woody_context:ctx(). --type schema() :: bender_thrift:'GenerationSchema'(). +-type schema() :: bender_bender_thrift:'GenerationSchema'(). -define(RETRY_STATEGY, genlib_retry:linear(5, 1000)). @@ -23,7 +23,7 @@ generate_id(Schema, Client) -> -spec call(atom(), tuple(), client()) -> woody:result() | no_return(). call(Function, Args, Client) -> - Call = {{bender_thrift, 'Generator'}, Function, Args}, + Call = {{bender_bender_thrift, 'Generator'}, Function, Args}, Opts = #{ url => <<"http://bender:8022/v1/generator">>, event_handler => scoper_woody_event_handler, diff --git a/apps/bender/test/generator_tests_SUITE.erl b/apps/bender/test/generator_tests_SUITE.erl index 07ff64c..c1dba61 100644 --- a/apps/bender/test/generator_tests_SUITE.erl +++ b/apps/bender/test/generator_tests_SUITE.erl @@ -1,7 +1,5 @@ -module(generator_tests_SUITE). --include_lib("common_test/include/ct.hrl"). - -export([all/0]). -export([groups/0]). -export([init_per_suite/1]). @@ -14,7 +12,7 @@ -export([sequence_minimum/1]). -export([snowflake/1]). --include_lib("bender_proto/include/bender_thrift.hrl"). +-include_lib("bender_proto/include/bender_bender_thrift.hrl"). -type config() :: [{atom(), term()}]. -type group_name() :: atom(). diff --git a/rebar.config b/rebar.config index 973f6af..cabeed3 100644 --- a/rebar.config +++ b/rebar.config @@ -31,7 +31,7 @@ {bender_proto, {git, "https://github.com/valitydev/bender-proto.git", {branch, "master"}}}, {erl_health, {git, "https://github.com/valitydev/erlang-health.git", {branch, "master"}}}, {genlib, {git, "https://github.com/valitydev/genlib.git", {branch, "master"}}}, - {machinery, {git, "https://github.com/valitydev/machinery.git", {branch, "master"}}}, + {machinery, {git, "https://github.com/valitydev/machinery-erlang.git", {branch, "master"}}}, {scoper, {git, "https://github.com/valitydev/scoper.git", {branch, "master"}}}, {snowflake, {git, "https://github.com/valitydev/snowflake.git", {branch, "master"}}}, {woody, {git, "https://github.com/valitydev/woody_erlang.git", {branch, "master"}}} diff --git a/rebar.lock b/rebar.lock index bcb3498..0303542 100644 --- a/rebar.lock +++ b/rebar.lock @@ -2,7 +2,7 @@ [{<<"accept">>,{pkg,<<"accept">>,<<"0.3.5">>},2}, {<<"bender_proto">>, {git,"https://github.com/valitydev/bender-proto.git", - {ref,"38ce3ffde52fb2f52a8d042e67a3e2715adb7546"}}, + {ref,"71c56878c1cf154cdfab9bbc563ddba25abe7259"}}, 0}, {<<"cache">>,{pkg,<<"cache">>,<<"2.3.3">>},1}, {<<"certifi">>,{pkg,<<"certifi">>,<<"2.8.0">>},2}, @@ -25,18 +25,18 @@ {<<"idna">>,{pkg,<<"idna">>,<<"6.1.1">>},2}, {<<"jsx">>,{pkg,<<"jsx">>,<<"3.1.0">>},1}, {<<"machinery">>, - {git,"https://github.com/valitydev/machinery.git", - {ref,"db7c94b9913451e9558afa19f2fe77bf48d391da"}}, + {git,"https://github.com/valitydev/machinery-erlang.git", + {ref,"62c32434c80a462956ad9d50f9bce47836580d77"}}, 0}, {<<"metrics">>,{pkg,<<"metrics">>,<<"1.0.1">>},2}, {<<"mg_proto">>, - {git,"https://github.com/rbkmoney/machinegun_proto.git", - {ref,"d814d6948d4ff13f6f41d12c6613f59c805750b2"}}, + {git,"https://github.com/valitydev/machinegun-proto.git", + {ref,"a411c7d5d779389c70d2594eb4a28a916dce1721"}}, 1}, {<<"mimerl">>,{pkg,<<"mimerl">>,<<"1.2.0">>},2}, {<<"msgpack_proto">>, {git,"https://github.com/valitydev/msgpack-proto.git", - {ref,"ec15d5e854ea60c58467373077d90c2faf6273d8"}}, + {ref,"7e447496aa5df4a5f1ace7ef2e3c31248b2a3ed0"}}, 1}, {<<"parse_trans">>,{pkg,<<"parse_trans">>,<<"3.3.1">>},2}, {<<"prometheus">>,{pkg,<<"prometheus">>,<<"4.8.1">>},0},