This action sets up an Erlang/OTP environment for use in a GitHub Actions workflow by:
- installing Erlang/OTP
- optionally, installing Elixir
- optionally, installing
rebar3
Note Currently, this action only supports Actions' ubuntu-
runtimes.
See action.yml.
Note The Erlang/OTP release version specification is relatively
complex.
For best results, we recommend specifying exact Erlang/OTP, Elixir versions, and
rebar3
versions.
However, values like 22.x
are also accepted, and we attempt to resolve them
according to semantic versioning rules.
Additionally, it is recommended that one specifies Erlang/OTP, Elixir and rebar3
versions
using YAML strings, as these examples do, so that numbers like 23.0
don't
end up being parsed as 23
, which is not equivalent.
For pre-release Elixir versions, such as 1.11.0-rc.0
, use the full version
specifier (1.11.0-rc.0
). Pre-release versions are opt-in, so 1.11.x
will
not match a pre-release.
This list presents the known working version combos between Ubuntu and Erlang/OTP. Non-listed combos are not guaranteed to work.
Ubuntu | Erlang/OTP | Status |
---|---|---|
ubuntu-16.04 | 17 - 23 | ✅ |
ubuntu-18.04 | 20 - 23 | ✅ |
ubuntu-20.04 | 20 - 23 | ✅ |
on: push
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: erlef/setup-beam@v1
with:
otp-version: '22.2'
elixir-version: '1.9.4'
- run: mix deps.get
- run: mix test
on: push
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: erlef/setup-beam@v1
with:
otp-version: '22.2'
rebar3-version: '3.14.2'
- run: rebar3 ct
on: push
jobs:
test:
runs-on: ubuntu-latest
name: OTP ${{matrix.otp}} / Elixir ${{matrix.elixir}}
strategy:
matrix:
otp: ['20.3', '21.3', '22.2']
elixir: ['1.8.2', '1.9.4']
steps:
- uses: actions/checkout@v2
- uses: erlef/setup-beam@v1
with:
otp-version: ${{matrix.otp}}
elixir-version: ${{matrix.elixir}}
- run: mix deps.get
- run: mix test
on: push
jobs:
test:
runs-on: ubuntu-latest
name: Erlang/OTP ${{matrix.otp}} / rebar3 ${{matrix.rebar3}}
strategy:
matrix:
otp: ['20.3', '21.3', '22.2']
rebar3
8000
span>: ['3.14.1', '3.14.3']
steps:
- uses: actions/checkout@v2
- uses: erlef/setup-beam@v1
with:
otp-version: ${{matrix.otp}}
rebar3-version: ${{matrix.rebar3}}
- run: rebar3 ct
on: push
jobs:
test:
runs-on: ubuntu-latest
services:
db:
image: postgres:11
ports: ['5432:5432']
env:
POSTGRES_PASSWORD: postgres
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- uses: actions/checkout@v2
- uses: erlef/setup-beam@v1
with:
otp-version: '22.2'
elixir-version: '1.9.4'
- run: mix deps.get
- run: mix test
When using the Phoenix example above, the postgres
container has some
default authentication set up. Specifically, it expects a username of
"postgres", and a password of "postgres". It will be available at
localhost:5432
.
The simplest way of setting these auth values in CI is by checking for the
GITHUB_ACTIONS
environment variable that is set in all workflows:
# config/test.exs
use Mix.Config
# Configure the database for local testing
config :app, App.Repo,
database: "my_app_test",
hostname: "localhost",
pool: Ecto.Adapters.SQL.Sandbox
# Configure the database for GitHub Actions
if System.get_env("GITHUB_ACTIONS") do
config :app, App.Repo,
username: "postgres",
password: "postgres"
end
The Elixir Problem Matchers in this repository are adapted from here. See MATCHER_NOTICE for license details.
The scripts and documentation in this project are released under the MIT license.
Check out this doc.
This action is in active development.