name: kisswiki CI on: push: branches: "*" pull_request: branches: "*" jobs: check-format: strategy: fail-fast: false matrix: crystal_version: - 1.1.1 experimental: - false runs-on: ubuntu-latest continue-on-error: ${{ matrix.experimental }} steps: - uses: actions/checkout@v2 - name: Install Crystal uses: crystal-lang/install-crystal@v1 with: crystal: ${{ matrix.crystal_version }} - name: Format run: crystal tool format --check specs: strategy: fail-fast: false matrix: crystal_version: - 1.1.1 experimental: - false runs-on: ubuntu-latest env: LUCKY_ENV: test DB_HOST: postgres continue-on-error: ${{ matrix.experimental }} services: postgres: image: postgres:12-alpine env: POSTGRES_PASSWORD: postgres ports: - 5432:5432 # Set health checks to wait until postgres has started options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 steps: - uses: actions/checkout@v2 - name: Install Crystal uses: crystal-lang/install-crystal@v1 with: crystal: ${{ matrix.crystal_version }} - name: Get yarn cache directory path id: yarn-cache-dir-path run: echo "::set-output name=dir::$(yarn cache dir)" - name: Set up Yarn cache uses: actions/cache@v2 with: path: ${{ steps.yarn-cache-dir-path.outputs.dir }} key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} restore-keys: | ${{ runner.os }}-yarn- - name: Set up Node cache uses: actions/cache@v2 id: node-cache # use this to check for `cache-hit` (`steps.node-cache.outputs.cache-hit != 'true'`) with: path: '**/node_modules' key: ${{ runner.os }}-node-${{ hashFiles('**/yarn.lock') }} restore-keys: | ${{ runner.os }}-node- - name: Set up Crystal cache uses: actions/cache@v2 id: crystal-cache with: path: | ~/.cache/crystal lib lucky_tasks key: ${{ runner.os }}-crystal-${{ hashFiles('**/shard.lock') }} restore-keys: | ${{ runner.os }}-crystal- - name: Install shards if: steps.crystal-cache.outputs.cache-hit != 'true' run: shards check || shards install - name: Install yarn packages if: steps.node-cache.outputs.cache-hit != 'true' run: yarn install --frozen-lockfile --no-progress - name: Compiling assets run: yarn prod - name: Build lucky_tasks if: steps.crystal-cache.outputs.cache-hit != 'true' run: crystal build tasks.cr -o ./lucky_tasks - name: Prepare database run: | ./lucky_tasks db.create ./lucky_tasks db.migrate ./lucky_tasks db.seed.required_data - name: Run tests run: crystal spec