Skip to content

feat: setup code attributes in Elixir macros #2032

feat: setup code attributes in Elixir macros

feat: setup code attributes in Elixir macros #2032

Workflow file for this run

name: Elixir
on:
pull_request:
branches:
- "main"
types: [opened, reopened, synchronize, labeled]
push:
branches:
- "main"
jobs:
format:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- uses: erlef/setup-beam@v1
with:
otp-version: "26.1.2"
elixir-version: "1.15.7"
version-type: "strict"
- uses: actions/cache@v4
name: Cache
with:
path: |
apps/opentelemetry_api/deps
key: v3-${{ hashFiles('apps/opentelemetry_api/mix.lock') }}
- run: mix format --check-formatted
- run: mix deps.get
working-directory: apps/opentelemetry_api/
- run: mix format --check-formatted
working-directory: apps/opentelemetry_api/
sdk_tests:
runs-on: ${{ matrix.os }}
name: Test SDK on Elixir ${{ matrix.elixir_version }} (OTP ${{ matrix.otp_version }}) and ${{ matrix.os }}
strategy:
matrix:
otp_version: ["26.1.2", "24.3.4.14"]
elixir_version: ["1.15.7", "1.12.3"]
rebar3_version: ["3.22.1"]
os: [ubuntu-24.04]
exclude:
- elixir_version: "1.12.3"
- otp_version: "26.1.2"
env:
OTP_VERSION: ${{ matrix.otp_version }}
ELIXIR_VERSION: ${{ matrix.elixir_version }}
steps:
- uses: actions/checkout@v4
- uses: erlef/setup-beam@v1
with:
otp-version: ${{ matrix.otp_version }}
elixir-version: ${{ matrix.elixir_version }}
rebar3-version: ${{ matrix.rebar3_version }}
version-type: "strict"
- name: Compile
run: rebar3 as test compile
- name: ExUnit
run: mix test --no-start test/otel_tests.exs test/otel_metric_tests.exs
api_tests:
runs-on: ${{ matrix.os }}
name: Test API on Elixir ${{ matrix.elixir_version }} (OTP ${{ matrix.otp_version }}) and ${{ matrix.os }}
strategy:
matrix:
otp_version: ["26.1.2", "24.3.4.14"]
elixir_version: ["1.15.7", "1.12.3"]
rebar3_version: ["3.22.1"]
os: [ubuntu-24.04]
exclude:
- elixir_version: "1.12.3"
- otp_version: "26.1.2"
env:
OTP_VERSION: ${{ matrix.otp_version }}
ELIXIR_VERSION: ${{ matrix.elixir_version }}
defaults:
run:
working-directory: apps/opentelemetry_api/
steps:
- uses: actions/checkout@v4
- uses: erlef/setup-beam@v1
with:
otp-version: ${{ matrix.otp_version }}
elixir-version: ${{ matrix.elixir_version }}
rebar3-version: ${{ matrix.rebar3_version }}
version-type: "strict"
- uses: actions/cache@v4
name: Cache
with:
path: |
apps/opentelemetry_api/deps
apps/opentelemetry_api/_build
key: ${{ runner.os }}-build-${{ matrix.otp_version }}-${{ matrix.elixir_version }}-v4-${{ hashFiles(format('{0}{1}', github.workspace, '/apps/opentelemetry_api/mix.lock')) }}
restore-keys: |
${{ runner.os }}-build-${{ matrix.otp_version }}-${{ matrix.elixir_version }}-
- run: mix deps.get
name: Deps
- run: mix test --cover
name: ExUnit
- uses: codecov/codecov-action@v5
if: ${{ always() }}
with:
file: apps/opentelemetry_api/coverage.xml
env_vars: OTP_VERSION,ELIXIR_VERSION
flags: api,elixir
dialyze:
runs-on: ${{ matrix.os }}
name: Dialyze on Elixir ${{ matrix.elixir_version }} (OTP ${{ matrix.otp_version }}) and ${{ matrix.os }}
strategy:
matrix:
otp_version: ["26.1.2"]
elixir_version: ["1.15.7"]
rebar_version: ["3.22.1"]
os: [ubuntu-24.04]
env:
OTP_VERSION: ${{ matrix.otp_version }}
ELIXIR_VERSION: ${{ matrix.elixir_version }}
defaults:
run:
working-directory: apps/opentelemetry_api/
steps:
- uses: actions/checkout@v4
- uses: erlef/setup-beam@v1
with:
otp-version: ${{ matrix.otp_version }}
elixir-version: ${{ matrix.elixir_version }}
version-type: "strict"
- uses: actions/cache@v4
name: Cache
with:
path: |
apps/opentelemetry_api/deps
apps/opentelemetry_api/_build
key: ${{ runner.os }}-dialyzer-${{ matrix.otp_version }}-${{ matrix.elixir_version }}-v4-${{ hashFiles('apps/opentelemetry_api/mix.lock') }}
restore-keys: |
${{ runner.os }}-build-${{ matrix.otp_version }}-${{ matrix.elixir_version }}-
- run: mix deps.get
name: Deps
- run: mix dialyzer
name: Dialyzer
semconv_tests:
runs-on: ${{ matrix.os }}
if: (contains(github.event.pull_request.labels.*.name, 'language-elixir') && contains(github.event.pull_request.labels.*.name, 'scope-semconv'))
name: Test SemConv on Elixir ${{ matrix.elixir_version }} (OTP ${{ matrix.otp_version }}) and ${{ matrix.os }}
strategy:
matrix:
otp_version: ["26.1.2", "24.3.4.14"]
elixir_version: ["1.15.7", "1.12.3"]
rebar3_version: ["3.22.1"]
os: [ubuntu-24.04]
exclude:
- elixir_version: "1.12.3"
- otp_version: "26.1.2"
defaults:
run:
working-directory: apps/opentelemetry_semantic_conventions
env:
OTP_VERSION: ${{ matrix.otp_version }}
ELIXIR_VERSION: ${{ matrix.elixir_version }}
steps:
- uses: actions/checkout@v4
- uses: erlef/setup-beam@v1
with:
otp-version: ${{ matrix.otp_version }}
elixir-version: ${{ matrix.elixir_version }}
rebar3-version: ${{ matrix.rebar3_version }}
version-type: "strict"
- name: Cache
uses: actions/cache@v4
with:
path: |
~/deps
~/_build
key: ${{ runner.os }}-test-${{ matrix.otp_version }}-${{ matrix.elixir_version }}-${{ hashFiles('**/mix.lock') }}
- name: Get and compile deps
if: steps.deps-cache.outputs.cache-hit != 'true'
run: |
mix deps.get
mix deps.compile
- name: ExUnit
run: mix test