Fix maintenance for admin #1250
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build master | |
on: | |
push: | |
branches: | |
- master | |
workflow_dispatch: | |
jobs: | |
build: | |
if: github.repository == 'hexlet-codebattle/codebattle' | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 # Add timeout to prevent hanging builds | |
env: | |
MIX_ENV: test | |
DOCKER_BUILDKIT: 1 # Enable buildkit for faster docker builds | |
services: | |
db: | |
image: postgres:16-alpine | |
ports: ["5432:5432"] | |
env: | |
POSTGRES_PASSWORD: postgres | |
POSTGRES_HOST_AUTH_METHOD: trust # Simplify auth for CI | |
options: >- | |
--health-cmd pg_isready | |
--health-interval 10s | |
--health-timeout 5s | |
--health-retries 5 | |
--name=pg_ci | |
--mount type=tmpfs,destination=/var/lib/postgresql/data | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 # Fetch complete history for better caching | |
- name: Setup Elixir | |
uses: erlef/setup-beam@v1 | |
with: | |
otp-version: "27.2" | |
elixir-version: "1.18.2" | |
- name: Cache Dependencies | |
uses: actions/cache@v4 | |
id: deps-cache | |
with: | |
path: | | |
./services/app/deps | |
./services/app/_build | |
key: ${{ runner.os }}-mix-${{ hashFiles('**/mix.lock') }} | |
restore-keys: | | |
${{ runner.os }}-mix- | |
- name: Get deps | |
run: | | |
mix local.hex --force | |
mix local.rebar --force | |
mix deps.get | |
working-directory: ./services/app | |
- name: Mix deps.compile | |
run: mix compile --warnings-as-errors | |
working-directory: ./services/app | |
- name: Mix format | |
run: mix format --check-formatted | |
working-directory: ./services/app | |
- name: Mix credo | |
run: mix credo | |
working-directory: ./services/app | |
- name: Get yarn cache | |
id: yarn-cache | |
run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT | |
- uses: actions/cache@v4 | |
with: | |
path: ${{ steps.yarn-cache.outputs.dir }} | |
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} | |
restore-keys: | | |
${{ runner.os }}-yarn- | |
- name: Install yarn dependencies | |
run: yarn install --frozen-lockfile --network-timeout 300000 | |
working-directory: ./services/app/apps/codebattle | |
- name: Eslint | |
run: yarn lint | |
working-directory: ./services/app/apps/codebattle | |
- name: Run jest | |
run: yarn test | |
working-directory: ./services/app/apps/codebattle | |
- name: Mix audit | |
run: mix hex.audit | |
working-directory: ./services/app | |
- name: Setup db | |
run: mix ecto.create && mix ecto.migrate | |
working-directory: ./services/app | |
- name: Mix tests | |
run: make test | |
- name: Upload coverage to Codecov | |
uses: codecov/codecov-action@v3 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
file: ./services/app/assp/codebattle/cover/excoveralls.json | |
fail_ci_if_error: false | |
- name: Login to Docker Hub | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.DOCKER_USERNAME }} | |
password: ${{ secrets.DOCKER_PASSWORD }} | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Build and push codebattle image | |
run: | | |
make GIT_HASH=${{ github.sha }} docker-build-codebattle | |
make docker-push-codebattle | |
- name: Build and push runner image | |
run: | | |
make docker-build-runner | |
make docker-push-runner | |
# stop integratoin tests on CI becaues of https://github.com/hexlet-codebattle/codebattle/runs/580337561?check_suite_focus=true | |
# - name: Pull dockers | |
# run: mix dockers.pull | |
# working-directory: ./services/app | |
# - name: Run code checkers tests | |
# run: make test-code-checkers |