Invidious CI #124
This file contains hidden or 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.12.2 | |
- 1.13.3 | |
- 1.14.1 | |
- 1.15.1 | |
- 1.16.3 | |
include: | |
- crystal: nightly | |
stable: false | |
steps: | |
- uses: actions/checkout@v5 | |
with: | |
submodules: true | |
- name: Install required APT packages | |
run: | | |
sudo apt install -y libsqlite3-dev | |
shell: bash | |
- name: Install Crystal | |
uses: crystal-lang/[email protected] | |
with: | |
crystal: ${{ matrix.crystal }} | |
- name: Cache Shards | |
uses: actions/cache@v4 | |
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: | |
strategy: | |
matrix: | |
include: | |
- os: ubuntu-latest | |
name: "AMD64" | |
# GitHub doesn't have a ubuntu-latest-arm runner | |
- os: ubuntu-24.04-arm | |
name: "ARM64" | |
name: Test ${{ matrix.name }} Docker build | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v5 | |
- name: Use ARM64 Dockerfile if ARM64 | |
if: ${{ matrix.name }} == "ARM64" | |
run: sed -i 's/Dockerfile/Dockerfile.arm64/' docker-compose.yml | |
- name: Build Docker | |
run: docker compose build | |
- name: Change hmac_key on docker-compose.yml | |
run: sed -i '/hmac_key/s/CHANGE_ME!!/docker-build-hmac-key/' docker-compose.yml | |
- name: Run Docker | |
run: docker compose up -d | |
- name: Test Docker | |
id: test | |
run: curl -If http://localhost:3000 --retry 5 --retry-delay 1 --retry-all-errors | |
- name: Print Invidious container logs | |
# Tells Github Actions to always run this step regardless of whether the previous step has failed | |
# Without this expression this step would simply be skipped when the previous step fails. | |
if: success() || steps.test.conclusion == 'failure' | |
run: docker compose logs | |
lint: | |
runs-on: ubuntu-latest | |
continue-on-error: true | |
steps: | |
- uses: actions/checkout@v5 | |
with: | |
submodules: true | |
- name: Install Crystal | |
id: lint_step_install_crystal | |
uses: crystal-lang/[email protected] | |
with: | |
crystal: latest | |
- name: Cache Shards | |
uses: actions/cache@v4 | |
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 |