Skip to content

Commit 5af91e1

Browse files
authored
Merge pull request #93 from Zohair-coder/sso
Implemented 2FA
2 parents 379410f + a8b558e commit 5af91e1

File tree

9 files changed

+290
-81
lines changed

9 files changed

+290
-81
lines changed
Lines changed: 74 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -1,91 +1,91 @@
1-
# name: Build and Deploy to Kubernetes
1+
name: Build and Deploy to Kubernetes
22

3-
# on:
4-
# push:
5-
# branches:
6-
# - main
7-
# - dev
3+
on:
4+
push:
5+
branches:
6+
- main
7+
- dev
88

9-
# env:
10-
# DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
11-
# DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
12-
# KUBECONFIG: ${{ secrets.KUBECONFIG }}
13-
# IMAGE_NAME: zohairr/drexelscheduler-scraper
9+
env:
10+
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
11+
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
12+
KUBECONFIG: ${{ secrets.KUBECONFIG }}
13+
IMAGE_NAME: zohairr/drexelscheduler-scraper
1414

15-
# jobs:
16-
# build-and-push:
17-
# runs-on: ubuntu-latest
18-
# steps:
19-
# - name: Checkout code
20-
# uses: actions/checkout@v4
15+
jobs:
16+
build-and-push:
17+
runs-on: ubuntu-latest
18+
steps:
19+
- name: Checkout code
20+
uses: actions/checkout@v4
2121

22-
# - name: Set up QEMU
23-
# uses: docker/setup-qemu-action@v3
22+
- name: Set up QEMU
23+
uses: docker/setup-qemu-action@v3
2424

25-
# - name: Set up Docker Buildx
26-
# uses: docker/setup-buildx-action@v3
25+
- name: Set up Docker Buildx
26+
uses: docker/setup-buildx-action@v3
2727

28-
# - name: Login to DockerHub
29-
# run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin
28+
- name: Login to DockerHub
29+
run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin
3030

31-
# - name: Build and push Docker image
32-
# run: |
33-
# COMMIT_SHA=$(echo $GITHUB_SHA | cut -c1-7)
34-
# docker buildx create --use
35-
# docker buildx build --platform linux/arm64 -t $IMAGE_NAME:$COMMIT_SHA . --push
31+
- name: Build and push Docker image
32+
run: |
33+
COMMIT_SHA=$(echo $GITHUB_SHA | cut -c1-7)
34+
docker buildx create --use
35+
docker buildx build --platform linux/arm64 -t $IMAGE_NAME:$COMMIT_SHA . --push
3636
37-
# deploy:
38-
# needs: build-and-push
39-
# runs-on: ubuntu-latest
40-
# steps:
41-
# - name: Checkout code
42-
# uses: actions/checkout@v4
37+
deploy:
38+
needs: build-and-push
39+
runs-on: ubuntu-latest
40+
steps:
41+
- name: Checkout code
42+
uses: actions/checkout@v4
4343

44-
# - name: Install and configure kubectl
45-
# run: |
46-
# sudo snap install kubectl --classic
47-
# echo "$KUBECONFIG" | base64 --decode > kubeconfig.yaml
44+
- name: Install and configure kubectl
45+
run: |
46+
sudo snap install kubectl --classic
47+
echo "$KUBECONFIG" | base64 --decode > kubeconfig.yaml
4848
49-
# - name: Set Namespace based on Branch
50-
# run: echo "NAMESPACE=$(if [ "${{ github.ref }}" = "refs/heads/main" ]; then echo 'default'; else echo 'dev'; fi)" >> $GITHUB_ENV
49+
- name: Set Namespace based on Branch
50+
run: echo "NAMESPACE=$(if [ "${{ github.ref }}" = "refs/heads/main" ]; then echo 'default'; else echo 'dev'; fi)" >> $GITHUB_ENV
5151

