Invidious CI #4578
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: 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 |