From 39419f88376a0c2ee20de008c8ffc95d1a344432 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Paulo=20Dubas?= Date: Tue, 26 Apr 2022 00:01:43 +0000 Subject: [PATCH] feat (ci): improve configuration (#16) - Remove unused `github-actions` configuration - Cache build and deps to make tests faster - Add lint step Reviewed-on: https://gitea.dubas.dev/joao.dubas/ex_trainer/pulls/16 --- .drone.yml | 49 +++++- .github/workflows/ci.yml | 142 ------------------ .../schema/types/custom/date_range.ex | 2 +- mix.lock | 2 +- 4 files changed, 49 insertions(+), 146 deletions(-) delete mode 100644 .github/workflows/ci.yml diff --git a/.drone.yml b/.drone.yml index 68c2ec9..2d13a2e 100644 --- a/.drone.yml +++ b/.drone.yml @@ -5,7 +5,6 @@ name: test trigger: event: - - push - pull_request steps: @@ -17,6 +16,26 @@ steps: PGHOST: db commands: - while ! pg_isready; do sleep 1; done + + - name: restore cache + image: 'meltwater/drone-cache:v1.3.0' + environment: + AWS_ACCESS_KEY_ID: + from_secret: minio_user + AWS_SECRET_ACCESS_KEY: + from_secret: minio_password + settings: + archive_format: gzip + bucket: trainlog-cache + cache_key: '{{ .Repo.Name }}-{{ checksum "mix.lock" }}' + endpoint: minio:9000 + mount: + - _build + - deps + path_style: true + region: us-east-1 + restore: true + - name: test image: 'elixir:1.13.4' environment: @@ -26,7 +45,33 @@ steps: POSTGRES_PASS: postgres commands: - mix do local.rebar --force, local.hex --force, deps.get, deps.compile - - mix test --cover --trace --slowest 10 + - make test + + - name: lint + image: 'elixir:1.13.4' + commands: + - mix do local.rebar --force, local.hex --force, deps.get, deps.compile + - make static_code_analysis + + - name: rebuild cache + image: 'meltwater/drone-cache:v1.3.0' + environment: + AWS_ACCESS_KEY_ID: + from_secret: minio_user + AWS_SECRET_ACCESS_KEY: + from_secret: minio_password + settings: + archive_format: gzip + bucket: trainlog-cache + cache_key: '{{ .Repo.Name }}-{{ checksum "mix.lock" }}' + endpoint: minio:9000 + exit_code: true + mount: + - _build + - deps + path_style: true + rebuild: true + region: us-east-1 services: - name: db diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index 35b0579..0000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,142 +0,0 @@ ---- -# based on: -# 1. https://dev.to/mnishiguchi/basic-github-actions-setup-for-phoenix-apps-m3g -# 2. https://www.jonathanyeong.com/garden/how-to-setup-ci-with-phoenix-github-actions/ -name: CI - -on: - push: - branches: [main] - pull_request: - brances: [main] - -env: - MIX_ENV: test - -jobs: - dependencies: - runs-on: ubuntu-20.04 - strategy: - matrix: - elixir: ['1.12.1'] - otp: ['24.0.2'] - steps: - - name: cancel previous execution - uses: styfle/cancel-workflow-action@0.9.0 - with: - access_token: ${{ github.token }} - - name: checkout repo - uses: actions/checkout@v2 - - name: setup erlang/elixir - uses: erlef/setup-beam@v1 - with: - elixir-version: ${{ matrix.elixir }} - otp-version: ${{ matrix.otp }} - - name: fecth cached dependencies - uses: actions/cache@v2 - id: mix-cache - with: - path: | - deps - _build - priv/plts - key: ${{ runner.os }}-${{ matrix.otp }}-${{ matrix.elixir }}-${{ hashFiles('mix.lock') }} - - name: install dependencies - if: steps.mix-cache.outputs.cache-hit != 'true' - run: | - mkdir -p priv/plts - mix local.rebar --force - mix local.hex --force - mix deps.get - mix deps.compile - mix dialyzer --plt - static-code-analysis: - needs: dependencies - runs-on: ubuntu-20.04 - strategy: - matrix: - elixir: ['1.12.1'] - otp: ['24.0.2'] - steps: - - name: cancel previous execution - uses: styfle/cancel-workflow-action@0.9.0 - with: - access_token: ${{ github.token }} - - name: checkout repo - uses: actions/checkout@v2 - - name: setup erlang/elixir - uses: erlef/setup-beam@v1 - with: - elixir-version: ${{ matrix.elixir }} - otp-version: ${{ matrix.otp }} - - name: fecth cached dependencies - uses: actions/cache@v2 - id: mix-cache - with: - path: | - deps - _build - priv/plts - key: ${{ runner.os }}-${{ matrix.otp }}-${{ matrix.elixir }}-${{ hashFiles('mix.lock') }} - - run: mix format --check-formatted - - name: credo analysis - uses: red-shirts/reviewdog-action-credo@v1 - with: - github_token: ${{ secrets.github_token }} - reporter: github-pr-review - - run: mix dialyzer --no-check --quiet --ignore-exit-status --format short - test: - needs: dependencies - runs-on: ubuntu-20.04 - strategy: - matrix: - elixir: ['1.12.1'] - otp: ['24.0.2'] - services: - db: - image: 'postgres:13.3-alpine' - ports: - - '5432:5432' - env: - POSTGRES_USER: postgres - POSTGRES_PASSWORD: postgres - options: >- - --health-cmd pg_isready - --health-interval 10s - --health-timeout 5s - --health-retries 5 - steps: - - name: cancel previous execution - uses: styfle/cancel-workflow-action@0.9.0 - with: - access_token: ${{ github.token }} - - name: checkout repo - uses: actions/checkout@v2 - - name: setup erlang/elixir - uses: erlef/setup-beam@v1 - with: - elixir-version: ${{ matrix.elixir }} - otp-version: ${{ matrix.otp }} - - name: fecth cached dependencies - uses: actions/cache@v2 - id: mix-cache - with: - path: | - deps - _build - priv/plts - key: ${{ runner.os }}-${{ matrix.otp }}-${{ matrix.elixir }}-${{ hashFiles('mix.lock') }} - - run: mix test --cover --trace --slowest 10 - env: - POSTGRES_USER: postgres - POSTGRES_PASS: postgres - - name: publish test results - uses: EnricoMi/publish-unit-test-result-action/composite@v1 - if: always() - with: - files: 'report/test/*.xml' - - name: publish coverage report - uses: romeovs/lcov-reporter-action@v0.2.16 - if: always() - with: - lcov-file: 'cover/lcov.info' diff --git a/lib/wabanex_web/schema/types/custom/date_range.ex b/lib/wabanex_web/schema/types/custom/date_range.ex index c32d58e..45e2dd3 100644 --- a/lib/wabanex_web/schema/types/custom/date_range.ex +++ b/lib/wabanex_web/schema/types/custom/date_range.ex @@ -17,7 +17,7 @@ defmodule WabanexWeb.Schema.Types.Custom.DateRange do end @spec serialize_range(PgRanges.DateRange.t()) :: String.t() - @spec serialize_range(list(String.t())) :: String.t() + @spec serialize_range(list(DateTime.t() | nil)) :: String.t() defp serialize_range(%PgRanges.DateRange{lower: start_range, upper: end_range}), do: serialize_range([start_range, end_range]) diff --git a/mix.lock b/mix.lock index 7c8db84..399b62d 100644 --- a/mix.lock +++ b/mix.lock @@ -40,7 +40,7 @@ "plug_crypto": {:hex, :plug_crypto, "1.2.2", "05654514ac717ff3a1843204b424477d9e60c143406aa94daf2274fdd280794d", [:mix], [], "hexpm", "87631c7ad914a5a445f0a3809f99b079113ae4ed4b867348dd9eec288cecb6db"}, "postgrex": {:hex, :postgrex, "0.16.2", "0f83198d0e73a36e8d716b90f45f3bde75b5eebf4ade4f43fa1f88c90a812f74", [:mix], [{:connection, "~> 1.1", [hex: :connection, repo: "hexpm", optional: false]}, {:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "a9ea589754d9d4d076121090662b7afe155b374897a6550eb288f11d755acfa0"}, "ranch": {:hex, :ranch, "1.8.0", "8c7a100a139fd57f17327b6413e4167ac559fbc04ca7448e9be9057311597a1d", [:make, :rebar3], [], "hexpm", "49fbcfd3682fab1f5d109351b61257676da1a2fdbe295904176d5e521a2ddfe5"}, - "telemetry": {:hex, :telemetry, "1.1.0", "a589817034a27eab11144ad24d5c0f9fab1f58173274b1e9bae7074af9cbee51", [], [], "hexpm", "b727b2a1f75614774cff2d7565b64d0dfa5bd52ba517f16543e6fc7efcc0df48"}, + "telemetry": {:hex, :telemetry, "1.1.0", "a589817034a27eab11144ad24d5c0f9fab1f58173274b1e9bae7074af9cbee51", [:rebar3], [], "hexpm", "b727b2a1f75614774cff2d7565b64d0dfa5bd52ba517f16543e6fc7efcc0df48"}, "telemetry_metrics": {:hex, :telemetry_metrics, "0.6.1", "315d9163a1d4660aedc3fee73f33f1d355dcc76c5c3ab3d59e76e3edf80eef1f", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7be9e0871c41732c233be71e4be11b96e56177bf15dde64a8ac9ce72ac9834c6"}, "telemetry_poller": {:hex, :telemetry_poller, "1.0.0", "db91bb424e07f2bb6e73926fcafbfcbcb295f0193e0a00e825e589a0a47e8453", [:rebar3], [{:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "b3a24eafd66c3f42da30fc3ca7dda1e9d546c12250a2d60d7b81d264fbec4f6e"}, }