diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000..fed7889 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,48 @@ +version: 2.1 +jobs: + compile-and-test: + docker: + - image: circleci/elixir:1.10.0 + environment: + MIX_ENV: test + PGHOST: localhost + PGUSERNAME: postgres + RABBITMQ_CONNECTION_URL: amqp://guest:guest@localhost:5672 + RABBITMQ_API_URL: http://guest:guest@localhost:15672/api/ + - image: circleci/postgres:9.6-alpine + - image: rabbitmq:3.8.9-management-alpine + working_directory: ~/repo + steps: + - checkout + - restore_cache: + keys: + - v2-cache-{{ .Branch }}-{{ checksum "mix.lock" }} + - run: ./bin/setup circleci + - save_cache: + key: v2-cache-{{ .Branch }}-{{ checksum "mix.lock" }} + paths: + - "deps" + - "_build" + - run: + name: Wait for postgresql + command: dockerize -wait tcp://localhost:5432 -timeout 1m + - run: + name: Wait for rabbitmq + command: dockerize -wait tcp://guest:guest@localhost:15672 -timeout 1m + - run: ./bin/ci + - store_test_results: + path: _build/test/lib/railway_ipc +workflows: + build: + jobs: + - compile-and-test + nightly: + triggers: + - schedule: + cron: "0 0 * * *" + filters: + branches: + only: + - master + jobs: + - compile-and-test diff --git a/bin/ci b/bin/ci index 9432433..f4cad85 100755 --- a/bin/ci +++ b/bin/ci @@ -2,6 +2,9 @@ set -euo pipefail IFS=$'\n\t' +echo "Checking formatting..." mix format --check-formatted -mix credo --strict +echo "Linting..." +mix credo +echo "Running tests..." mix test diff --git a/bin/setup b/bin/setup index 35b15b6..ef71bbb 100755 --- a/bin/setup +++ b/bin/setup @@ -7,4 +7,6 @@ if [ "${1-}" = "circleci" ]; then mix local.rebar --force fi -mix do deps.get, compile --warnings-as-errors +mix deps.get +mix deps.compile +mix compile diff --git a/lib/railway_ipc/persistence/persistence_behaviour.ex b/lib/railway_ipc/persistence/persistence_behaviour.ex index cfe7185..2b12ec8 100644 --- a/lib/railway_ipc/persistence/persistence_behaviour.ex +++ b/lib/railway_ipc/persistence/persistence_behaviour.ex @@ -1,7 +1,6 @@ defmodule RailwayIpc.PersistenceBehaviour do @moduledoc false alias RailwayIpc.Persistence.{ConsumedMessage, PublishedMessage} - @moduledoc false alias RailwayIpc.Persistence.ConsumedMessage @callback insert_published_message(Map.t()) :: tuple() @callback insert_consumed_message(Map.t()) :: tuple() diff --git a/test/railway_ipc/ipc/publishers/republished_messages_pubisher_test.exs b/test/railway_ipc/ipc/publishers/republished_messages_pubisher_test.exs index 1da1b87..176cb9a 100644 --- a/test/railway_ipc/ipc/publishers/republished_messages_pubisher_test.exs +++ b/test/railway_ipc/ipc/publishers/republished_messages_pubisher_test.exs @@ -64,7 +64,7 @@ defmodule RailwayIpc.Ipc.RepublishedMessagesPublisherTest do request_data: request_data, original_published_message_uuid: original_published_message_uuid } do - # credo:disable-for-next-line Credo.Check.Design.AliasUsage + # credo:disable-for-lines:2 Credo.Check.Design.AliasUsage command = RailwayIpc.Commands.RepublishMessage.new(user_uuid: "abcabc", uuid: Ecto.UUID.generate()) @@ -94,7 +94,7 @@ defmodule RailwayIpc.Ipc.RepublishedMessagesPublisherTest do request_data: request_data, original_published_message_uuid: original_published_message_uuid } do - # credo:disable-for-next-line Credo.Check.Design.AliasUsage + # credo:disable-for-lines:2 Credo.Check.Design.AliasUsage command = RailwayIpc.Commands.RepublishMessage.new(user_uuid: "abcabc", uuid: Ecto.UUID.generate()) diff --git a/test/railway_ipc/publisher_test.exs b/test/railway_ipc/publisher_test.exs index d1d48a3..9150586 100644 --- a/test/railway_ipc/publisher_test.exs +++ b/test/railway_ipc/publisher_test.exs @@ -205,7 +205,7 @@ defmodule RailwayIpc.PublisherTest do end test "it adds a uuid to the message" do - # credo:disable-for-next-line Credo.Check.Design.AliasUsage + # credo:disable-for-lines:2 Credo.Check.Design.AliasUsage message = RailwayIpc.Commands.RepublishMessage.new(%{ user_uuid: Ecto.UUID.generate() @@ -229,7 +229,7 @@ defmodule RailwayIpc.PublisherTest do test "it does not overwrite existing UUID" do message_uuid = Ecto.UUID.generate() - # credo:disable-for-next-line Credo.Check.Design.AliasUsage + # credo:disable-for-lines:2 Credo.Check.Design.AliasUsage message = RailwayIpc.Commands.RepublishMessage.new(%{ user_uuid: Ecto.UUID.generate(), @@ -256,7 +256,7 @@ defmodule RailwayIpc.PublisherTest do correlation_id = Ecto.UUID.generate() queue = "republish_queue" - # credo:disable-for-next-line Credo.Check.Design.AliasUsage + # credo:disable-for-lines:2 Credo.Check.Design.AliasUsage message = RailwayIpc.Commands.RepublishMessage.new(%{ user_uuid: user_uuid, @@ -282,7 +282,7 @@ defmodule RailwayIpc.PublisherTest do correlation_id = Ecto.UUID.generate() queue = "republish_queue" - # credo:disable-for-next-line Credo.Check.Design.AliasUsage + # credo:disable-for-lines:2 Credo.Check.Design.AliasUsage message = RailwayIpc.Commands.RepublishMessage.new(%{ user_uuid: user_uuid, diff --git a/test/railway_ipc/republish_command_consumer_test.exs b/test/railway_ipc/republish_command_consumer_test.exs index a22fc5c..52ec01a 100644 --- a/test/railway_ipc/republish_command_consumer_test.exs +++ b/test/railway_ipc/republish_command_consumer_test.exs @@ -59,13 +59,13 @@ defmodule RailwayIpc.RepublishedMessagesConsumerTest do end test "acks message when successful", %{persisted_published_message: persisted_published_message} do - # credo:disable-for-next-line Credo.Check.Design.AliasUsage + # credo:disable-for-lines:2 Credo.Check.Design.AliasUsage data = RailwayIpc.Commands.RepublishMessage.Data.new( published_message_uuid: persisted_published_message.uuid ) - # credo:disable-for-next-line Credo.Check.Design.AliasUsage + # credo:disable-for-lines:2 Credo.Check.Design.AliasUsage {:ok, command} = RailwayIpc.Commands.RepublishMessage.new(correlation_id: "123", data: data) |> Payload.encode()