Skip to content

Commit

Permalink
add project 1
Browse files Browse the repository at this point in the history
  • Loading branch information
kevingrismore committed Mar 5, 2024
1 parent 10e077f commit a9efb9a
Show file tree
Hide file tree
Showing 6 changed files with 155 additions and 1 deletion.
112 changes: 112 additions & 0 deletions .github/workflows/project-1-deploy.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
name: Build image and deploy Prefect flow - Project 1

env:
PROJECT_NAME: project_1

on:
push:
branches:
- stg
- main
paths:
- "project_1/**"
workflow_dispatch:

jobs:
deploy-staging:
name: Deploy to staging
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/stg'

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

- name: Get commit hash
id: get-commit-hash
run: echo "COMMIT_HASH=$(git rev-parse --short HEAD)" >> "$GITHUB_OUTPUT"

- name: Build and push
id: build-docker-image
env:
GITHUB_SHA: ${{ steps.get-commit-hash.outputs.COMMIT_HASH }}
uses: docker/build-push-action@v5
with:
context: ${{ env.PROJECT_NAME }}/
push: true
tags: ${{ secrets.DOCKER_USERNAME }}/${{ env.PROJECT_NAME }}:${{ env.GITHUB_SHA }}-stg
cache-from: type=gha
cache-to: type=gha,mode=max

- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
cache: "pip"

- name: Prefect Deploy
env:
PREFECT_API_KEY: ${{ secrets.PREFECT_API_KEY }}
IMAGE_NAME: ${{ steps.build-docker-image.outputs.metadata.image.name }}
run: |
pip install -r $PROJECT_NAME/requirements.txt
prefect cloud workspace set -w sales-engineering/sandbox-kevin-stg
prefect deploy --all --prefect-file $PROJECT_NAME/prefect.yaml
deploy-production:
name: Deploy to production
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

- name: Get commit hash
id: get-commit-hash
run: echo "COMMIT_HASH=$(git rev-parse --short HEAD)" >> "$GITHUB_OUTPUT"

- name: Build and push
id: build-docker-image
env:
GITHUB_SHA: ${{ steps.get-commit-hash.outputs.COMMIT_HASH }}
uses: docker/build-push-action@v5
with:
context: ${{ env.PROJECT_NAME }}/
push: true
tags: ${{ secrets.DOCKER_USERNAME }}/${{ env.PROJECT_NAME }}:${{ env.GITHUB_SHA }}-prod
cache-from: type=gha
cache-to: type=gha,mode=max

- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
cache: "pip"

- name: Prefect Deploy
env:
PREFECT_API_KEY: ${{ secrets.PREFECT_API_KEY }}
IMAGE_NAME: ${{ steps.build-docker-image.outputs.metadata.image.name }}
run: |
pip install -r $PROJECT_NAME/requirements.txt
prefect cloud workspace set -w sales-engineering/sandbox-kevin
prefect deploy --all --prefect-file $PROJECT_NAME/prefect.yaml
3 changes: 3 additions & 0 deletions project_1/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
FROM --platform=linux/amd64 prefecthq/prefect:2.16.2-python3.11
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
10 changes: 10 additions & 0 deletions project_1/flow.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
from prefect import flow


@flow(log_prints=True)
def hello():
print("Hello from Project 1!")


if __name__ == "__main__":
hello()
27 changes: 27 additions & 0 deletions project_1/prefect.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: cicd-example-workspaces
prefect-version: 2.16.2

build: null

push:
- prefect_aws.deployments.steps.push_to_s3:
requires: prefect-aws
bucket: cicd-example-workspaces
folder: "{{ $PROJECT_NAME }}"
credentials: "{{ prefect.blocks.aws-credentials.ecs-worker-changes }}"

pull:
- prefect_aws.deployments.steps.pull_from_s3:
requires: prefect-aws
bucket: cicd-example-workspaces
folder: "{{ $PROJECT_NAME }}"
credentials: "{{ prefect.blocks.aws-credentials.ecs-worker-changes }}"

deployments:
- name: my-project-1-deployment
entrypoint: "{{ $PROJECT_NAME }}/flow.py:hello"
work_pool:
name: k8s-demo
work_queue_name: default
job_variables:
image: "{{ $IMAGE_NAME }}"
2 changes: 2 additions & 0 deletions project_1/requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
prefect==2.16.1
prefect-aws
2 changes: 1 addition & 1 deletion project_2/flow.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

@flow(log_prints=True)
def hello():
print("Hello from Project 2!")
print("Hello from Project 2! :)")


if __name__ == "__main__":
Expand Down

0 comments on commit a9efb9a

Please sign in to comment.