52-
# - name: Set up Helm
53-
# run: |
54-
# curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
55-
# chmod 700 get_helm.sh
56-
# ./get_helm.sh
52+
- name: Set up Helm
53+
run: |
54+
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
55+
chmod 700 get_helm.sh
56+
./get_helm.sh
5757
58-
# - name: Check for running Kubernetes jobs
59-
# run: |
60-
# KUBECONFIG=kubeconfig.yaml
61-
# while kubectl get jobs -n ${{ env.NAMESPACE }} -o jsonpath='{.items[?(@.status.active)].metadata.name}' | grep "drexel-scheduler-cronjob"; do
62-
# echo "Waiting for jobs to complete..."
63-
# sleep 30
64-
# done
58+
- name: Check for running Kubernetes jobs
59+
run: |
60+
KUBECONFIG=kubeconfig.yaml
61+
while kubectl get jobs -n ${{ env.NAMESPACE }} -o jsonpath='{.items[?(@.status.active)].metadata.name}' | grep "drexel-scheduler-cronjob"; do
62+
echo "Waiting for jobs to complete..."
63+
sleep 30
64+
done
6565
66-
# - name: Deploy to Kubernetes
67-
# run: |
68-
# COMMIT_SHA=$(echo $GITHUB_SHA | cut -c1-7)
69-
# VALUES_FILE="./k8s/drexel-scraper/values-${{ env.NAMESPACE }}.yaml"
70-
# RELEASE_NAME="drexel-scraper-${{ env.NAMESPACE }}"
71-
# KUBECONFIG=kubeconfig.yaml helm upgrade --install $RELEASE_NAME ./k8s/drexel-scraper -f $VALUES_FILE -n ${{ env.NAMESPACE }} --set image.tag=$COMMIT_SHA --atomic
66+
- name: Deploy to Kubernetes
67+
run: |
68+
COMMIT_SHA=$(echo $GITHUB_SHA | cut -c1-7)
69+
VALUES_FILE="./k8s/drexel-scraper/values-${{ env.NAMESPACE }}.yaml"
70+
RELEASE_NAME="drexel-scraper-${{ env.NAMESPACE }}"
71+
KUBECONFIG=kubeconfig.yaml helm upgrade --install $RELEASE_NAME ./k8s/drexel-scraper -f $VALUES_FILE -n ${{ env.NAMESPACE }} --set image.tag=$COMMIT_SHA --atomic
7272
73-
# - name: Clear Cache
74-
# run: |
75-
# kubectl create job -n ${{ env.NAMESPACE }} --from=cronjob/delete-extra-course-data-cronjob github-actions-delete-credits-job --kubeconfig=kubeconfig.yaml
76-
# kubectl create job -n ${{ env.NAMESPACE }} --from=cronjob/delete-ratings-cronjob github-actions-delete-ratings-job --kubeconfig=kubeconfig.yaml
73+
- name: Clear Cache
74+
run: |
75+
kubectl create job -n ${{ env.NAMESPACE }} --from=cronjob/delete-extra-course-data-cronjob github-actions-delete-credits-job --kubeconfig=kubeconfig.yaml
76+
kubectl create job -n ${{ env.NAMESPACE }} --from=cronjob/delete-ratings-cronjob github-actions-delete-ratings-job --kubeconfig=kubeconfig.yaml
7777
78-
# - name: Add Grafana Helm Repo
79-
# run: |
80-
# helm repo add grafana https://grafana.github.io/helm-charts
81-
# helm repo update
78+
- name: Add Grafana Helm Repo
79+
run: |
80+
helm repo add grafana https://grafana.github.io/helm-charts
81+
helm repo update
8282
83-
# - name: Deploy Grafana to Dev
84-
# if: github.ref == 'refs/heads/dev'
85-
# run: |
86-
# KUBECONFIG=kubeconfig.yaml helm upgrade --install grafana-dev grafana/grafana -f k8s/grafana-dev-values.yaml -n dev
83+
- name: Deploy Grafana to Dev
84+
if: github.ref == 'refs/heads/dev'
85+
run: |
86+
KUBECONFIG=kubeconfig.yaml helm upgrade --install grafana-dev grafana/grafana -f k8s/grafana-dev-values.yaml -n dev
8787
88-
# - name: Deploy Grafana to Prod
89-
# if: github.ref == 'refs/heads/main'
90-
# run: |
91-
# KUBECONFIG=kubeconfig.yaml helm upgrade --install grafana grafana/grafana -f k8s/grafana-default-values.yaml --set env.GF_ANALYTICS_GOOGLE_ANALYTICS_4_ID=${{ secrets.GOOGLE_ANALYTICS_ID }} -n default
88+
- name: Deploy Grafana to Prod
89+
if: github.ref == 'refs/heads/main'
90+
run: |
91+
KUBECONFIG=kubeconfig.yaml helm upgrade --install grafana grafana/grafana -f k8s/grafana-default-values.yaml --set env.GF_ANALYTICS_GOOGLE_ANALYTICS_4_ID=${{ secrets.GOOGLE_ANALYTICS_ID }} -n default

