Skip to content

Commit

Permalink
updated the dockerfile, docker compose and cd files to reflect the do…
Browse files Browse the repository at this point in the history
…cker changes
  • Loading branch information
Sarahligbe authored Aug 8, 2024
1 parent 3426b34 commit 7f96b2a
Show file tree
Hide file tree
Showing 14 changed files with 360 additions and 70 deletions.
45 changes: 25 additions & 20 deletions .github/workflows/cd.dev.yml
Original file line number Diff line number Diff line change
@@ -1,35 +1,40 @@
name: Dev Branch Deployment

name: Dev cd pipeline
on:
workflow_run:
workflows: ["CI"]
types:
- completed
branches: [dev]
push:
branches: [devops]

jobs:
on-success:
build-and-deploy:
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'success' }}
steps:
- name: Checkout code
uses: actions/checkout@v3

- name: Use SSH Action
- name: Build image
run: docker build -t anchor-python-bp-dev:latest -f Dockerfile .

- name: Save image
run: docker save anchor-python-bp-dev:latest | gzip > dev.tar.gz

- name: Copy image to server
uses: appleboy/[email protected]
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
source: "dev.tar.gz"
target: "/home/${{ secrets.USERNAME }}/boilerplate-python/dev_source_code"

- name: Deploy image on server
uses: appleboy/[email protected]
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
script: |
cd python/dev_source_code/
git pull origin dev
source .venv/bin/activate
pip install -r requirements.txt
alembic upgrade head
cd /home/${{ secrets.USERNAME }}/boilerplate-python/dev_source_code
git pull origin devops
docker load --input dev.tar.gz
docker compose -f docker-compose.yml up -d
rm -f dev.tar.gz
on-failure:
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'failure' }}
steps:
- run: echo 'The triggering workflow failed'
35 changes: 35 additions & 0 deletions .github/workflows/cd.dev.yml.bac
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Dev Branch Deployment

on:
workflow_run:
workflows: ["CI"]
types:
- completed
branches: [dev]

jobs:
on-success:
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'success' }}
steps:
- name: Checkout code
uses: actions/checkout@v3

- name: Use SSH Action
uses: appleboy/[email protected]
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
script: |
cd python/dev_source_code/
git pull origin dev
source .venv/bin/activate
pip install -r requirements.txt
alembic upgrade head

on-failure:
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'failure' }}
steps:
- run: echo 'The triggering workflow failed'
44 changes: 24 additions & 20 deletions .github/workflows/cd.prod.yml
Original file line number Diff line number Diff line change
@@ -1,35 +1,39 @@
name: Prod Branch Deployment

name: Prod cd pipeline
on:
workflow_run:
workflows: ["CI"]
types:
- completed
branches: [main]
push:
branches: [dev]

jobs:
on-success:
build-and-deploy:
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'success' }}
steps:
- name: Checkout code
uses: actions/checkout@v3

- name: Use SSH Action
- name: Build image
run: docker build -t anchor-python-bp-prod:latest -f docker/prod/Dockerfile .

- name: Save image
run: docker save anchor-python-bp-prod:latest | gzip > prod.tar.gz

- name: Copy image to server
uses: appleboy/[email protected]
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
source: "prod.tar.gz"
target: "/home/${{ secrets.USERNAME }}/boilerplate-python/prod_source_code/docker/prod"

- name: Deploy image on server
uses: appleboy/[email protected]
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
script: |
cd python/prod_source_code/
cd /home/${{ secrets.USERNAME }}/boilerplate-python/prod_source_code/docker/prod
git pull origin main
source .venv/bin/activate
pip install -r requirements.txt
alembic upgrade head
on-failure:
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'failure' }}
steps:
- run: echo 'The triggering workflow failed'
docker load --input prod.tar.gz
docker compose -f docker-compose.yml up -d
rm -f prod.tar.gz
35 changes: 35 additions & 0 deletions .github/workflows/cd.prod.yml.bac
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Prod Branch Deployment

on:
workflow_run:
workflows: ["CI"]
types:
- completed
branches: [main]

jobs:
on-success:
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'success' }}
steps:
- name: Checkout code
uses: actions/checkout@v3

- name: Use SSH Action
uses: appleboy/[email protected]
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
script: |
cd python/prod_source_code/
git pull origin main
source .venv/bin/activate
pip install -r requirements.txt
alembic upgrade head

on-failure:
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'failure' }}
steps:
- run: echo 'The triggering workflow failed'
42 changes: 23 additions & 19 deletions .github/workflows/cd.staging.yml
Original file line number Diff line number Diff line change
@@ -1,35 +1,39 @@
name: Staging Branch Deployment

