From 874f77a19f0f36c72cfdc6de591bb9bd3bba45f5 Mon Sep 17 00:00:00 2001 From: Victor Oliveira Nascimento Date: Sat, 18 Jun 2022 20:47:34 -0300 Subject: [PATCH] small refactor of CI We don't release this library automatically for now so refactor CI to account for new matrix and remove release flow. --- .github/dependabot.yml | 2 +- .github/workflows/{tests.yml => ci.yml} | 39 ++++++----------- .github/workflows/release.yml | 58 ------------------------- lib/joken.ex | 29 +++++-------- mix.exs | 4 +- 5 files changed, 26 insertions(+), 106 deletions(-) rename .github/workflows/{tests.yml => ci.yml} (83%) delete mode 100644 .github/workflows/release.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml index db7d9c3..623da5d 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -3,7 +3,7 @@ updates: - package-ecosystem: mix directory: "/" schedule: - interval: weekly + interval: monthly open-pull-requests-limit: 10 ignore: - dependency-name: ex_doc diff --git a/.github/workflows/tests.yml b/.github/workflows/ci.yml similarity index 83% rename from .github/workflows/tests.yml rename to .github/workflows/ci.yml index d035ebb..0ab4eba 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/ci.yml @@ -1,10 +1,10 @@ -name: Tests +name: CI on: push: + branches: [ master ] pull_request: - branches: - - master + branches: [ master ] jobs: check_duplicate_runs: @@ -24,29 +24,24 @@ jobs: do_not_skip: '["pull_request"]' tests: - name: Run tests (Elixir ${{matrix.elixir}}, OTP ${{matrix.otp}}) + name: Run tests needs: check_duplicate_runs if: ${{ needs.check_duplicate_runs.outputs.should_skip != 'true' }} + env: + FORCE_COLOR: 1 + strategy: fail-fast: false matrix: - elixir: - - "1.8.2" - - "1.10.4" - - "1.12.2" - otp: - - "22.3" - - "23.3" - - "24.0" - exclude: - - elixir: "1.8.2" - otp: "23.3" - - elixir: "1.8.2" - otp: "24.0" - - elixir: "1.12.2" + include: + - elixir: "1.10.4" otp: "22.3" + - elixir: "1.12.2" + otp: "23.3" + - elixir: "1.13.3" + otp: "24.3" runs-on: ubuntu-latest @@ -88,30 +83,22 @@ jobs: - name: Check source code format run: mix format --check-formatted - if: ${{ matrix.lint }} - name: Perform source code static analysis run: mix credo --strict - if: ${{ matrix.lint }} env: MIX_ENV: test - - name: Check unused dependencies - run: mix deps.unlock --check-unused - if: ${{ matrix.lint }} - - name: Remove compiled application files run: mix clean - name: Compile dependencies run: mix compile - if: ${{ !matrix.lint }} env: MIX_ENV: test - name: Compile & lint dependencies run: mix compile --warnings-as-errors - if: ${{ matrix.lint }} env: MIX_ENV: test diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 354aab1..0000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,58 +0,0 @@ -name: Releases - -on: - push: - tags: - - .* - -jobs: - release: - name: Release new version - runs-on: ubuntu-latest - - steps: - - name: Wait for tests - uses: fountainhead/action-wait-for-check@v1.0.0 - id: wait-for-tests - with: - token: ${{ secrets.GITHUB_TOKEN }} - checkName: Tests done - ref: ${{ github.ref }} - timeoutSeconds: 3600 - - - name: Set up Elixir - uses: erlef/setup-beam@v1 - with: - elixir-version: "1.11.4" - otp-version: "23.3" - - - name: Checkout - uses: actions/checkout@v2 - - - name: Cache deps - id: cache-deps - uses: actions/cache@v2 - with: - path: | - deps - _build - key: deps-${{ runner.os }}-${{ hashFiles('**/mix.lock') }}-git-${{ github.sha }} - restore-keys: | - deps-${{ runner.os }}-${{ hashFiles('**/mix.lock') }} - deps-${{ runner.os }}-$ - - - name: Install package dependencies - run: mix deps.get - - - name: Create release - id: create_release - uses: softprops/action-gh-release@v1 - with: - token: ${{ secrets.GITHUB_TOKEN }} - draft: false - prerelease: false - - - name: Publish hex package - run: mix hex.publish --yes - env: - HEX_API_KEY: ${{ secrets.HEX_API_KEY }} diff --git a/lib/joken.ex b/lib/joken.ex index 6b52505..6616ee7 100644 --- a/lib/joken.ex +++ b/lib/joken.ex @@ -212,9 +212,9 @@ defmodule Joken do signer_arg \\ :default_signer, hooks \\ [] ) do - with {:ok, claims} <- generate_claims(token_config, extra_claims, hooks), - {:ok, token, claims} <- encode_and_sign(claims, signer_arg, hooks) do - {:ok, token, claims} + case generate_claims(token_config, extra_claims, hooks) do + {:ok, claims} -> encode_and_sign(claims, signer_arg, hooks) + err -> err end end @@ -254,10 +254,8 @@ defmodule Joken do with {:ok, {bearer_token, signer}} <- Hooks.run_before_hook(hooks, :before_verify, {bearer_token, signer}), :ok <- check_signer_not_empty(signer), - result <- Signer.verify(bearer_token, signer), - {:ok, claims_map} <- - Hooks.run_after_hook(hooks, :after_verify, result, {bearer_token, signer}) do - {:ok, claims_map} + result <- Signer.verify(bearer_token, signer) do + Hooks.run_after_hook(hooks, :after_verify, result, {bearer_token, signer}) end end @@ -298,9 +296,9 @@ defmodule Joken do context \\ nil, hooks \\ [] ) do - with {:ok, claims} <- verify(bearer_token, signer, hooks), - {:ok, claims} <- validate(token_config, claims, context, hooks) do - {:ok, claims} + case verify(bearer_token, signer, hooks) do + {:ok, claims} -> validate(token_config, claims, context, hooks) + err -> err end end @@ -338,15 +336,8 @@ defmodule Joken do def generate_claims(token_config, extra_claims, hooks) do with {:ok, {token_config, extra_claims}} <- Hooks.run_before_hook(hooks, :before_generate, {token_config, extra_claims}), - claims <- Enum.reduce(token_config, extra_claims, &Claim.__generate_claim__/2), - {:ok, claims} <- - Hooks.run_after_hook( - hooks, - :after_generate, - {:ok, claims}, - {token_config, extra_claims} - ) do - {:ok, claims} + claims <- Enum.reduce(token_config, extra_claims, &Claim.__generate_claim__/2) do + Hooks.run_after_hook(hooks, :after_generate, {:ok, claims}, {token_config, extra_claims}) end end diff --git a/mix.exs b/mix.exs index fc39964..0157414 100644 --- a/mix.exs +++ b/mix.exs @@ -2,14 +2,14 @@ defmodule Joken.Mixfile do use Mix.Project @source_url "https://github.com/joken-elixir/joken" - @version "2.4.1" + @version "2.5.0" def project do [ app: :joken, version: @version, name: "Joken", - elixir: "~> 1.8", + elixir: "~> 1.10", elixirc_paths: elixirc_paths(Mix.env()), start_permanent: Mix.env() == :prod, consolidate_protocols: Mix.env() != :test,