.github/workflows/functional_test.yml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,9 @@ jobs:
4848

4949
- name: Run the scraper
5050
env:
51-
DREXEL_SCHEDULER_SHIB_IDP_SESSION_COOKIE: ${{ secrets.DREXEL_SCHEDULER_SHIB_IDP_SESSION_COOKIE }}
51+
DREXEL_USERNAME: ${{ secrets.DREXEL_USERNAME }}
52+
DREXEL_PASSWORD: ${{ secrets.DREXEL_PASSWORD }}
53+
DREXEL_MFA_SECRET_KEY: ${{ secrets.DREXEL_MFA_SECRET_KEY }}
5254
run: docker compose run scraper python3 src/main.py --db --all-colleges --ratings
5355

5456
- name: Verify courses data exists in database
@@ -106,7 +108,9 @@ jobs:
106108

107109
- name: Run scraper again (to test cache)
108110
env:
109-
DREXEL_SCHEDULER_SHIB_IDP_SESSION_COOKIE: ${{ secrets.DREXEL_SCHEDULER_SHIB_IDP_SESSION_COOKIE }}
111+
DREXEL_USERNAME: ${{ secrets.DREXEL_USERNAME }}
112+
DREXEL_PASSWORD: ${{ secrets.DREXEL_PASSWORD }}
113+
DREXEL_MFA_SECRET_KEY: ${{ secrets.DREXEL_MFA_SECRET_KEY }}
110114
run: docker compose run scraper python3 src/main.py --db --all-colleges --ratings
111115

112116
- name: Verify courses data exists in database

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,6 @@ grafana_data
77
trash.py
88
profile_output.pstat
99
callgrind.out.profile
10-
.venv
10+
.venv
11+
test.py
12+
test.txt

.vscode/launch.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,13 @@
44
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
55
"version": "0.2.0",
66
"configurations": [
7+
{
8+
"name": "Python Debugger: Current File",
9+
"type": "debugpy",
10+
"request": "launch",
11+
"program": "${file}",
12+
"console": "integratedTerminal"
13+
},
714
{
815
"name": "Python: main.py",
916
"type": "debugpy",

docker-compose.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ services:
1212
AWS_DEFAULT_REGION: us-east-1
1313
AWS_ACCESS_KEY_ID: "my-access-key"
1414
AWS_SECRET_ACCESS_KEY: "my-secret-access-key"
15-
DREXEL_SCHEDULER_SHIB_IDP_SESSION_COOKIE: ${DREXEL_SCHEDULER_SHIB_IDP_SESSION_COOKIE}
15+
DREXEL_USERNAME: ${DREXEL_USERNAME}
16+
DREXEL_PASSWORD: ${DREXEL_PASSWORD}
17+
DREXEL_MFA_SECRET_KEY: ${DREXEL_MFA_SECRET_KEY}
1618
volumes:
1719
- ./:/app
1820
depends_on:

src/config.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,17 @@
1515
# example values = CI, A, AS
1616
college_code = "CI"
1717

18+
# Drexel Connect Credentials
19+
drexel_username = os.environ["DREXEL_USERNAME"]
20+
drexel_password = os.environ["DREXEL_PASSWORD"]
21+
drexel_mfa_secret_key = os.environ["DREXEL_MFA_SECRET_KEY"]
22+
1823
# URL's
1924
tms_base_url = "https://termmasterschedule.drexel.edu"
2025
tms_home_url = tms_base_url + "/webtms_du"
2126
tms_quarter_url = tms_home_url + "/collegesSubjects/" + year + quarter
2227

23-
# Cookies
24-
shib_idp_session_cookie = os.environ["DREXEL_SCHEDULER_SHIB_IDP_SESSION_COOKIE"]
28+
drexel_connect_base_url = "https://connect.drexel.edu"
2529

2630
# Email AWS Configuration
2731
topic_arn = os.getenv("DREXEL_SCHEDULER_TOPIC_ARN")

0 commit comments

Comments
 (0)