feat: upgrade runtime and system dependencies (#5)

* Upgrade elixir, erlang, and postgres to their latest versions.
* Fix CI configuration, so tests are executed.
* Migrate project configuration from `Mix.Config` to `Config`.

Reviewed-on: #5
This commit is contained in:
João Paulo Dubas 2022-04-22 15:21:25 +00:00
parent 410a509faa
commit b7200555a8
8 changed files with 61 additions and 18 deletions

View File

@ -6,13 +6,21 @@ name: test
trigger: trigger:
event: event:
include: include:
- push
- pull_request - pull_request
steps: 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 - name: test
image: 'elixir:1.21.1' image: 'elixir:1.13.4'
environemnt: environment:
MIX_ENV: test
POSTGRES_HOST: db POSTGRES_HOST: db
POSTGRES_USER: postgres POSTGRES_USER: postgres
POSTGRES_PASS: postgres POSTGRES_PASS: postgres
@ -22,7 +30,7 @@ steps:
services: services:
- name: db - name: db
image: 'postgres:13.3-alpine' image: 'postgres:14.2-alpine'
environment: environment:
POSTGRES_USER: postgres POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres POSTGRES_PASSWORD: postgres

View File

@ -1,2 +1,2 @@
erlang 24.0.2 erlang 24.3.3
elixir 1.12.1-otp-24 elixir 1.13.4-otp-24

View File

@ -5,7 +5,7 @@
# is restricted to this project. # is restricted to this project.
# General application configuration # General application configuration
use Mix.Config import Config
config :wabanex, config :wabanex,
ecto_repos: [Wabanex.Repo] ecto_repos: [Wabanex.Repo]
@ -32,4 +32,4 @@ config :phoenix, :json_library, Jason
# Import environment specific config. This must remain at the bottom # Import environment specific config. This must remain at the bottom
# of this file so it overrides the configuration defined above. # of this file so it overrides the configuration defined above.
import_config "#{Mix.env()}.exs" import_config "#{config_env()}.exs"

View File

@ -1,11 +1,8 @@
use Mix.Config import Config
# Configure your database # Configure your database
config :wabanex, Wabanex.Repo, config :wabanex, Wabanex.Repo,
username: System.get_env("POSTGRES_USER") || "postgres",
password: System.get_env("POSTGRES_PASS") || "postgres",
database: "wabanex_dev", database: "wabanex_dev",
hostname: System.get_env("POSTGRES_HOST") || "localhost",
show_sensitive_data_on_connection_error: true, show_sensitive_data_on_connection_error: true,
pool_size: 10 pool_size: 10

View File

@ -1,4 +1,4 @@
use Mix.Config import Config
# For production, don't forget to configure the url host # For production, don't forget to configure the url host
# to something meaningful, Phoenix uses this information # to something meaningful, Phoenix uses this information

6
config/runtime.exs Normal file
View File

@ -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"

View File

@ -1,4 +1,4 @@
use Mix.Config import Config
# Configure your database # Configure your database
# #
@ -6,10 +6,7 @@ use Mix.Config
# to provide built-in test partitioning in CI environment. # to provide built-in test partitioning in CI environment.
# Run `mix help test` for more information. # Run `mix help test` for more information.
config :wabanex, Wabanex.Repo, 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")}", database: "wabanex_test#{System.get_env("MIX_TEST_PARTITION")}",
hostname: System.get_env("POSTGRES_HOST") || "localhost",
pool: Ecto.Adapters.SQL.Sandbox pool: Ecto.Adapters.SQL.Sandbox
# We don't run a server during test. If one is required, # We don't run a server during test. If one is required,

View File

@ -2,7 +2,7 @@
version: '3.7' version: '3.7'
services: services:
db: db:
image: 'postgres:13.3-alpine' image: 'postgres:14.2-alpine'
hostname: &db_host db hostname: &db_host db
environment: environment:
POSTGRES_USER: &db_user postgres POSTGRES_USER: &db_user postgres
@ -12,5 +12,40 @@ services:
- './priv/docker/postgres/init.sql:/docker-entrypoint-initdb.d/init.sql' - './priv/docker/postgres/init.sql:/docker-entrypoint-initdb.d/init.sql'
- 'db_data:/var/lib/postgresql/data' - 'db_data:/var/lib/postgresql/data'
restart: unless-stopped 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: volumes:
db_data: {} db_data: {}
app_build: {}
app_deps: {}