# Adapted from https://fly.io/phoenix-files/github-actions-for-elixir-ci/ name: pl CI on: push: branches: [ "fork" ] pull_request: branches: [ "fork" ] env: ELIXIR_VER: 1.15.8 POSTGRES_DB: pleroma_test MIX_ENV: test permissions: contents: read jobs: test: services: db: image: postgres:16 ports: ['5432:5432'] env: POSTGRES_DB: pleroma_test POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 runs-on: ubuntu-latest name: Test on OTP ${{matrix.otp}} / Elixir ${{matrix.elixir}} strategy: matrix: otp: ['26.2.5'] elixir: ['1.15.8'] steps: - name: Install system dependencies run: sudo apt install -y imagemagick ffmpeg libimage-exiftool-perl - name: Set up Elixir uses: erlef/setup-beam@v1 with: otp-version: ${{matrix.otp}} elixir-version: ${{matrix.elixir}} - name: Checkout code uses: actions/checkout@v3 - name: Cache deps id: cache-deps uses: actions/cache@v3 env: cache-name: cache-elixir-deps with: path: deps key: ${{ runner.os }}-mix-${{ env.cache-name }}-${{ hashFiles('**/mix.lock') }} restore-keys: | ${{ runner.os }}-mix-${{ env.cache-name }}- - name: Cache compiled build id: cache-build uses: actions/cache@v3 env: cache-name: cache-compiled-build with: path: _build key: ${{ runner.os }}-mix-${{ env.cache-name }}-${{ hashFiles('**/mix.lock') }} restore-keys: | ${{ runner.os }}-mix-${{ env.cache-name }}- ${{ runner.os }}-mix- - name: Install dependencies run: mix deps.get - name: Compiles without warnings run: mix compile --warnings-as-errors - name: Check Formatting run: mix format --check-formatted - name: Run tests run: | mix ecto.create mix ecto.migrate mix test --cover --preload-modules