mirror of
https://github.com/iv-org/invidious.git
synced 2025-02-11 12:18:34 -05:00
![syeopite](/assets/img/avatar_default.png)
Ameba could be built with an older version of Crystal that follows a different set of formatting rules than the latest version causing the Lint/Formatting rule to fail when in actuality the code is actually compliant with the formatting rules in the latest version of Crystal
168 lines
3.5 KiB
YAML
168 lines
3.5 KiB
YAML
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
|
|
id: lint_step_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') }}-${{ steps.lint_step_install_crystal.outputs.crystal }}
|
|
|
|
- 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
|