name: Staging cd pipeline
on:
workflow_run:
workflows: ["CI"]
types:
- completed
push:
branches: [staging]

jobs:
on-success:
build-and-deploy:
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'success' }}
steps:
- name: Checkout code
uses: actions/checkout@v3

- name: Use SSH Action
- name: Build image
run: docker build -t anchor-python-bp-staging:latest -f docker/staging/Dockerfile .

- name: Save image
run: docker save anchor-python-bp-staging:latest | gzip > staging.tar.gz

- name: Copy image to server
uses: appleboy/[email protected]
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
source: "staging.tar.gz"
target: "/home/${{ secrets.USERNAME }}/boilerplate-python/staging_source_code/docker/staging"

- name: Deploy image on server
uses: appleboy/[email protected]
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
script: |
cd python/staging_source_code/
cd /home/${{ secrets.USERNAME }}/boilerplate-python/staging_source_code/docker/staging
git pull origin staging
source .venv/bin/activate
pip install -r requirements.txt
alembic upgrade head
on-failure:
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'failure' }}
steps:
- run: echo 'The triggering workflow failed'
docker load --input staging.tar.gz
docker compose -f docker-compose.yml up -d
rm -f staging.tar.gz
35 changes: 35 additions & 0 deletions .github/workflows/cd.staging.yml.bac
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Staging Branch Deployment

on:
workflow_run:
workflows: ["CI"]
types:
- completed
branches: [staging]

jobs:
on-success:
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'success' }}
steps:
- name: Checkout code
uses: actions/checkout@v3

- name: Use SSH Action
uses: appleboy/[email protected]
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
script: |
cd python/staging_source_code/
git pull origin staging
source .venv/bin/activate
pip install -r requirements.txt
alembic upgrade head

on-failure:
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'failure' }}
steps:
- run: echo 'The triggering workflow failed'
File renamed without changes.
6 changes: 4 additions & 2 deletions .github/workflows/pr-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ jobs:
steps:
- name: Checkout to branch
uses: actions/checkout@v4
- name: Copy .env.sample to .env
run: cp .env.sample .env
- id: deploy
name: Pull Request Deploy
uses: hngprojects/pr-deploy@dev
Expand All @@ -22,8 +24,8 @@ jobs:
comment: true
context: '.'
dockerfile: 'Dockerfile'
exposed_port: '8000'
exposed_port: '7001'
github_token: ${{ secrets.GITHUB_TOKEN }}
- name: Print Preview Url
run: |
echo "Preview Url: ${{ steps.deploy.outputs.preview-url }}"
echo "Preview Url: ${{ steps.deploy.outputs.preview-url }}"
50 changes: 50 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: Test
on:
pull_request:
types: [opened, synchronize, reopened, closed]

jobs:
test:
runs-on: ubuntu-latest

services:
postgres:
image: postgres:latest
env:
POSTGRES_USER: "username"
POSTGRES_PASSWORD: "password"
POSTGRES_DB: "test"
ports:
- 5432:5432

steps:
- name: Checkout code
uses: actions/checkout@v2

- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.12"

- name: Cache dependencies
uses: actions/cache@v3
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Install dependencies
run: |
pip install -r requirements.txt
- name: Copy env file
run: cp .env.sample .env

- name: Run migrations
run: |
alembic upgrade head
- name: Run tests
run: |
PYTHONPATH=. pytest
16 changes: 7 additions & 9 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Use an official Python runtime as the base image
FROM python:3.11.9-alpine
FROM python:3.12-alpine

# Set environment variables
ENV PYTHONDONTWRITEBYTECODE=1
Expand All @@ -11,17 +11,15 @@ WORKDIR /app
# Install system dependencies
RUN apk add --no-cache curl

#copy the requirements.txt file and install with pip
COPY ./requirements.txt /app/requirements.txt
RUN pip install --no-cache-dir --upgrade -r requirements.txt

# Copy the rest of the backend files
COPY . /app/

# Copy the .env.sample to .env
COPY .env.sample /app/.env

# Install dependencies
RUN pip install --no-cache-dir --upgrade -r requirements.txt

# Expose the port the app runs on
EXPOSE 8000
EXPOSE 7001

# Command to run the application
CMD ["/bin/sh", "-c", "uvicorn main:app --host 0.0.0.0 --port 8000 --reload"]
CMD ["/bin/sh", "-c", "uvicorn main:app --host 0.0.0.0 --port 7001 --reload"]
Loading

0 comments on commit 7f96b2a

Please sign in to comment.