name: Run tests & Public to Docker Registry on: [push, pull_request] jobs: build: runs-on: ubuntu-latest strategy: max-parallel: 4 matrix: python-version: [3.7] steps: - uses: actions/checkout@v2 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} - uses: actions/cache@v1 with: path: ~/.cache/poetry key: ${{ runner.os }}-poetry-${{ hashFiles('**/peotry.lock') }} restore-keys: | ${{ runner.os }}-poetry- - name: Install dependencies run: | python -m pip install poetry==1.0.10 poetry config virtualenvs.create false poetry install - name: Check formatting & linting run: | poetry run black --check . flake8 - name: Test with pytest run: | pytest --cov=. --cov-report=term:skip-covered --cov-report=html:htmlcov --cov-fail-under=60 - name: Archive code coverage results uses: actions/upload-artifact@v2 with: name: code-coverage-report path: htmlcov - name: Publish to Docker Registry if: github.event_name == 'push' && github.ref == 'refs/heads/master' uses: docker/build-push-action@v1 with: repository: simplelogin/app-ci username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} tag_with_ref: true - name: Create Sentry release if: github.event_name == 'push' && github.ref == 'refs/heads/master' uses: getsentry/action-release@v1 env: SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} SENTRY_ORG: ${{ secrets.SENTRY_ORG }} SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }} - name: Send Telegram message if: github.event_name == 'push' && github.ref == 'refs/heads/master' uses: appleboy/telegram-action@master with: to: ${{ secrets.TELEGRAM_TO }} token: ${{ secrets.TELEGRAM_TOKEN }} args: Docker image pushed on ${{ github.ref }}