From 6cd4bb00757eb0b7648b7a058fa77722b47797ef Mon Sep 17 00:00:00 2001 From: C4 Patino Date: Sat, 3 Sep 2022 11:05:33 -0500 Subject: [PATCH] Updated github workflows --- .github/release-drafter.yml | 46 +++--- .github/workflows/build-docker.yml | 68 ++++----- .github/workflows/draft-release.yml | 23 ++- .github/workflows/test-build.yml | 42 +++--- CollegiateHouseWars/settings/__init__.py | 1 + CollegiateHouseWars/settings/prod.py | 3 + CollegiateHouseWars/settings/test.py | 141 ++++++++++++++++++ docker-compose.yml | 2 - housewars/migrations/0001_initial.py | 7 +- ...ity_alter_pointsentry_activity_and_more.py | 30 ---- ..._award_activity_alter_pointsentry_award.py | 25 ---- 11 files changed, 238 insertions(+), 150 deletions(-) create mode 100644 CollegiateHouseWars/settings/test.py delete mode 100644 housewars/migrations/0002_alter_award_activity_alter_pointsentry_activity_and_more.py delete mode 100644 housewars/migrations/0003_alter_award_activity_alter_pointsentry_award.py diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml index 0fd0d40..5675efc 100644 --- a/.github/release-drafter.yml +++ b/.github/release-drafter.yml @@ -1,30 +1,30 @@ name-template: 'v$RESOLVED_VERSION' tag-template: 'v$RESOLVED_VERSION' categories: - - title: 'Features' - labels: - - 'feature' - - 'enhancement' - - title: 'Bug Fixes' - labels: - - 'fix' - - 'bugfix' - - 'bug' - - title: 'Maintenance' - label: 'chore' + - title: 'Features' + labels: + - 'feature' + - 'enhancement' + - title: 'Bug Fixes' + labels: + - 'fix' + - 'bugfix' + - 'bug' + - title: 'Maintenance' + label: 'chore' change-template: '- $TITLE @$AUTHOR (#$NUMBER)' change-title-escapes: '\<*_&#@' # You can add # and @ to disable mentions, and add ` to disable code blocks. version-resolver: - major: - labels: - - 'major' - minor: - labels: - - 'minor' - patch: - labels: - - 'patch' - default: patch + major: + labels: + - 'major' + minor: + labels: + - 'minor' + patch: + labels: + - 'patch' + default: patch template: | - # Changes - $CHANGES + # Changes + $CHANGES diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml index d789ef6..3d4aa46 100644 --- a/.github/workflows/build-docker.yml +++ b/.github/workflows/build-docker.yml @@ -1,40 +1,40 @@ name: Commit docker image on: - release: - types: [published] + release: + types: [published] jobs: - build: - environment: production - runs-on: ubuntu-latest + build: + environment: production + runs-on: ubuntu-latest - steps: - - name: Cache Docker layers - uses: actions/cache@v2 - with: - path: /tmp/.buildx-cache - key: ${{ runner.os }}-buildx-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-buildx- - - name: Checkout - uses: actions/checkout@v2 - - name: Login to DockerHub - uses: docker/login-action@v1 - with: - username: ${{ secrets.DOCKER_HUB_USERNAME }} - password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v1 - - name: Build and push - uses: docker/build-push-action@v2 - with: - context: . - file: ./Dockerfile - builder: ${{ steps.buildx.outputs.name }} - push: true - tags: ${{ secrets.DOCKER_HUB_USERNAME }}/collegiate-housewars:latest - cache-from: type=local,src=/tmp/.buildx-cache - cache-to: type=local,dest=/tmp/.buildx-cache - - name: Image digest - run: echo ${{ steps.docker_build.outputs.digest }} + steps: + - name: Cache Docker layers + uses: actions/cache@v2 + with: + path: /tmp/.buildx-cache + key: ${{ runner.os }}-buildx-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-buildx- + - name: Checkout + uses: actions/checkout@v2 + - name: Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + - name: Build and push + uses: docker/build-push-action@v2 + with: + context: . + file: ./Dockerfile + builder: ${{ steps.buildx.outputs.name }} + push: true + tags: ${{ secrets.DOCKER_HUB_USERNAME }}/collegiate-housewars:latest + cache-from: type=local,src=/tmp/.buildx-cache + cache-to: type=local,dest=/tmp/.buildx-cache + - name: Image digest + run: echo ${{ steps.docker_build.outputs.digest }} diff --git a/.github/workflows/draft-release.yml b/.github/workflows/draft-release.yml index 29cc887..85ef300 100644 --- a/.github/workflows/draft-release.yml +++ b/.github/workflows/draft-release.yml @@ -1,18 +1,17 @@ name: Create release draft on: - push: - branches: [development] - workflow_dispatch: + push: + branches: [dev] jobs: - draft: - runs-on: ubuntu-latest + draft: + runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Draft release - uses: release-drafter/release-drafter@v5 - id: release-draft - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + steps: + - uses: actions/checkout@v2 + - name: Draft release + uses: release-drafter/release-drafter@v5 + id: release-draft + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/test-build.yml b/.github/workflows/test-build.yml index 3efd770..5bdfa43 100644 --- a/.github/workflows/test-build.yml +++ b/.github/workflows/test-build.yml @@ -1,27 +1,27 @@ name: Test build on: - push: - branches: [development, main] - pull_request: - workflow_dispatch: + push: + branches: [main, dev] + pull_request: + workflow_dispatch: jobs: - test: - environment: test - runs-on: ubuntu-latest + test: + environment: test + runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Write .env to build - env: - DOTENV: '${{ secrets.DOTENV }}' - run: echo "$DOTENV" >> .env - - name: Setup python - uses: actions/setup-python@v4 - with: - python-version: '3.10' - - name: Install dependencies - run: python -m pip install -r requirements.txt - - name: Test build - run: python manage.py test + steps: + - uses: actions/checkout@v2 + - name: Write .env to build + env: + DOTENV: '${{ secrets.DOTENV }}' + run: echo "$DOTENV" >> .env + - name: Setup python + uses: actions/setup-python@v4 + with: + python-version: '3.10' + - name: Install dependencies + run: python -m pip install -r requirements.txt + - name: Test build + run: python manage.py test diff --git a/CollegiateHouseWars/settings/__init__.py b/CollegiateHouseWars/settings/__init__.py index 864fe0f..72e250a 100644 --- a/CollegiateHouseWars/settings/__init__.py +++ b/CollegiateHouseWars/settings/__init__.py @@ -1,2 +1,3 @@ from . import dev from . import prod +from . import test diff --git a/CollegiateHouseWars/settings/prod.py b/CollegiateHouseWars/settings/prod.py index 7808eb6..ca026ca 100644 --- a/CollegiateHouseWars/settings/prod.py +++ b/CollegiateHouseWars/settings/prod.py @@ -36,6 +36,7 @@ INSTALLED_APPS = [ 'django.contrib.messages', 'django.contrib.staticfiles', + 'smart_selects', 'formtools', 'housewars.apps.HousewarsConfig' @@ -142,3 +143,5 @@ MESSAGE_TAGS = {constants.DEBUG: 'debug', constants.SUCCESS: 'success', constants.WARNING: 'warning', constants.ERROR: 'danger', } + +USE_DJANGO_JQUERY = True diff --git a/CollegiateHouseWars/settings/test.py b/CollegiateHouseWars/settings/test.py new file mode 100644 index 0000000..07c9e59 --- /dev/null +++ b/CollegiateHouseWars/settings/test.py @@ -0,0 +1,141 @@ +from pathlib import Path +import os +from django.contrib.messages import constants +from dotenv import dotenv_values + +# Build paths inside the project like this: BASE_DIR / 'subdir'. +BASE_DIR = Path(__file__).resolve().parent.parent.parent + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/4.0/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +DOTENV_FILE = BASE_DIR / '.env' +CONFIG = dotenv_values(DOTENV_FILE) +SECRET_KEY = CONFIG.get('SECRET_KEY') + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +SECURE_SSL_REDIRECT = False +SESSION_COOKIE_SECURE = False +CSRF_COOKIE_SECURE = False + +ALLOWED_HOSTS = [ + 'localhost', + '127.0.0.1', +] + +# Application definition + +INSTALLED_APPS = [ + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', + + 'smart_selects', + 'formtools', + + 'housewars.apps.HousewarsConfig' +] + +MIDDLEWARE = [ + 'django.middleware.security.SecurityMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', +] + +ROOT_URLCONF = 'CollegiateHouseWars.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [BASE_DIR / 'templates'], + 'APP_DIRS': True, + 'OPTIONS': { + 'context_processors': [ + 'django.template.context_processors.debug', + 'django.template.context_processors.request', + 'django.contrib.auth.context_processors.auth', + 'django.contrib.messages.context_processors.messages', + ], + }, + }, +] + +WSGI_APPLICATION = 'CollegiateHouseWars.wsgi.application' + + +# Database +# https://docs.djangoproject.com/en/4.0/ref/settings/#databases + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': BASE_DIR / 'db.sqlite3', + } +} + + +# Password validation +# https://docs.djangoproject.com/en/4.0/ref/settings/#auth-password-validators + +AUTH_PASSWORD_VALIDATORS = [ + { + 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', + }, +] + + +# Internationalization +# https://docs.djangoproject.com/en/4.0/topics/i18n/ + +LANGUAGE_CODE = 'en-us' + +TIME_ZONE = 'UTC' + +USE_I18N = True + +USE_TZ = True + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/4.0/howto/static-files/ + +STATIC_URL = 'static/' +STATIC_ROOT = BASE_DIR / 'staticfiles' + +STATICFILES_DIRS = [ + BASE_DIR / "static" +] + + +# Default primary key field type +# https://docs.djangoproject.com/en/4.0/ref/settings/#default-auto-field + +DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' + + +MESSAGE_TAGS = {constants.DEBUG: 'debug', + constants.INFO: 'info', + constants.SUCCESS: 'success', + constants.WARNING: 'warning', + constants.ERROR: 'danger', } + +USE_DJANGO_JQUERY = True diff --git a/docker-compose.yml b/docker-compose.yml index 9a716c6..a8b3f3f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -30,8 +30,6 @@ services: - housewars environment: MYSQL_ROOT_PASSWORD: "${DATABASE_PASSWORD}" - MYSQL_USER: "${DATABASE_USERNAME}" - MYSQL_PASSWORD: "${DATABASE_PASSWORD}" MYSQL_DATABASE: dev healthcheck: test: [ "CMD", "mysqladmin", "ping", "-h", "localhost" ] diff --git a/housewars/migrations/0001_initial.py b/housewars/migrations/0001_initial.py index 4d2710c..610b21f 100644 --- a/housewars/migrations/0001_initial.py +++ b/housewars/migrations/0001_initial.py @@ -1,7 +1,8 @@ -# Generated by Django 4.0.4 on 2022-09-03 04:48 +# Generated by Django 4.0.4 on 2022-09-03 16:15 from django.db import migrations, models import django.db.models.deletion +import smart_selects.db_fields class Migration(migrations.Migration): @@ -63,8 +64,8 @@ class Migration(migrations.Migration): fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('password', models.CharField(blank=True, max_length=15)), - ('activity', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='housewars.activity')), - ('award', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='housewars.award')), + ('activity', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='Activity', to='housewars.activity')), + ('award', smart_selects.db_fields.ChainedForeignKey(chained_field='activity', chained_model_field='activity', on_delete=django.db.models.deletion.CASCADE, to='housewars.award')), ('house', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='housewars.house')), ], options={ diff --git a/housewars/migrations/0002_alter_award_activity_alter_pointsentry_activity_and_more.py b/housewars/migrations/0002_alter_award_activity_alter_pointsentry_activity_and_more.py deleted file mode 100644 index 7c07013..0000000 --- a/housewars/migrations/0002_alter_award_activity_alter_pointsentry_activity_and_more.py +++ /dev/null @@ -1,30 +0,0 @@ -# Generated by Django 4.0.4 on 2022-09-03 05:12 - -from django.db import migrations, models -import django.db.models.deletion -import django.db.models.expressions - - -class Migration(migrations.Migration): - - dependencies = [ - ('housewars', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='award', - name='activity', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='awards', to='housewars.activity'), - ), - migrations.AlterField( - model_name='pointsentry', - name='activity', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='Activity', to='housewars.activity'), - ), - migrations.AlterField( - model_name='pointsentry', - name='award', - field=models.ForeignKey(limit_choices_to=models.Q(('activity__award', django.db.models.expressions.F('activity'))), on_delete=django.db.models.deletion.CASCADE, to='housewars.award'), - ), - ] diff --git a/housewars/migrations/0003_alter_award_activity_alter_pointsentry_award.py b/housewars/migrations/0003_alter_award_activity_alter_pointsentry_award.py deleted file mode 100644 index 6d84664..0000000 --- a/housewars/migrations/0003_alter_award_activity_alter_pointsentry_award.py +++ /dev/null @@ -1,25 +0,0 @@ -# Generated by Django 4.0.4 on 2022-09-03 05:46 - -from django.db import migrations, models -import django.db.models.deletion -import smart_selects.db_fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('housewars', '0002_alter_award_activity_alter_pointsentry_activity_and_more'), - ] - - operations = [ - migrations.AlterField( - model_name='award', - name='activity', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='housewars.activity'), - ), - migrations.AlterField( - model_name='pointsentry', - name='award', - field=smart_selects.db_fields.ChainedForeignKey(auto_choose=True, blank=True, chained_field='activity', chained_model_field='activity__name', null=True, on_delete=django.db.models.deletion.CASCADE, to='housewars.award'), - ), - ]