name: Philomena Build on: [push, pull_request] jobs: build: name: 'Build Elixir app' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Cache mix deps uses: actions/cache@v4 with: path: | _build deps key: ${{ runner.os }}-build-deps-${{ hashFiles('mix.lock') }} - run: docker compose pull - run: docker compose build - name: Build and test run: docker compose run app run-test - name: Security lint run: | docker compose run app mix sobelow --config docker compose run app mix deps.audit lint-and-test: name: 'JavaScript Linting and Unit Tests' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20' - name: Cache node_modules id: cache-node-modules uses: actions/cache@v4 with: path: ./assets/node_modules key: node_modules-${{ hashFiles('./assets/package-lock.json') }} - name: Install npm dependencies if: steps.cache-node-modules.outputs.cache-hit != 'true' run: npm ci --ignore-scripts working-directory: ./assets - run: npm run lint working-directory: ./assets - run: npm run test working-directory: ./assets