Skip to content

Commit

Permalink
enabling github actions
Browse files Browse the repository at this point in the history
  • Loading branch information
KBA07 committed May 31, 2023
1 parent 9835102 commit 2b63c56
Show file tree
Hide file tree
Showing 5 changed files with 94 additions and 1 deletion.
59 changes: 59 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
name: alhazenlabs-ec2-deployment

on:
push:
branches: [main]

jobs:
start:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2

- name: AWS SSM Send-Command
uses: peterkimzz/aws-ssm-send-command@master
id: ssm
with:
aws-region: ${{ secrets.AWS_REGION }}
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
instance-ids: ${{ secrets.INSTANCE_ID }}

working-directory: /home/ubuntu/deployment
command: /bin/sh ./deploy.sh

# Catch SSM outputs
# - name: Get the outputs
# run: echo "The Command id is ${{ steps.ssm.outputs.command-id }}"

## Setting up your Domain

# So far, users can access the site using the Elastic IP. However, it can be difficult to remember and share so we will configure a custom domain name.

# To get started, you need to first purchase a domain. This can range from $10 to $1,000+s. Amazon has a service called Route53 you can use or you can choose other providers such as [Google Domains](https://domains.google/), [GoDaddy](https://www.godaddy.com/), etc. (we used Google for AlgoAcademy which was $10/year).

# There are two steps you would need to configure to connect the project with a custom domain:

# - Create domain records with DNS registrar
# - Configure NGINX on the EC2 instance to recognize the domain

# ---

# ### _Creating Domain records_

# Let's start with configuring our DNS with records:

# - Go to the **DNS** portion of your registrar.
# - Find where you can create custom resource records.

# Set the records like so:

# | Name | Type | TTL | Data |
# | ---- | :---: | :-: | ----------------------: |
# | @ | A | 1h | YOUR-ELASTIC-IP-ADDRESS |
# | www | CNAME | 1h | your-awesome-site.com |

# ### _Configuring our Web Server_

# Edit the NGINX config file inside your EC2 instance:
12 changes: 12 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
FROM python:3.8.16-slim-bullseye

ENV API_USER=test API_PASSWORD=test ECWID_PRIVATE_TOKEN=test \
STORE_ID=123 PICKUP_LOCATION_ID=12324 ID_FIRST_VALUE=1 \
[email protected] SENDER_PASSWORD=test

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt --no-cache-dir

COPY . .
EXPOSE 8081
ENTRYPOINT [ "python", "app.py" ]
2 changes: 1 addition & 1 deletion app.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,4 @@
# Here the app.app is the flask app which can be used to add flask app
register_flask_blueprint(app.app, False)

app.run(port=8081, debug=True)
app.run(port=8081)
20 changes: 20 additions & 0 deletions deploy.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
DOCKER_APT_PACKAGE="docker.io"
IMAGE_NAME="docker.io/alhazenlabs/deployment:v1"
CONTAINER_NAME="alhazenlabs-deployment"
PORT="8081"

if [ $(dpkg-query -W -f='${Status}' $DOCKER_APT_PACKAGE 2>/dev/null | grep -c "ok installed") -eq 0 ];
then
echo "Installation of docker wasn't found installing docker..."
sudo apt-get update
sudo apt install $DOCKER_APT_PACKAGE
sudo groupadd docker
sudo usermod -aG docker $USER
else
echo "Installation of docker found skipping installation"
fi

echo "stopping the existing container: $CONTAINER_NAME"
docker stop $CONTAINER_NAME
echo "starting a new container: $CONTAINER_NAME"
docker run --name $CONTAINER_NAME -p 80:8081 -p 443:8081 -d $IMAGE_NAME
2 changes: 2 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# Python 3.8.10

APScheduler==3.0.0
asgiref==3.7.2
attrs==23.1.0
Expand Down

0 comments on commit 2b63c56

Please sign in to comment.