From 79ce6c446815f44c87ce79e418aa083e25928b5f Mon Sep 17 00:00:00 2001 From: Joao P Dubas Date: Fri, 22 Apr 2022 01:44:03 +0000 Subject: [PATCH 1/7] feat: upgrade erlang/elixir --- .drone.yml | 2 +- .tool-versions | 4 ++-- docker-compose.yml | 35 +++++++++++++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 3 deletions(-) diff --git a/.drone.yml b/.drone.yml index 8333e8a..e97f35b 100644 --- a/.drone.yml +++ b/.drone.yml @@ -11,7 +11,7 @@ trigger: steps: - name: test - image: 'elixir:1.21.1' + image: 'elixir:1.13.4' environemnt: POSTGRES_HOST: db POSTGRES_USER: postgres diff --git a/.tool-versions b/.tool-versions index c391eed..6b61424 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1,2 +1,2 @@ -erlang 24.0.2 -elixir 1.12.1-otp-24 +erlang 24.3.3 +elixir 1.13.4-otp-24 diff --git a/docker-compose.yml b/docker-compose.yml index e7e8887..e3414c7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -12,5 +12,40 @@ services: - './priv/docker/postgres/init.sql:/docker-entrypoint-initdb.d/init.sql' - 'db_data:/var/lib/postgresql/data' restart: unless-stopped + app: + image: 'elixir:1.13.4' + hostname: app + depends_on: + - db + init: true + environment: + POSTGRES_HOST: *db_host + POSTGRES_USER: *db_user + POSTGRES_PASS: *db_pass + POSTGRES_NAME: wabanex_dev + volumes: + - '.:/opt/app' + - 'app_build:/opt/app/_build' + - 'app_deps:/opt/app/deps' + working_dir: /opt/app + entrypoint: sleep + command: infinity + pgcli: + image: 'joaodubas/pgcli:latest' + hostname: development + depends_on: + - db + environment: + PGUSER: *db_user + PGPASSWORD: *db_pass + PGHOST: *db_host + PGDATABASE: wabanex_dev + volumes: + - './priv/docker/pgcli:/root/.config/pgcli' + restart: unless-stopped + entrypoint: sleep + command: 3650d volumes: db_data: {} + app_build: {} + app_deps: {} -- 2.47.2 From 38d2ce5fe8b90901a568ff974b86068e27455bff Mon Sep 17 00:00:00 2001 From: Joao P Dubas Date: Fri, 22 Apr 2022 11:07:17 +0000 Subject: [PATCH 2/7] feat: upgrade postgres to latest version --- .drone.yml | 2 +- docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.drone.yml b/.drone.yml index e97f35b..33659bc 100644 --- a/.drone.yml +++ b/.drone.yml @@ -22,7 +22,7 @@ steps: services: - name: db - image: 'postgres:13.3-alpine' + image: 'postgres:14.2-alpine' environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres diff --git a/docker-compose.yml b/docker-compose.yml index e3414c7..41443d7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.7' services: db: - image: 'postgres:13.3-alpine' + image: 'postgres:14.2-alpine' hostname: &db_host db environment: POSTGRES_USER: &db_user postgres -- 2.47.2 From 0c62f2474f4caee78516b1e2ff32d5fa3c4b2249 Mon Sep 17 00:00:00 2001 From: Joao P Dubas Date: Fri, 22 Apr 2022 11:08:14 +0000 Subject: [PATCH 3/7] chore: check if postgres is ready in CI --- .drone.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.drone.yml b/.drone.yml index 33659bc..5883fa8 100644 --- a/.drone.yml +++ b/.drone.yml @@ -10,6 +10,14 @@ trigger: - pull_request steps: + - name: database healthcheck + image: 'postgres:14.2-alpine' + environment: + PGUSER: postgres + PGPASSWORD: postgres + PGHOST: db + commands: + - while ! pg_isready; do sleep 1; done - name: test image: 'elixir:1.13.4' environemnt: -- 2.47.2 From 95a763c7ca4da82c9b1205b4e8eb380295e0d61a Mon Sep 17 00:00:00 2001 From: Joao P Dubas Date: Fri, 22 Apr 2022 12:08:13 +0000 Subject: [PATCH 4/7] fix: set proper MIX_ENV env var in CI --- .drone.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.drone.yml b/.drone.yml index 5883fa8..b090e9a 100644 --- a/.drone.yml +++ b/.drone.yml @@ -21,6 +21,7 @@ steps: - name: test image: 'elixir:1.13.4' environemnt: + MIX_ENV: test POSTGRES_HOST: db POSTGRES_USER: postgres POSTGRES_PASS: postgres -- 2.47.2 From 63d5ca3465135c0619fed790a3c1aed9a2f10061 Mon Sep 17 00:00:00 2001 From: Joao P Dubas Date: Fri, 22 Apr 2022 14:49:18 +0000 Subject: [PATCH 5/7] feat: migrate configuration to runtime Two updates were made here: 1. Migrate from Mix.Config to Config 2. Use runtime to fetch dynamic configurations --- config/config.exs | 4 ++-- config/dev.exs | 5 +---- config/prod.exs | 2 +- config/runtime.exs | 6 ++++++ config/test.exs | 5 +---- 5 files changed, 11 insertions(+), 11 deletions(-) create mode 100644 config/runtime.exs diff --git a/config/config.exs b/config/config.exs index 5a3723c..ba0ba24 100644 --- a/config/config.exs +++ b/config/config.exs @@ -5,7 +5,7 @@ # is restricted to this project. # General application configuration -use Mix.Config +import Config config :wabanex, ecto_repos: [Wabanex.Repo] @@ -32,4 +32,4 @@ config :phoenix, :json_library, Jason # Import environment specific config. This must remain at the bottom # of this file so it overrides the configuration defined above. -import_config "#{Mix.env()}.exs" +import_config "#{config_env()}.exs" diff --git a/config/dev.exs b/config/dev.exs index 02f9bcc..1faf08e 100644 --- a/config/dev.exs +++ b/config/dev.exs @@ -1,11 +1,8 @@ -use Mix.Config +import Config # Configure your database config :wabanex, Wabanex.Repo, - username: System.get_env("POSTGRES_USER") || "postgres", - password: System.get_env("POSTGRES_PASS") || "postgres", database: "wabanex_dev", - hostname: System.get_env("POSTGRES_HOST") || "localhost", show_sensitive_data_on_connection_error: true, pool_size: 10 diff --git a/config/prod.exs b/config/prod.exs index 73f6a1d..10f9447 100644 --- a/config/prod.exs +++ b/config/prod.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config # For production, don't forget to configure the url host # to something meaningful, Phoenix uses this information diff --git a/config/runtime.exs b/config/runtime.exs new file mode 100644 index 0000000..7120844 --- /dev/null +++ b/config/runtime.exs @@ -0,0 +1,6 @@ +import Config + +config :wabanex, Wabanex.Repo, + username: System.get_env("POSTGRES_USER") || "postgres", + password: System.get_env("POSTGRES_PASS") || "postgres", + hostname: System.get_env("POSTGRES_HOST") || "localhost" diff --git a/config/test.exs b/config/test.exs index 1e96411..7f17a31 100644 --- a/config/test.exs +++ b/config/test.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config # Configure your database # @@ -6,10 +6,7 @@ use Mix.Config # to provide built-in test partitioning in CI environment. # Run `mix help test` for more information. config :wabanex, Wabanex.Repo, - username: System.get_env("POSTGRES_USER") || "postgres", - password: System.get_env("POSTGRES_PASS") || "postgres", database: "wabanex_test#{System.get_env("MIX_TEST_PARTITION")}", - hostname: System.get_env("POSTGRES_HOST") || "localhost", pool: Ecto.Adapters.SQL.Sandbox # We don't run a server during test. If one is required, -- 2.47.2 From a310bc1d8b4b5f6c3dfbb1fc9a0480773d6ae2e9 Mon Sep 17 00:00:00 2001 From: Joao P Dubas Date: Fri, 22 Apr 2022 15:00:34 +0000 Subject: [PATCH 6/7] chore: trigger CI for pull request --- .drone.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index b090e9a..695a278 100644 --- a/.drone.yml +++ b/.drone.yml @@ -6,7 +6,6 @@ name: test trigger: event: include: - - push - pull_request steps: -- 2.47.2 From 436517c4048b3d25b756cc79129d5dce836971ac Mon Sep 17 00:00:00 2001 From: Joao P Dubas Date: Fri, 22 Apr 2022 15:14:31 +0000 Subject: [PATCH 7/7] fix: typo in CI environment definition --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index 695a278..8d5a3fa 100644 --- a/.drone.yml +++ b/.drone.yml @@ -19,7 +19,7 @@ steps: - while ! pg_isready; do sleep 1; done - name: test image: 'elixir:1.13.4' - environemnt: + environment: MIX_ENV: test POSTGRES_HOST: db POSTGRES_USER: postgres -- 2.47.2