Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .flake8
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ max-line-length=100
docstring-convention=all
import-order-style=pycharm
application_import_names=pydis_site
exclude=__pycache__, venv, .venv, **/migrations/**
exclude=__pycache__, venv, .venv, **/migrations/**, .cache/
ignore=
B311,W503,E226,S311,T000
# Missing Docstrings
Expand Down
32 changes: 0 additions & 32 deletions .github/workflows/codeql-analysis.yml

This file was deleted.

157 changes: 157 additions & 0 deletions .github/workflows/lint-test-build.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
name: Lint & Test

on:
push:
branches:
- master
# We use pull_request_target as we get PRs from
# forks, but need to be able to add annotations
# for our flake8 step.
pull_request_target:


jobs:
lint-test:
runs-on: ubuntu-latest
env:
# Configure pip to cache dependencies and do a user install
PIP_NO_CACHE_DIR: false
PIP_USER: 1

# Hide the graphical elements from pipenv's output
PIPENV_HIDE_EMOJIS: 1
PIPENV_NOSPIN: 1

# Make sure pipenv does not try reuse an environment it's running in
PIPENV_IGNORE_VIRTUALENVS: 1

# Specify explicit paths for python dependencies and the pre-commit
# environment so we know which directories to cache
PYTHONUSERBASE: ${{ github.workspace }}/.cache/py-user-base
PRE_COMMIT_HOME: ${{ github.workspace }}/.cache/pre-commit-cache

steps:
- name: Add custom PYTHONUSERBASE to PATH
run: echo '${{ env.PYTHONUSERBASE }}/bin/' >> $GITHUB_PATH

# We don't want to persist credentials, as our GitHub Action
# may be run when a PR is made from a fork.
- name: Checkout repository
uses: actions/checkout@v2
with:
persist-credentials: false

- name: Setup python
id: python
uses: actions/setup-python@v2
with:
python-version: '3.9'

# This step caches our Python dependencies. To make sure we
# only restore a cache when the dependencies, the python version,
# the runner operating system, and the dependency location haven't
# changed, we create a cache key that is a composite of those states.
#
# Only when the context is exactly the same, we will restore the cache.
- name: Python Dependency Caching
uses: actions/cache@v2
id: python_cache
with:
path: ${{ env.PYTHONUSERBASE }}
key: "python-0-${{ runner.os }}-${{ env.PYTHONUSERBASE }}-\
${{ steps.python.outputs.python-version }}-\
${{ hashFiles('./Pipfile', './Pipfile.lock') }}"

# Install our dependencies if we did not restore a dependency cache
- name: Install dependencies using pipenv
if: steps.python_cache.outputs.cache-hit != 'true'
run: |
pip install pipenv
pipenv install --dev --deploy --system

# This step caches our pre-commit environment. To make sure we
# do create a new environment when our pre-commit setup changes,
# we create a cache key based on relevant factors.
- name: Pre-commit Environment Caching
uses: actions/cache@v2
with:
path: ${{ env.PRE_COMMIT_HOME }}
key: "precommit-0-${{ runner.os }}-${{ env.PRE_COMMIT_HOME }}-\
${{ steps.python.outputs.python-version }}-\
${{ hashFiles('./.pre-commit-config.yaml') }}"

# We will not run `flake8` here, as we will use a separate flake8
# action. As pre-commit does not support user installs, we set
# PIP_USER=0 to not do a user install.
- name: Run pre-commit hooks
run: export PIP_USER=0; SKIP=flake8 pre-commit run --all-files

# This step requires `pull_request_target`, as adding annotations
# requires "write" permissions to the repo.
- name: Run flake8
uses: julianwachholz/flake8-action@v1
with:
checkName: lint-test
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Run database using docker-compose
run: docker-compose run -d -p 7777:5432 --name pydis_web postgres

- name: Migrations and run tests with coverage.py
run: |
python manage.py makemigrations --check
python manage.py migrate
coverage run manage.py test --no-input
coverage report -m
env:
CI: True
DATABASE_URL: postgres://pysite:pysite@localhost:7777/pysite
METRICITY_DB_URL: postgres://pysite:pysite@localhost:7777/metricity

# This step will publish the coverage reports coveralls.io and
# print a "job" link in the output of the GitHub Action
- name: Publish coverage report to coveralls.io
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: coveralls

- name: Tear down docker-compose containers
run: docker-compose stop
if: ${{ always() }}

build-and-push:
needs: lint-test
if: github.event_name != 'pull_request_target' && github.ref == 'refs/heads/master'
runs-on: ubuntu-latest

steps:
# Create a commit SHA-based tag for the container repositories
- name: Create SHA Container Tag
id: sha_tag
run: |
tag=$(cut -c 1-7 <<< $GITHUB_SHA)
echo "::set-output name=tag::$tag"
- name: Checkout code
uses: actions/checkout@v2

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1

- name: Login to Github Container Registry
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ secrets.GHCR_USER }}
password: ${{ secrets.GHCR_TOKEN }}

- name: Build and push
uses: docker/build-push-action@v2
with:
context: .
file: ./Dockerfile
push: true
cache-from: type=registry,ref=ghcr.io/python-discord/site:latest
tags: |
ghcr.io/python-discord/site:latest
ghcr.io/python-discord/site:${{ steps.sha_tag.outputs.tag }}
2 changes: 1 addition & 1 deletion Pipfile
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ flake8-todo = "~=0.7"
mccabe = "~=0.6.1"
pep8-naming = "~=0.9"
pre-commit = "~=2.1"
unittest-xml-reporting = "~=3.0"
coveralls = "~=2.1"

[requires]
python_version = "3.9"
Expand Down
56 changes: 50 additions & 6 deletions Pipfile.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading