Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions .github/workflows/build_and_push_staging_image.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
name: Build and push image - Staging

on: workflow_call

env:
AWS_REGION: "us-east-1"
AWS_ROLE: "arn:aws:iam::362799379729:role/gha-langflow-us-east-1"
TAGS_PREFIX: "362799379729.dkr.ecr.us-east-1.amazonaws.com/betterup-langflow-us-east-1"

jobs:
push-image:
name: Push image
runs-on: ubuntu-latest
environment: us-east-1-staging
permissions:
id-token: write
contents: read
outputs:
chart_version: ${{ steps.outputs.outputs.version }}
sha_short: ${{ steps.outputs.outputs.sha_short }}
steps:
- name: Checkout the code
uses: actions/checkout@v4

- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ env.AWS_ROLE }}
aws-region: ${{ env.AWS_REGION }}

- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v2

- name: Set up QEMU
uses: docker/setup-qemu-action@v3

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

- name: Tags for Docker
id: tags
uses: docker/metadata-action@v5
with:
images: ${{ env.TAGS_PREFIX }}
tags: |
type=schedule,pattern=latest
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}
type=ref,event=branch
type=sha,format=long

- uses: docker/build-push-action@v6
with:
push: true
context: .
file: Dockerfile.production
tags: ${{ steps.tags.outputs.tags }}
labels: ${{ steps.tags.outputs.labels }}
47 changes: 47 additions & 0 deletions .github/workflows/deploy_us_east_1_staging_chart.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: Deploy us-east-1-staging chart

on: workflow_call

env:
AWS_REGION: "us-east-1"
AWS_ROLE: "arn:aws:iam::362799379729:role/gha-langflow-us-east-1"

jobs:
deploy-chart:
name: Deploy chart
runs-on: ubuntu-latest
environment: us-east-1-staging
permissions:
id-token: write
contents: read
steps:
- name: Checkout the code
uses: actions/checkout@v4

- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ env.AWS_ROLE }}
aws-region: ${{ env.AWS_REGION }}

- name: Install Helm
uses: azure/setup-helm@v4
with:
version: '3.12.0'

- name: Update kubeconfig
run: |
aws eks update-kubeconfig --region ${{ env.AWS_REGION }} --name us-east-1-staging

- name: Deploy Helm chart
run: |
CHART_VERSION="0.1.${GITHUB_RUN_NUMBER}"
IMAGE_TAG="${GITHUB_SHA}"

helm upgrade --install langflow \
oci://362799379729.dkr.ecr.us-east-1.amazonaws.com/betterup-helm-charts/langflow \
--version ${CHART_VERSION} \
--namespace default \
--values release/kubernetes/langflow/values/us-east-1-staging/values.yaml \
--set image.version=${IMAGE_TAG} \
--wait --timeout=300s
47 changes: 47 additions & 0 deletions .github/workflows/push_us_east_1_staging_chart.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: Push chart to us-east-1-staging

on: workflow_call

env:
AWS_REGION: "us-east-1"
AWS_ROLE: "arn:aws:iam::362799379729:role/gha-langflow-us-east-1"

jobs:
push-chart:
name: Push chart
runs-on: ubuntu-latest
environment: us-east-1-staging
permissions:
id-token: write
contents: read
steps:
- name: Checkout the code
uses: actions/checkout@v4

- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ env.AWS_ROLE }}
aws-region: ${{ env.AWS_REGION }}

- name: Install Helm
uses: azure/setup-helm@v4
with:
version: '3.12.0'

- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v2

- name: Update Chart version
run: |
# Update Chart.yaml with new version
CHART_VERSION="0.1.${GITHUB_RUN_NUMBER}"
sed -i "s/version: .*/version: ${CHART_VERSION}/" release/kubernetes/langflow/Chart.yaml
echo "CHART_VERSION=${CHART_VERSION}" >> $GITHUB_ENV

- name: Package and push Helm chart
run: |
cd release/kubernetes
helm package langflow
helm push langflow-${CHART_VERSION}.tgz oci://362799379729.dkr.ecr.us-east-1.amazonaws.com/betterup-helm-charts
26 changes: 26 additions & 0 deletions .github/workflows/staging_cd.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: Deploy - Staging CD

on:
push:
branches:
- main
- staging
workflow_dispatch:

jobs:
build_images:
name: Build images
uses: ./.github/workflows/build_and_push_staging_image.yml
secrets: inherit

push_us_east_1_staging_chart:
name: Push chart to us-east-1-staging
needs: build_images
uses: ./.github/workflows/push_us_east_1_staging_chart.yml
secrets: inherit

deploy_us_east_1_staging_helm_chart:
name: Deploy us-east-1-staging helm chart
needs: push_us_east_1_staging_chart
uses: ./.github/workflows/deploy_us_east_1_staging_chart.yml
secrets: inherit
52 changes: 52 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: Test Suite

on:
workflow_dispatch: {}
pull_request: {}
push:
branches:
- main
- staging

jobs:
test:
name: Run Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.11'

- name: Install uv
run: pip install uv

- name: Install dependencies
run: uv sync --frozen

- name: Run tests
run: uv run pytest tests/ -v || echo "Tests not yet implemented"

- name: Lint Python code
run: |
uv run ruff check src/ || echo "Linting not yet configured"
uv run ruff format --check src/ || echo "Formatting not yet configured"

docker-build-test:
name: Test Docker Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

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

- name: Build Docker image
uses: docker/build-push-action@v6
with:
context: .
file: Dockerfile.production
push: false
tags: langflow:test
Loading