thumbor/thumbor-aws

View on GitHub
.github/workflows/build.yml

Summary

Maintainability
Test Coverage
---
name: build
on:
  push:
  pull_request:
    types: [opened, reopened, synchronize]
    branches:
      - main
jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        python-version:
          - "3.8"
          - "3.9"
          - "3.10"
          - "3.11"
          - "3.12"
    services:
      localstack:
        image: localstack/localstack
        ports:
          - "4510-4530:4510-4530"
          - "4566:4566"
        env:
          SERVICES: s3
    steps:
      - uses: actions/checkout@v4
      - name: Set up Python
        id: setup-python
        uses: actions/setup-python@v5
        with:
          python-version: ${{ matrix.python-version }}
      - name: APT Update
        run: sudo apt-get update -y
      - name: APT Install
        run:
          sudo apt-get install -y python3-dev libcurl4-openssl-dev libgnutls28-dev
          python3-all-dev make zlib1g-dev gcc libssl-dev build-essential
      - name: Install Poetry
        uses: snok/install-poetry@v1
        with:
          virtualenvs-create: true
          virtualenvs-in-project: true
      - name: Load cached venv
        id: cached-poetry-dependencies
        uses: actions/cache@v4
        with:
          path: .venv
          key: venv-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-${{ hashFiles('**/poetry.lock') }}
      - name: Install dependencies
        if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true'
        run: poetry install --no-interaction --no-root
      - name: Install thumbor-aws
        run: poetry install --no-interaction
      - name: Run Unit Tests
        run: make unit
        env:
          # Only used for satisfying boto
          AWS_ACCESS_KEY_ID: foobar
          AWS_SECRET_ACCESS_KEY: foobar
      - name: Lint
        run: make flake pylint
      - name: Generate lcov
        run: make coverage
      - name: Coveralls
        uses: coverallsapp/github-action@v2.3.4
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          path-to-lcov: coverage.lcov
          flag-name: run-${{ matrix.python-version }}
          parallel: true
  finish:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - name: Coveralls Finished
        uses: coverallsapp/github-action@v2.3.4
        with:
          github-token: ${{ secrets.github_token }}
          parallel-finished: true