mirror of
				https://github.com/iv-org/invidious.git
				synced 2025-11-03 22:21:55 +00:00 
			
		
		
		
	* CI: Bump Crystal version matrix - 1.12.1 -> 1.12.2 - 1.13.2 -> 1.13.3 - 1.14.0 -> 1.14.1 - 1.15.0 -> 1.15.1 - Add 1.16.3 * Update Crystal 1.16.2 to 1.16.3 https://github.com/crystal-lang/crystal/releases/tag/1.16.3
		
			
				
	
	
		
			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.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/install-crystal@v1.8.2
 | 
						|
        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 --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@v6
 | 
						|
        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.2
 | 
						|
        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
 |