mirror of
https://github.com/valitydev/bender.git
synced 2024-11-06 00:55:20 +00:00
TD-222: Reuse valitydev/action-deploy-docker@v2 (#16)
* Use valitydev/thrift compiler v0.14.2.3 * Switch to valitydev/machinery-erlang@62c3243 * Bump to valitydev/bender-proto@71c5687 * Bump to valitydev/machinegun-proto@a411c7d
This commit is contained in:
parent
5ae065505e
commit
21c002a14b
4
.env
4
.env
@ -3,6 +3,6 @@
|
|||||||
# You SHOULD specify point releases here so that build time and run time Erlang/OTPs
|
# 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
|
# are the same. See: https://github.com/erlware/relx/pull/902
|
||||||
SERVICE_NAME=bender
|
SERVICE_NAME=bender
|
||||||
OTP_VERSION=24.2.0
|
OTP_VERSION=24.3.4
|
||||||
REBAR_VERSION=3.18
|
REBAR_VERSION=3.18
|
||||||
THRIFT_VERSION=0.14.2.2
|
THRIFT_VERSION=0.14.2.3
|
||||||
|
54
.github/workflows/build-and-push-image.yml
vendored
54
.github/workflows/build-and-push-image.yml
vendored
@ -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 }}
|
|
44
.github/workflows/build-image.yml
vendored
44
.github/workflows/build-image.yml
vendored
@ -1,43 +1,21 @@
|
|||||||
name: Build Docker image
|
name: Build and publish Docker image
|
||||||
|
|
||||||
on:
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- 'master'
|
||||||
|
- 'epic/**'
|
||||||
pull_request:
|
pull_request:
|
||||||
branches: ["*"]
|
branches: ['**']
|
||||||
|
|
||||||
env:
|
env:
|
||||||
REGISTRY: ghcr.io
|
REGISTRY: ghcr.io
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build-push:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- uses: valitydev/action-deploy-docker@v2
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Construct tags / labels for an image
|
|
||||||
id: meta
|
|
||||||
uses: docker/metadata-action@v3
|
|
||||||
with:
|
with:
|
||||||
images: |
|
registry-username: ${{ github.actor }}
|
||||||
${{ env.REGISTRY }}/${{ github.repository }}
|
registry-access-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
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 }}
|
|
||||||
|
@ -91,11 +91,11 @@ get_handler_spec() ->
|
|||||||
GeneratorPath = maps:get(generator_path, Generator, <<"/v1/generator">>),
|
GeneratorPath = maps:get(generator_path, Generator, <<"/v1/generator">>),
|
||||||
[
|
[
|
||||||
{BenderPath, {
|
{BenderPath, {
|
||||||
{bender_thrift, 'Bender'},
|
{bender_bender_thrift, 'Bender'},
|
||||||
bender_handler
|
bender_handler
|
||||||
}},
|
}},
|
||||||
{GeneratorPath, {
|
{GeneratorPath, {
|
||||||
{bender_thrift, 'Generator'},
|
{bender_bender_thrift, 'Generator'},
|
||||||
generator_handler
|
generator_handler
|
||||||
}}
|
}}
|
||||||
].
|
].
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
-type internal_id() :: binary() | {binary(), pos_integer()}.
|
-type internal_id() :: binary() | {binary(), pos_integer()}.
|
||||||
|
|
||||||
-type schema() :: bender:schema().
|
-type schema() :: bender:schema().
|
||||||
-type user_context() :: msgpack_thrift:'Value'() | undefined.
|
-type user_context() :: msgp_msgpack_thrift:'Value'() | undefined.
|
||||||
-type state() :: #{
|
-type state() :: #{
|
||||||
internal_id := internal_id(),
|
internal_id := internal_id(),
|
||||||
user_context := user_context()
|
user_context := user_context()
|
||||||
|
@ -6,17 +6,17 @@
|
|||||||
|
|
||||||
-export([handle_function/4]).
|
-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").
|
-include("bender_internal.hrl").
|
||||||
|
|
||||||
-type woody_context() :: woody_context:ctx().
|
-type woody_context() :: woody_context:ctx().
|
||||||
|
|
||||||
-type external_id() :: bender_thrift:'ExternalID'().
|
-type external_id() :: bender_bender_thrift:'ExternalID'().
|
||||||
-type schema() :: bender:schema().
|
-type schema() :: bender:schema().
|
||||||
-type user_context() :: msgpack_thrift:'Value'().
|
-type user_context() :: msgp_msgpack_thrift:'Value'().
|
||||||
-type generate_id_result() :: bender_thrift:'GenerationResult'().
|
-type generate_id_result() :: bender_bender_thrift:'GenerationResult'().
|
||||||
-type get_internal_id_result() :: bender_thrift:'GetInternalIDResult'().
|
-type get_internal_id_result() :: bender_bender_thrift:'GetInternalIDResult'().
|
||||||
|
|
||||||
-spec handle_function(woody:func(), woody:args(), woody_context(), woody:options()) -> {ok, woody:result()}.
|
-spec handle_function(woody:func(), woody:args(), woody_context(), woody:options()) -> {ok, woody:result()}.
|
||||||
handle_function(Func, Args, WoodyCtx, Opts) ->
|
handle_function(Func, Args, WoodyCtx, Opts) ->
|
||||||
@ -37,7 +37,7 @@ handle_function_('GetInternalID', {ExternalID}, WoodyCtx, _Opts) ->
|
|||||||
}),
|
}),
|
||||||
get_internal_id(ExternalID, WoodyCtx).
|
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().
|
{ok, generate_id_result()} | no_return().
|
||||||
generate_id(ExternalID, {constant, #bender_ConstantSchema{} = Schema}, UserCtx, WoodyCtx) ->
|
generate_id(ExternalID, {constant, #bender_ConstantSchema{} = Schema}, UserCtx, WoodyCtx) ->
|
||||||
NewInternalID = Schema#bender_ConstantSchema.internal_id,
|
NewInternalID = Schema#bender_ConstantSchema.internal_id,
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
-define(__BENDER_INTERNAL_HRL__, included).
|
-define(__BENDER_INTERNAL_HRL__, included).
|
||||||
|
|
||||||
-record(constant, {
|
-record(constant, {
|
||||||
internal_id :: bender_thrift:'InternalID'()
|
internal_id :: bender_bender_thrift:'InternalID'()
|
||||||
}).
|
}).
|
||||||
|
|
||||||
-record(sequence, {
|
-record(sequence, {
|
||||||
|
@ -6,14 +6,14 @@
|
|||||||
|
|
||||||
-export([handle_function/4]).
|
-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").
|
-include("bender_internal.hrl").
|
||||||
|
|
||||||
-type woody_context() :: woody_context:ctx().
|
-type woody_context() :: woody_context:ctx().
|
||||||
|
|
||||||
-type schema() :: bender:schema().
|
-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()}.
|
-spec handle_function(woody:func(), woody:args(), woody_context(), woody:options()) -> {ok, woody:result()}.
|
||||||
handle_function(Func, Args, WoodyCtx, Opts) ->
|
handle_function(Func, Args, WoodyCtx, Opts) ->
|
||||||
@ -26,7 +26,8 @@ handle_function(Func, Args, WoodyCtx, Opts) ->
|
|||||||
handle_function_('GenerateID', {Schema}, WoodyCtx, _Opts) ->
|
handle_function_('GenerateID', {Schema}, WoodyCtx, _Opts) ->
|
||||||
generate_id(Schema, WoodyCtx).
|
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) ->
|
generate_id({constant, #bender_ConstantSchema{} = Schema}, WoodyCtx) ->
|
||||||
NewInternalID = Schema#bender_ConstantSchema.internal_id,
|
NewInternalID = Schema#bender_ConstantSchema.internal_id,
|
||||||
Constant = #constant{internal_id = NewInternalID},
|
Constant = #constant{internal_id = NewInternalID},
|
||||||
|
@ -6,9 +6,9 @@
|
|||||||
|
|
||||||
-type client() :: woody_context:ctx().
|
-type client() :: woody_context:ctx().
|
||||||
|
|
||||||
-type external_id() :: bender_thrift:'ExternalID'().
|
-type external_id() :: bender_bender_thrift:'ExternalID'().
|
||||||
-type schema() :: bender_thrift:'GenerationSchema'().
|
-type schema() :: bender_bender_thrift:'GenerationSchema'().
|
||||||
-type user_context() :: msgpack_thrift:'Value'().
|
-type user_context() :: msgp_msgpack_thrift:'Value'().
|
||||||
|
|
||||||
-define(RETRY_STATEGY, genlib_retry:linear(5, 1000)).
|
-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().
|
-spec call(atom(), tuple(), client()) -> woody:result() | no_return().
|
||||||
call(Function, Args, Client) ->
|
call(Function, Args, Client) ->
|
||||||
Call = {{bender_thrift, 'Bender'}, Function, Args},
|
Call = {{bender_bender_thrift, 'Bender'}, Function, Args},
|
||||||
Opts = #{
|
Opts = #{
|
||||||
url => <<"http://bender:8022/v1/bender">>,
|
url => <<"http://bender:8022/v1/bender">>,
|
||||||
event_handler => scoper_woody_event_handler,
|
event_handler => scoper_woody_event_handler,
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
-module(bender_tests_SUITE).
|
-module(bender_tests_SUITE).
|
||||||
|
|
||||||
-include_lib("common_test/include/ct.hrl").
|
|
||||||
|
|
||||||
-export([all/0]).
|
-export([all/0]).
|
||||||
-export([groups/0]).
|
-export([groups/0]).
|
||||||
-export([init_per_suite/1]).
|
-export([init_per_suite/1]).
|
||||||
@ -21,7 +19,7 @@
|
|||||||
-export([retrieve_unknown_id/1]).
|
-export([retrieve_unknown_id/1]).
|
||||||
-export([retrieve_known_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 config() :: [{atom(), term()}].
|
||||||
-type group_name() :: atom().
|
-type group_name() :: atom().
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
-type client() :: woody_context:ctx().
|
-type client() :: woody_context:ctx().
|
||||||
|
|
||||||
-type schema() :: bender_thrift:'GenerationSchema'().
|
-type schema() :: bender_bender_thrift:'GenerationSchema'().
|
||||||
|
|
||||||
-define(RETRY_STATEGY, genlib_retry:linear(5, 1000)).
|
-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().
|
-spec call(atom(), tuple(), client()) -> woody:result() | no_return().
|
||||||
call(Function, Args, Client) ->
|
call(Function, Args, Client) ->
|
||||||
Call = {{bender_thrift, 'Generator'}, Function, Args},
|
Call = {{bender_bender_thrift, 'Generator'}, Function, Args},
|
||||||
Opts = #{
|
Opts = #{
|
||||||
url => <<"http://bender:8022/v1/generator">>,
|
url => <<"http://bender:8022/v1/generator">>,
|
||||||
event_handler => scoper_woody_event_handler,
|
event_handler => scoper_woody_event_handler,
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
-module(generator_tests_SUITE).
|
-module(generator_tests_SUITE).
|
||||||
|
|
||||||
-include_lib("common_test/include/ct.hrl").
|
|
||||||
|
|
||||||
-export([all/0]).
|
-export([all/0]).
|
||||||
-export([groups/0]).
|
-export([groups/0]).
|
||||||
-export([init_per_suite/1]).
|
-export([init_per_suite/1]).
|
||||||
@ -14,7 +12,7 @@
|
|||||||
-export([sequence_minimum/1]).
|
-export([sequence_minimum/1]).
|
||||||
-export([snowflake/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 config() :: [{atom(), term()}].
|
||||||
-type group_name() :: atom().
|
-type group_name() :: atom().
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
{bender_proto, {git, "https://github.com/valitydev/bender-proto.git", {branch, "master"}}},
|
{bender_proto, {git, "https://github.com/valitydev/bender-proto.git", {branch, "master"}}},
|
||||||
{erl_health, {git, "https://github.com/valitydev/erlang-health.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"}}},
|
{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"}}},
|
{scoper, {git, "https://github.com/valitydev/scoper.git", {branch, "master"}}},
|
||||||
{snowflake, {git, "https://github.com/valitydev/snowflake.git", {branch, "master"}}},
|
{snowflake, {git, "https://github.com/valitydev/snowflake.git", {branch, "master"}}},
|
||||||
{woody, {git, "https://github.com/valitydev/woody_erlang.git", {branch, "master"}}}
|
{woody, {git, "https://github.com/valitydev/woody_erlang.git", {branch, "master"}}}
|
||||||
|
12
rebar.lock
12
rebar.lock
@ -2,7 +2,7 @@
|
|||||||
[{<<"accept">>,{pkg,<<"accept">>,<<"0.3.5">>},2},
|
[{<<"accept">>,{pkg,<<"accept">>,<<"0.3.5">>},2},
|
||||||
{<<"bender_proto">>,
|
{<<"bender_proto">>,
|
||||||
{git,"https://github.com/valitydev/bender-proto.git",
|
{git,"https://github.com/valitydev/bender-proto.git",
|
||||||
{ref,"38ce3ffde52fb2f52a8d042e67a3e2715adb7546"}},
|
{ref,"71c56878c1cf154cdfab9bbc563ddba25abe7259"}},
|
||||||
0},
|
0},
|
||||||
{<<"cache">>,{pkg,<<"cache">>,<<"2.3.3">>},1},
|
{<<"cache">>,{pkg,<<"cache">>,<<"2.3.3">>},1},
|
||||||
{<<"certifi">>,{pkg,<<"certifi">>,<<"2.8.0">>},2},
|
{<<"certifi">>,{pkg,<<"certifi">>,<<"2.8.0">>},2},
|
||||||
@ -25,18 +25,18 @@
|
|||||||
{<<"idna">>,{pkg,<<"idna">>,<<"6.1.1">>},2},
|
{<<"idna">>,{pkg,<<"idna">>,<<"6.1.1">>},2},
|
||||||
{<<"jsx">>,{pkg,<<"jsx">>,<<"3.1.0">>},1},
|
{<<"jsx">>,{pkg,<<"jsx">>,<<"3.1.0">>},1},
|
||||||
{<<"machinery">>,
|
{<<"machinery">>,
|
||||||
{git,"https://github.com/valitydev/machinery.git",
|
{git,"https://github.com/valitydev/machinery-erlang.git",
|
||||||
{ref,"db7c94b9913451e9558afa19f2fe77bf48d391da"}},
|
{ref,"62c32434c80a462956ad9d50f9bce47836580d77"}},
|
||||||
0},
|
0},
|
||||||
{<<"metrics">>,{pkg,<<"metrics">>,<<"1.0.1">>},2},
|
{<<"metrics">>,{pkg,<<"metrics">>,<<"1.0.1">>},2},
|
||||||
{<<"mg_proto">>,
|
{<<"mg_proto">>,
|
||||||
{git,"https://github.com/rbkmoney/machinegun_proto.git",
|
{git,"https://github.com/valitydev/machinegun-proto.git",
|
||||||
{ref,"d814d6948d4ff13f6f41d12c6613f59c805750b2"}},
|
{ref,"a411c7d5d779389c70d2594eb4a28a916dce1721"}},
|
||||||
1},
|
1},
|
||||||
{<<"mimerl">>,{pkg,<<"mimerl">>,<<"1.2.0">>},2},
|
{<<"mimerl">>,{pkg,<<"mimerl">>,<<"1.2.0">>},2},
|
||||||
{<<"msgpack_proto">>,
|
{<<"msgpack_proto">>,
|
||||||
{git,"https://github.com/valitydev/msgpack-proto.git",
|
{git,"https://github.com/valitydev/msgpack-proto.git",
|
||||||
{ref,"ec15d5e854ea60c58467373077d90c2faf6273d8"}},
|
{ref,"7e447496aa5df4a5f1ace7ef2e3c31248b2a3ed0"}},
|
||||||
1},
|
1},
|
||||||
{<<"parse_trans">>,{pkg,<<"parse_trans">>,<<"3.3.1">>},2},
|
{<<"parse_trans">>,{pkg,<<"parse_trans">>,<<"3.3.1">>},2},
|
||||||
{<<"prometheus">>,{pkg,<<"prometheus">>,<<"4.8.1">>},0},
|
{<<"prometheus">>,{pkg,<<"prometheus">>,<<"4.8.1">>},0},
|
||||||
|
Loading…
Reference in New Issue
Block a user