From 378f9a8b5fd1bc27a4c091cf75cac703c0b02ba7 Mon Sep 17 00:00:00 2001 From: Ben Booth Date: Thu, 5 Sep 2019 13:24:08 +1000 Subject: [PATCH 01/25] Add a GitHub action to build the Elixir API --- .github/workflows/api.yml | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 .github/workflows/api.yml diff --git a/.github/workflows/api.yml b/.github/workflows/api.yml new file mode 100644 index 0000000..a226c19 --- /dev/null +++ b/.github/workflows/api.yml @@ -0,0 +1,31 @@ +name: Elixir API CI + +on: + push: + paths: + - 'api/**' + +jobs: + build: + + runs-on: ubuntu-latest + + container: + image: elixir:1.9-slim + + services: + postgresql: + image: postgres + + steps: + - uses: actions/checkout@v1 + - name: Install dependencies + run: | + mix local.rebar --force + mix local.hex --force + mix deps.get + mix ecto.create + - name: Check formatting + run: mix format --check-formatted + - name: Run tests + run: mix test From e54cce95ba6fb813d788e81c48e08f13769c6ceb Mon Sep 17 00:00:00 2001 From: Ben Booth Date: Thu, 5 Sep 2019 13:25:50 +1000 Subject: [PATCH 02/25] Remove .travis.yml --- .travis.yml | 27 --------------------------- 1 file changed, 27 deletions(-) delete mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index fb6a232..0000000 --- a/.travis.yml +++ /dev/null @@ -1,27 +0,0 @@ -language: elixir -elixir: - - "1.9" -otp_release: - - "22.0" - -services: - - postgresql - -before_install: - - cd api - -before_script: - - mix ecto.create - -script: - - mix format --check-formatted - - mix test - -after_success: - - cd .. - -deploy: - provider: script - script: bash api/scripts/deploy.sh - on: - branch: master From fb7da83bcf91bfa991e6c4e5a0a38e1d7aeb55ec Mon Sep 17 00:00:00 2001 From: Ben Booth Date: Thu, 5 Sep 2019 13:32:57 +1000 Subject: [PATCH 03/25] Change into API directory --- .github/workflows/api.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/api.yml b/.github/workflows/api.yml index a226c19..d8181eb 100644 --- a/.github/workflows/api.yml +++ b/.github/workflows/api.yml @@ -19,6 +19,7 @@ jobs: steps: - uses: actions/checkout@v1 + - run: cd api/ - name: Install dependencies run: | mix local.rebar --force From 85c371ff3e440b63ed418b9977475bdce4e8f754 Mon Sep 17 00:00:00 2001 From: Ben Booth Date: Thu, 5 Sep 2019 13:36:31 +1000 Subject: [PATCH 04/25] Make steps more granular --- .github/workflows/api.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/api.yml b/.github/workflows/api.yml index d8181eb..471bb51 100644 --- a/.github/workflows/api.yml +++ b/.github/workflows/api.yml @@ -19,13 +19,15 @@ jobs: steps: - uses: actions/checkout@v1 - - run: cd api/ + - name: Change working directory + run: cd api/ - name: Install dependencies run: | mix local.rebar --force mix local.hex --force mix deps.get - mix ecto.create + - name: Setup database + run: mix ecto.create - name: Check formatting run: mix format --check-formatted - name: Run tests From 80275aac3923b6a36e9d57565adfe569dc23330a Mon Sep 17 00:00:00 2001 From: Ben Booth Date: Thu, 5 Sep 2019 13:42:42 +1000 Subject: [PATCH 05/25] Update api.yml --- .github/workflows/api.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/api.yml b/.github/workflows/api.yml index 471bb51..71b7895 100644 --- a/.github/workflows/api.yml +++ b/.github/workflows/api.yml @@ -3,11 +3,11 @@ name: Elixir API CI on: push: paths: + - '.github/workflows/api.yml' - 'api/**' jobs: build: - runs-on: ubuntu-latest container: From 1dcda9ab15e8e9462c40511e938cabe8f745b610 Mon Sep 17 00:00:00 2001 From: Ben Booth Date: Thu, 5 Sep 2019 13:46:25 +1000 Subject: [PATCH 06/25] Set working-directory for each step --- .github/workflows/api.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/.github/workflows/api.yml b/.github/workflows/api.yml index 71b7895..d67e299 100644 --- a/.github/workflows/api.yml +++ b/.github/workflows/api.yml @@ -19,16 +19,15 @@ jobs: steps: - uses: actions/checkout@v1 - - name: Change working directory - run: cd api/ - - name: Install dependencies + - name: Setup dependencies + working-directory: api run: | mix local.rebar --force mix local.hex --force mix deps.get - - name: Setup database - run: mix ecto.create - - name: Check formatting - run: mix format --check-formatted + mix ecto.create - name: Run tests - run: mix test + working-directory: api + run: | + mix format --check-formatted + mix test From 192c80cdcf8392fe3ff6bfa6031c4065c7c3c717 Mon Sep 17 00:00:00 2001 From: Ben Booth Date: Thu, 5 Sep 2019 13:49:49 +1000 Subject: [PATCH 07/25] Don't use slim docker image Attempt to fix missing "make" error --- .github/workflows/api.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/api.yml b/.github/workflows/api.yml index d67e299..94a1db7 100644 --- a/.github/workflows/api.yml +++ b/.github/workflows/api.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest container: - image: elixir:1.9-slim + image: elixir:1.9 services: postgresql: @@ -20,14 +20,14 @@ jobs: steps: - uses: actions/checkout@v1 - name: Setup dependencies - working-directory: api + working-directory: api/ run: | mix local.rebar --force mix local.hex --force mix deps.get mix ecto.create - name: Run tests - working-directory: api + working-directory: api/ run: | mix format --check-formatted mix test From 1e8cfcaed981f8f9158e820e189d05254172d741 Mon Sep 17 00:00:00 2001 From: Ben Booth Date: Thu, 5 Sep 2019 14:01:11 +1000 Subject: [PATCH 08/25] Setup PostgreSQL user/password and port --- .github/workflows/api.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/api.yml b/.github/workflows/api.yml index 94a1db7..66dee56 100644 --- a/.github/workflows/api.yml +++ b/.github/workflows/api.yml @@ -16,6 +16,11 @@ jobs: services: postgresql: image: postgres + ports: + - 5432:5432 + env: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres steps: - uses: actions/checkout@v1 From 261585025229f3e2c0d76c750bcdb68e0cb91f22 Mon Sep 17 00:00:00 2001 From: Ben Booth Date: Thu, 5 Sep 2019 14:07:44 +1000 Subject: [PATCH 09/25] Get db hostname from env in test environment --- api/config/test.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/config/test.exs b/api/config/test.exs index 8e7f328..587eb8a 100644 --- a/api/config/test.exs +++ b/api/config/test.exs @@ -5,7 +5,7 @@ config :locationiser, Locationiser.Repo, username: "postgres", password: "postgres", database: "locationiser_test", - hostname: "localhost", + hostname: System.get_env("DATABASE_HOST") || "localhost", pool: Ecto.Adapters.SQL.Sandbox # We don't run a server during test. If one is required, From 3b208f0c9dc96eb63e46af1b62618672eeb91f1e Mon Sep 17 00:00:00 2001 From: Ben Booth Date: Thu, 5 Sep 2019 14:13:38 +1000 Subject: [PATCH 10/25] More database config --- .github/workflows/api.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/api.yml b/.github/workflows/api.yml index 66dee56..51c4154 100644 --- a/.github/workflows/api.yml +++ b/.github/workflows/api.yml @@ -4,7 +4,7 @@ on: push: paths: - '.github/workflows/api.yml' - - 'api/**' + - 'api/*' jobs: build: @@ -12,6 +12,8 @@ jobs: container: image: elixir:1.9 + env: + DATABASE_HOST: postgresql services: postgresql: From 1d3f09cf6f9cc40a6750434b4a1da7a634318325 Mon Sep 17 00:00:00 2001 From: Ben Booth Date: Thu, 5 Sep 2019 14:19:09 +1000 Subject: [PATCH 11/25] Set MIX_ENV to test --- .github/workflows/api.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/api.yml b/.github/workflows/api.yml index 51c4154..e0e80f9 100644 --- a/.github/workflows/api.yml +++ b/.github/workflows/api.yml @@ -14,6 +14,7 @@ jobs: image: elixir:1.9 env: DATABASE_HOST: postgresql + MIX_ENV: test services: postgresql: From 4bada9e9b62e76f53063de2f7c01f09db7a2fc52 Mon Sep 17 00:00:00 2001 From: Ben Booth Date: Thu, 5 Sep 2019 14:47:18 +1000 Subject: [PATCH 12/25] Attempt to get Postgres service host --- .github/workflows/api.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/api.yml b/.github/workflows/api.yml index e0e80f9..6d7a3b0 100644 --- a/.github/workflows/api.yml +++ b/.github/workflows/api.yml @@ -13,7 +13,7 @@ jobs: container: image: elixir:1.9 env: - DATABASE_HOST: postgresql + DATABASE_HOST: ${{ jobs.services.network }} MIX_ENV: test services: From 06583701043ab48c414ca618de5e7e7cbe9f38c8 Mon Sep 17 00:00:00 2001 From: Ben Booth Date: Thu, 5 Sep 2019 14:48:43 +1000 Subject: [PATCH 13/25] Fix typo jobs -> job --- .github/workflows/api.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/api.yml b/.github/workflows/api.yml index 6d7a3b0..540d4e8 100644 --- a/.github/workflows/api.yml +++ b/.github/workflows/api.yml @@ -13,7 +13,7 @@ jobs: container: image: elixir:1.9 env: - DATABASE_HOST: ${{ jobs.services.network }} + DATABASE_HOST: ${{ job.services.network }} MIX_ENV: test services: From cf18c4e105242680d99d5277598aacae1a14e9c7 Mon Sep 17 00:00:00 2001 From: Ben Booth Date: Thu, 5 Sep 2019 14:51:10 +1000 Subject: [PATCH 14/25] Try moving services before container --- .github/workflows/api.yml | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/.github/workflows/api.yml b/.github/workflows/api.yml index 540d4e8..3b0217a 100644 --- a/.github/workflows/api.yml +++ b/.github/workflows/api.yml @@ -9,12 +9,6 @@ on: jobs: build: runs-on: ubuntu-latest - - container: - image: elixir:1.9 - env: - DATABASE_HOST: ${{ job.services.network }} - MIX_ENV: test services: postgresql: @@ -22,9 +16,14 @@ jobs: ports: - 5432:5432 env: - POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres + container: + image: elixir:1.9 + env: + DATABASE_HOST: ${{ job.services.network }} + MIX_ENV: test + steps: - uses: actions/checkout@v1 - name: Setup dependencies From e84947d14197dde655a5cbaa48dafa744927e2ed Mon Sep 17 00:00:00 2001 From: Ben Booth Date: Thu, 5 Sep 2019 15:03:31 +1000 Subject: [PATCH 15/25] Set env variables on each step --- .github/workflows/api.yml | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/.github/workflows/api.yml b/.github/workflows/api.yml index 3b0217a..344014f 100644 --- a/.github/workflows/api.yml +++ b/.github/workflows/api.yml @@ -9,7 +9,10 @@ on: jobs: build: runs-on: ubuntu-latest - + + container: + image: elixir:1.9 + services: postgresql: image: postgres @@ -18,12 +21,6 @@ jobs: env: POSTGRES_PASSWORD: postgres - container: - image: elixir:1.9 - env: - DATABASE_HOST: ${{ job.services.network }} - MIX_ENV: test - steps: - uses: actions/checkout@v1 - name: Setup dependencies @@ -33,8 +30,14 @@ jobs: mix local.hex --force mix deps.get mix ecto.create + env: + DATABASE_HOST: ${{ job.services.network }} + MIX_ENV: test - name: Run tests working-directory: api/ run: | mix format --check-formatted mix test + env: + DATABASE_HOST: ${{ job.services.network }} + MIX_ENV: test From e219063f2afcb9d81e376101e71a330380c1d403 Mon Sep 17 00:00:00 2001 From: Ben Booth Date: Fri, 6 Sep 2019 14:03:33 +1000 Subject: [PATCH 16/25] Update api.yml --- .github/workflows/api.yml | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/.github/workflows/api.yml b/.github/workflows/api.yml index 344014f..fa21c81 100644 --- a/.github/workflows/api.yml +++ b/.github/workflows/api.yml @@ -12,6 +12,8 @@ jobs: container: image: elixir:1.9 + env: + MIX_ENV: test services: postgresql: @@ -23,21 +25,21 @@ jobs: steps: - uses: actions/checkout@v1 - - name: Setup dependencies + - name: Install dependencies working-directory: api/ run: | mix local.rebar --force mix local.hex --force mix deps.get mix ecto.create - env: - DATABASE_HOST: ${{ job.services.network }} - MIX_ENV: test + mix ecto.migrate + - name: Setup database + working-directory: api/ + run: | + mix ecto.create + mix ecto.migrate - name: Run tests working-directory: api/ run: | mix format --check-formatted mix test - env: - DATABASE_HOST: ${{ job.services.network }} - MIX_ENV: test From 47fa3955563ad60e15b296adef21d4e3426a93f6 Mon Sep 17 00:00:00 2001 From: Ben Booth Date: Fri, 6 Sep 2019 14:13:16 +1000 Subject: [PATCH 17/25] Update api.yml --- .github/workflows/api.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/workflows/api.yml b/.github/workflows/api.yml index fa21c81..a4af9ba 100644 --- a/.github/workflows/api.yml +++ b/.github/workflows/api.yml @@ -18,8 +18,6 @@ jobs: services: postgresql: image: postgres - ports: - - 5432:5432 env: POSTGRES_PASSWORD: postgres @@ -31,8 +29,6 @@ jobs: mix local.rebar --force mix local.hex --force mix deps.get - mix ecto.create - mix ecto.migrate - name: Setup database working-directory: api/ run: | From 3aacdc3ba0ffd48389b5e6703a19e3f70a90a142 Mon Sep 17 00:00:00 2001 From: Ben Booth Date: Thu, 12 Sep 2019 09:52:38 +1000 Subject: [PATCH 18/25] Add --health options to postgres service container --- .github/workflows/api.yml | 40 ++++++++++++++++++++++----------------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/.github/workflows/api.yml b/.github/workflows/api.yml index a4af9ba..ab09085 100644 --- a/.github/workflows/api.yml +++ b/.github/workflows/api.yml @@ -14,28 +14,34 @@ jobs: image: elixir:1.9 env: MIX_ENV: test + DATABASE_HOST: postgresql services: postgresql: image: postgres env: POSTGRES_PASSWORD: postgres + options: >- + --health-cmd pg_isready + --health-interval 10s + --health-timeout 5s + --health-retries 5 steps: - - uses: actions/checkout@v1 - - name: Install dependencies - working-directory: api/ - run: | - mix local.rebar --force - mix local.hex --force - mix deps.get - - name: Setup database - working-directory: api/ - run: | - mix ecto.create - mix ecto.migrate - - name: Run tests - working-directory: api/ - run: | - mix format --check-formatted - mix test + - uses: actions/checkout@v1 + - name: Install dependencies + working-directory: api/ + run: | + mix local.rebar --force + mix local.hex --force + mix deps.get + - name: Setup database + working-directory: api/ + run: | + mix ecto.create + mix ecto.migrate + - name: Run tests + working-directory: api/ + run: | + mix format --check-formatted + mix test From aecea9177b4040f20cd769bf7cbd725b1084ec02 Mon Sep 17 00:00:00 2001 From: Ben Booth Date: Thu, 12 Sep 2019 16:08:10 +1000 Subject: [PATCH 19/25] Add a deploy action --- .github/workflows/api-deploy.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 .github/workflows/api-deploy.yml diff --git a/.github/workflows/api-deploy.yml b/.github/workflows/api-deploy.yml new file mode 100644 index 0000000..cb27113 --- /dev/null +++ b/.github/workflows/api-deploy.yml @@ -0,0 +1,21 @@ +name: Elixir API CD + +on: + push: + # branches: + # - master + paths: + - '.github/workflows/api.yml' + - 'api/*' + +jobs: + deploy: + runs-on: ubuntu-latest + needs: build + + steps: + - uses: actions/checkout@v1 + - name: Deploy to Gigalixir + working-directory: api/ + shell: bash + run: api/scripts/deploy.sh From 72b8d8360e08988720ae9d5f59059c0e803cbec5 Mon Sep 17 00:00:00 2001 From: Ben Booth Date: Thu, 12 Sep 2019 16:09:30 +1000 Subject: [PATCH 20/25] Update api.yml --- .github/workflows/api.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/api.yml b/.github/workflows/api.yml index ab09085..7820f80 100644 --- a/.github/workflows/api.yml +++ b/.github/workflows/api.yml @@ -3,7 +3,7 @@ name: Elixir API CI on: push: paths: - - '.github/workflows/api.yml' + - '.github/workflows/api*' - 'api/*' jobs: From 48ca2603b27b51deb7da3dd6e6ab72f9fe91b78f Mon Sep 17 00:00:00 2001 From: Ben Booth Date: Thu, 12 Sep 2019 16:09:45 +1000 Subject: [PATCH 21/25] Update api-deploy.yml --- .github/workflows/api-deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/api-deploy.yml b/.github/workflows/api-deploy.yml index cb27113..375d7af 100644 --- a/.github/workflows/api-deploy.yml +++ b/.github/workflows/api-deploy.yml @@ -5,7 +5,7 @@ on: # branches: # - master paths: - - '.github/workflows/api.yml' + - '.github/workflows/api*' - 'api/*' jobs: From 3011734872c290088762a0b8e30dc6746b43182c Mon Sep 17 00:00:00 2001 From: Ben Booth Date: Thu, 12 Sep 2019 16:13:19 +1000 Subject: [PATCH 22/25] Delete api-deploy.yml --- .github/workflows/api-deploy.yml | 21 --------------------- 1 file changed, 21 deletions(-) delete mode 100644 .github/workflows/api-deploy.yml diff --git a/.github/workflows/api-deploy.yml b/.github/workflows/api-deploy.yml deleted file mode 100644 index 375d7af..0000000 --- a/.github/workflows/api-deploy.yml +++ /dev/null @@ -1,21 +0,0 @@ -name: Elixir API CD - -on: - push: - # branches: - # - master - paths: - - '.github/workflows/api*' - - 'api/*' - -jobs: - deploy: - runs-on: ubuntu-latest - needs: build - - steps: - - uses: actions/checkout@v1 - - name: Deploy to Gigalixir - working-directory: api/ - shell: bash - run: api/scripts/deploy.sh From 36b3dced01d0076857aeb8d6d1f86f463fbce8f3 Mon Sep 17 00:00:00 2001 From: Ben Booth Date: Thu, 12 Sep 2019 16:19:34 +1000 Subject: [PATCH 23/25] Add a deploy job --- .github/workflows/api.yml | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/.github/workflows/api.yml b/.github/workflows/api.yml index 7820f80..c6a2c74 100644 --- a/.github/workflows/api.yml +++ b/.github/workflows/api.yml @@ -3,7 +3,7 @@ name: Elixir API CI on: push: paths: - - '.github/workflows/api*' + - '.github/workflows/api.yml' - 'api/*' jobs: @@ -45,3 +45,14 @@ jobs: run: | mix format --check-formatted mix test + + deploy: + runs-on: ubuntu-latest + needs: build + steps: + - uses: actions/checkout@v1 + - name: Deploy to Gigalixir + if: github.ref == 'refs/heads/master' + working-directory: api/ + shell: bash + run: scripts/deploy.sh From 0abc55f99e7db64edbf3d7114c954da7cfcdae4b Mon Sep 17 00:00:00 2001 From: Ben Booth Date: Thu, 12 Sep 2019 16:30:38 +1000 Subject: [PATCH 24/25] Temporarily disable master branch check for deploy --- .github/workflows/api.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/api.yml b/.github/workflows/api.yml index c6a2c74..ce4dc54 100644 --- a/.github/workflows/api.yml +++ b/.github/workflows/api.yml @@ -52,7 +52,7 @@ jobs: steps: - uses: actions/checkout@v1 - name: Deploy to Gigalixir - if: github.ref == 'refs/heads/master' + # if: github.ref == 'refs/heads/master' working-directory: api/ shell: bash run: scripts/deploy.sh From 50ca33368250bcb6654504dd24ef3a5744a168f4 Mon Sep 17 00:00:00 2001 From: Ben Booth Date: Tue, 24 Sep 2019 12:26:08 +1000 Subject: [PATCH 25/25] Attempt to fix deploy job --- .github/workflows/api.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/api.yml b/.github/workflows/api.yml index ce4dc54..46e5d2f 100644 --- a/.github/workflows/api.yml +++ b/.github/workflows/api.yml @@ -54,5 +54,4 @@ jobs: - name: Deploy to Gigalixir # if: github.ref == 'refs/heads/master' working-directory: api/ - shell: bash - run: scripts/deploy.sh + run: ./scripts/deploy.sh