123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- name: Invidious CI
- on:
- schedule:
- - cron: "0 0 * * *" # Every day at 00:00
- push:
- branches:
- - "master"
- - "api-only"
- pull_request:
- branches: "*"
- paths-ignore:
- - "*.md"
- - LICENCE
- - TRANSLATION
- - invidious.service
- - .git*
- - .editorconfig
- - screenshots/*
- - assets/**
- - locales/*
- - config/**
- - .github/ISSUE_TEMPLATE/*
- - kubernetes/**
- jobs:
- build:
- runs-on: ubuntu-latest
- name: "build - crystal: ${{ matrix.crystal }}, stable: ${{ matrix.stable }}"
- continue-on-error: ${{ !matrix.stable }}
- strategy:
- fail-fast: false
- matrix:
- stable: [true]
- crystal:
- - 1.10.1
- - 1.11.2
- - 1.12.1
- - 1.13.2
- - 1.14.0
- include:
- - crystal: nightly
- stable: false
- steps:
- - uses: actions/checkout@v4
- with:
- submodules: true
- - name: Install required APT packages
- run: |
- sudo apt install -y libsqlite3-dev
- shell: bash
- - name: Install Crystal
- uses: crystal-lang/install-crystal@v1.8.0
- with:
- crystal: ${{ matrix.crystal }}
- - name: Cache Shards
- uses: actions/cache@v3
- with:
- path: |
- ./lib
- ./bin
- key: shards-${{ hashFiles('shard.lock') }}
- - name: Install Shards
- run: |
- if ! shards check; then
- shards install
- fi
- - name: Run tests
- run: crystal spec
- - name: Build
- run: crystal build --warnings all --error-on-warnings --error-trace src/invidious.cr
- build-docker:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
- - name: Build Docker
- run: docker compose build --build-arg release=0
- - name: Run Docker
- run: docker compose up -d
- - name: Test Docker
- run: while curl -Isf http://localhost:3000; do sleep 1; done
- build-docker-arm64:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
- - name: Set up QEMU
- uses: docker/setup-qemu-action@v3
- with:
- platforms: arm64
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
- - name: Build Docker ARM64 image
- uses: docker/build-push-action@v5
- with:
- context: .
- file: docker/Dockerfile.arm64
- platforms: linux/arm64/v8
- build-args: release=0
- - name: Test Docker
- run: while curl -Isf http://localhost:3000; do sleep 1; done
- lint:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v4
- with:
- submodules: true
- - name: Install Crystal
- uses: crystal-lang/install-crystal@v1.8.0
- with:
- crystal: latest
- - name: Cache Shards
- uses: actions/cache@v3
- with:
- path: |
- ./lib
- ./bin
- key: shards-${{ hashFiles('shard.lock') }}
- - name: Install Shards
- run: |
- if ! shards check; then
- shards install
- fi
- - name: Check Crystal formatter compliance
- run: |
- if ! crystal tool format --check; then
- crystal tool format
- git diff
- exit 1
- fi
- - name: Run Ameba linter
- run: bin/ameba
|