From 3f18cc485883e286ec5af868352c56ef36d7176b Mon Sep 17 00:00:00 2001 From: lucifer1708 <20bce091@nith.ac.in> Date: Sun, 30 Jul 2023 15:05:53 +0530 Subject: [PATCH 1/4] workflow for CI and CD is done --- main/settings.py | 122 ++++++++++++++++++---------------------- workflows/workflow.yaml | 33 +++++++++++ 2 files changed, 88 insertions(+), 67 deletions(-) create mode 100644 workflows/workflow.yaml diff --git a/main/settings.py b/main/settings.py index dee6e3e..7427f80 100644 --- a/main/settings.py +++ b/main/settings.py @@ -8,80 +8,76 @@ # See https://docs.djangoproject.com/en/3.1/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = 'a)*#0p#x9s4_g!p5mrh*4bars7z^ub(^8t@e7mn9cao24r(e#+' +SECRET_KEY = "a)*#0p#x9s4_g!p5mrh*4bars7z^ub(^8t@e7mn9cao24r(e#+" # SECURITY WARNING: don't run with debug turned on in production! -DEBUG = True +DEBUG = True -ALLOWED_HOSTS = ['*'] +ALLOWED_HOSTS = ["*"] CSRF_TRUSTED_ORIGINS = [ - 'https://join.istenith.com', - 'http://join.istenith.com', - 'http://127.0.0.1:8000/', - 'https://interview-iste.azurewebsites.net', - 'http://interview-iste.azurewebsites.net' + "https://join.istenith.com", + "http://join.istenith.com", + "http://0.0.0.0:8081" ] INSTALLED_APPS = [ - 'forms', - 'solo', - 'results', - 'phonenumber_field', - 'adminactions', - 'jazzmin', - 'widget_tweaks', - 'import_export', - 'django.contrib.admin', - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.sessions', - 'django.contrib.messages', - 'django.contrib.staticfiles', + "forms", + "solo", + "results", + "phonenumber_field", + "adminactions", + "jazzmin", + "widget_tweaks", + "import_export", + "django.contrib.admin", + "django.contrib.auth", + "django.contrib.contenttypes", + "django.contrib.sessions", + "django.contrib.messages", + "django.contrib.staticfiles", ] 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', + "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 = 'main.urls' +ROOT_URLCONF = "main.urls" TEMPLATES = [ { - 'BACKEND': - 'django.template.backends.django.DjangoTemplates', - 'DIRS': [ + "BACKEND": "django.template.backends.django.DjangoTemplates", + "DIRS": [ os.path.join(BASE_DIR, "templates"), - os.path.join(BASE_DIR, "templates", "jazzmin") + os.path.join(BASE_DIR, "templates", "jazzmin"), ], - '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', + "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 = 'main.wsgi.application' +WSGI_APPLICATION = "main.wsgi.application" # Database # https://docs.djangoproject.com/en/3.1/ref/settings/#databases DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.sqlite3', - 'NAME': BASE_DIR / 'db.sqlite3', + "default": { + "ENGINE": "django.db.backends.sqlite3", + "NAME": BASE_DIR / "db.sqlite3", } } @@ -90,29 +86,25 @@ AUTH_PASSWORD_VALIDATORS = [ { - 'NAME': - 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', + "NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator", }, { - 'NAME': - 'django.contrib.auth.password_validation.MinimumLengthValidator', + "NAME": "django.contrib.auth.password_validation.MinimumLengthValidator", }, { - 'NAME': - 'django.contrib.auth.password_validation.CommonPasswordValidator', + "NAME": "django.contrib.auth.password_validation.CommonPasswordValidator", }, { - 'NAME': - 'django.contrib.auth.password_validation.NumericPasswordValidator', + "NAME": "django.contrib.auth.password_validation.NumericPasswordValidator", }, ] # Internationalization # https://docs.djangoproject.com/en/3.1/topics/i18n/ -LANGUAGE_CODE = 'en-us' +LANGUAGE_CODE = "en-us" -TIME_ZONE = 'UTC' +TIME_ZONE = "UTC" USE_I18N = True @@ -122,12 +114,12 @@ # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/3.1/howto/static-files/ -STATIC_URL = '/static/' -STATIC_ROOT = os.path.join(BASE_DIR, 'static_root') -MEDIA_ROOT = BASE_DIR / 'media' -MEDIA_URL = '/media/' +STATIC_URL = "/static/" +STATIC_ROOT = os.path.join(BASE_DIR, "static_root") +MEDIA_ROOT = BASE_DIR / "media" +MEDIA_URL = "/media/" -STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'), ) +STATICFILES_DIRS = (os.path.join(BASE_DIR, "static"),) JAZZMIN_UI_TWEAKS = { "theme": "flatly", @@ -148,15 +140,11 @@ "site_logo": "images/iste.png", "site_logo_classes": "img-circle", "topmenu_links": [ - { - "name": "Home", - "url": "/", - "new_window": True - }, + {"name": "Home", "url": "/", "new_window": True}, ], } -CRISPY_TEMPLATE_PACK = 'bootstrap4' +CRISPY_TEMPLATE_PACK = "bootstrap4" # SMTP setup # EMAIL_HOST= 'smtp.gmail.com' diff --git a/workflows/workflow.yaml b/workflows/workflow.yaml new file mode 100644 index 0000000..d664f41 --- /dev/null +++ b/workflows/workflow.yaml @@ -0,0 +1,33 @@ +name: CI/CD Pipeline + +on: + push: + branches: + - main + +jobs: + test_and_deploy: + runs-on: ubuntu-latest + + steps: + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: '3.10' + + - name: Checkout code + uses: actions/checkout@v2 + + - name: Set up SSH + uses: webfactory/ssh-agent@v0.5.1 + with: + ssh-private-key: ${{ secrets.SSH_KEY_ACCESS }} + + - name: Deploy to EC2 instance + run: | + ssh -o StrictHostKeyChecking=no lucifer@sumitdhiman.in << EOF + cd join.istenith.com + git config pull.rebase false + git pull origin stage + docker compose up --build -d + EOF From 16f8428c60d46f24eb086d4e9b549dacbdd65f36 Mon Sep 17 00:00:00 2001 From: lucifer1708 <20bce091@nith.ac.in> Date: Sun, 30 Jul 2023 15:10:31 +0530 Subject: [PATCH 2/4] workflow for CI and CD is done --- {workflows => .github/workflows}/workflow.yaml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {workflows => .github/workflows}/workflow.yaml (100%) diff --git a/workflows/workflow.yaml b/.github/workflows/workflow.yaml similarity index 100% rename from workflows/workflow.yaml rename to .github/workflows/workflow.yaml From 01afb31c4cbcf65027b65fc60819dc426551e315 Mon Sep 17 00:00:00 2001 From: lucifer1708 <20bce091@nith.ac.in> Date: Sun, 30 Jul 2023 15:13:58 +0530 Subject: [PATCH 3/4] workflow for CI and CD is done --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index cb5836e..9b80f5f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3.7' +version: '3.9' services: app: From 07ca51131a05759ca3fd9d0c2e50d8eaba94798d Mon Sep 17 00:00:00 2001 From: lucifer1708 <20bce091@nith.ac.in> Date: Sun, 30 Jul 2023 15:20:15 +0530 Subject: [PATCH 4/4] workflow for CI and CD is done --- docker-compose.yml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 9b80f5f..8e7a87e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,11 +1,15 @@ -version: '3.9' +version: '3' services: app: volumes: - - /media - - /db.sqlite3 + - media:/media + - db:/db.sqlite3 build: . ports: - "8081:8081" command: gunicorn --bind 0.0.0.0:8081 main.wsgi + +volumes: + media: + db: