Test CI #21
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@v4 | |
| 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: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Build Docker | |
| run: docker compose build | |
| - name: Run Docker | |
| run: docker compose up -d | |
| - name: Test Docker | |
| id: test | |
| run: curl -If http://localhost:3000 | |
| - name: Print Invidious container logs | |
| if: success() || steps.test.conclusion == 'failure' | |
| run: docker compose logs | |
| build-docker-arm64: | |
| runs-on: ubuntu-24.04-arm | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Build Docker | |
| run: docker compose -f docker-compose-arm64.yml build | |
| - name: Run Docker | |
| run: docker compose up -d | |
| - name: Test Docker | |
| id: test | |
| run: sleep 5; curl -If http://localhost:3000 | |
| - name: Print Invidious container logs | |
| if: success() || steps.test.conclusion == 'failure' | |
| run: docker compose logs | |
| 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/[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 |