Skip to content

Commit

Permalink
chore: test docker cache
Browse files Browse the repository at this point in the history
  • Loading branch information
khorshuheng committed Feb 20, 2025
1 parent 884ecf7 commit 9a99161
Show file tree
Hide file tree
Showing 2 changed files with 134 additions and 124 deletions.
256 changes: 133 additions & 123 deletions .github/workflows/integration_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,134 +35,144 @@ jobs:
setup:
name: Setup Environment
runs-on: ubuntu-latest
env:
IMAGE_NAME: ${{ secrets.DOCKER_HUB_USERNAME }}/appflowy_cloud
steps:
- uses: actions/checkout@v4
- name: Install prerequisites
run: |
sudo apt-get update
sudo apt-get install protobuf-compiler
sudo update-ca-certificates
- name: Build Docker Images
run: |
export DOCKER_DEFAULT_PLATFORM=linux/amd64
cp deploy.env .env
docker compose build appflowy_cloud appflowy_worker admin_frontend
- name: Push docker images to docker hub
run: |
docker tag appflowyinc/appflowy_cloud appflowyinc/appflowy_cloud:${GITHUB_SHA}
docker tag appflowyinc/appflowy_worker appflowyinc/appflowy_worker:${GITHUB_SHA}
docker tag appflowyinc/admin_frontend appflowyinc/admin_frontend:${GITHUB_SHA}
echo ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} | docker login --username appflowyinc --password-stdin
docker push appflowyinc/appflowy_cloud:${GITHUB_SHA}
docker push appflowyinc/appflowy_worker:${GITHUB_SHA}
docker push appflowyinc/admin_frontend:${GITHUB_SHA}
APPFLOWY_WORKER_VERSION=${GITHUB_SHA}
APPFLOWY_CLOUD_VERSION=${GITHUB_SHA}
APPFLOWY_ADMIN_FRONTEND_VERSION=${GITHUB_SHA}
test:
name: Integration Tests
runs-on: ubuntu-latest
needs: setup
strategy:
matrix:
include:
- test_service: "appflowy_cloud"
test_cmd: "--workspace --exclude appflowy-ai-client --features ai-test-enabled"
- test_service: "appflowy_worker"
test_cmd: "-p appflowy-worker"
- test_service: "admin_frontend"
test_cmd: "-p admin_frontend"
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
with:
toolchain: ${{ env.RUST_TOOLCHAIN }}
workspaces: "AppFlowy-Cloud"

- name: Copy and rename deploy.env to .env
run: cp deploy.env .env

- name: Replace values in .env
run: |
# log level
sed -i 's|RUST_LOG=.*|RUST_LOG=trace|' .env
sed -i 's|GOTRUE_SMTP_USER=.*|GOTRUE_SMTP_USER=${{ secrets.CI_GOTRUE_SMTP_USER }}|' .env
sed -i 's|GOTRUE_SMTP_PASS=.*|GOTRUE_SMTP_PASS=${{ secrets.CI_GOTRUE_SMTP_PASS }}|' .env
sed -i 's|GOTRUE_SMTP_ADMIN_EMAIL=.*|GOTRUE_SMTP_ADMIN_EMAIL=${{ secrets.CI_GOTRUE_SMTP_ADMIN_EMAIL }}|' .env
sed -i 's|GOTRUE_EXTERNAL_GOOGLE_ENABLED=.*|GOTRUE_EXTERNAL_GOOGLE_ENABLED=true|' .env
sed -i 's|GOTRUE_MAILER_AUTOCONFIRM=.*|GOTRUE_MAILER_AUTOCONFIRM=false|' .env
sed -i 's|API_EXTERNAL_URL=http://your-host/gotrue|API_EXTERNAL_URL=http://localhost/gotrue|' .env
sed -i 's|GOTRUE_RATE_LIMIT_EMAIL_SENT=100|GOTRUE_RATE_LIMIT_EMAIL_SENT=1000|' .env
sed -i 's|APPFLOWY_MAILER_SMTP_USERNAME=.*|APPFLOWY_MAILER_SMTP_USERNAME=${{ secrets.CI_GOTRUE_SMTP_USER }}|' .env
sed -i 's|APPFLOWY_MAILER_SMTP_PASSWORD=.*|APPFLOWY_MAILER_SMTP_PASSWORD=${{ secrets.CI_GOTRUE_SMTP_PASS }}|' .env
sed -i 's|AI_OPENAI_API_KEY=.*|AI_OPENAI_API_KEY=${{ secrets.CI_OPENAI_API_KEY }}|' .env
sed -i "s|AI_AWS_ACCESS_KEY_ID=.*|AI_AWS_ACCESS_KEY_ID=${{ secrets.LOCAL_AI_AWS_ACCESS_KEY_ID }}|" .env
sed -i "s|AI_AWS_SECRET_ACCESS_KEY=.*|AI_AWS_SECRET_ACCESS_KEY=${{ secrets.LOCAL_AI_AWS_SECRET_ACCESS_KEY }}|" .env
sed -i 's|AI_APPFLOWY_HOST=.*|AI_APPFLOWY_HOST=http://localhost|' .env
sed -i 's|APPFLOWY_WEB_URL=.*|APPFLOWY_WEB_URL=http://localhost:3000|' .env
sed -i 's|.*APPFLOWY_S3_PRESIGNED_URL_ENDPOINT=.*|APPFLOWY_S3_PRESIGNED_URL_ENDPOINT=http://localhost/minio-api|' .env
shell: bash

- name: Update Nginx Configuration
# the wasm-pack headless tests will run on random ports, so we need to allow all origins
run: sed -i 's/http:\/\/127\.0\.0\.1:8000/http:\/\/127.0.0.1/g' nginx/nginx.conf

fetch-depth: 1
- 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_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}

- name: Run Docker-Compose
run: |
export APPFLOWY_WORKER_VERSION=${GITHUB_SHA}
export APPFLOWY_CLOUD_VERSION=${GITHUB_SHA}
export APPFLOWY_ADMIN_FRONTEND_VERSION=${GITHUB_SHA}
docker compose -f docker-compose-ci.yml up -d
docker ps -a
- name: Install prerequisites
run: |
sudo apt-get update
sudo apt-get install -y protobuf-compiler
- name: Run Tests
run: |
echo "Running tests for ${{ matrix.test_service }} with flags: ${{ matrix.test_cmd }}"
RUST_LOG="info" DISABLE_CI_TEST_LOG="true" cargo test ${{ matrix.test_cmd }} -- --skip stress_test
- name: Server Logs
if: failure()
run: |
docker ps -a
docker compose -f docker-compose-ci.yml logs
- name: AI Logs
if: always()
run: |
docker logs appflowy-cloud-ai-1
cleanup:
name: Cleanup Docker Images
if: always()
needs: test
runs-on: ubuntu-latest
steps:
- name: Remove Docker Images from Docker Hub
run: |
TOKEN=$(curl -s -H "Content-Type: application/json" -X POST -d '{"username": "appflowyinc", "password": "${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}"}' https://hub.docker.com/v2/users/login/ | jq -r .token)
if [ -z "$TOKEN" ]; then
echo "Error: Docker Hub token not set"
exit 1
fi
IMAGE_TAG="${{ matrix.test_service }}"
RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" -X DELETE -H "Authorization: JWT ${TOKEN}" https://hub.docker.com/v2/repositories/appflowyinc/${IMAGE_TAG}/tags/${GITHUB_SHA}/)
if [ "$RESPONSE" -ne 204 ]; then
echo "Error: Failed to delete Docker image tag. HTTP response code: $RESPONSE"
else
echo "Successfully deleted Docker image tag for $IMAGE_TAG:${GITHUB_SHA}"
fi
- name: Build and push ${{ matrix.job.image_name }}:${{ env.GIT_TAG }}
uses: docker/build-push-action@v5
with:
push: false
tags: |
${{ env.IMAGE_NAME }}:test
build-args: |
PROFILE=release
FEATURES=
cache-from: type=gha
cache-to: type=gha,mode=max
# - name: Push docker images to docker hub
# run: |
# docker tag appflowyinc/appflowy_cloud appflowyinc/appflowy_cloud:${GITHUB_SHA}
# docker tag appflowyinc/appflowy_worker appflowyinc/appflowy_worker:${GITHUB_SHA}
# docker tag appflowyinc/admin_frontend appflowyinc/admin_frontend:${GITHUB_SHA}
# echo ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} | docker login --username appflowyinc --password-stdin
# docker push appflowyinc/appflowy_cloud:${GITHUB_SHA}
# docker push appflowyinc/appflowy_worker:${GITHUB_SHA}
# docker push appflowyinc/admin_frontend:${GITHUB_SHA}
# APPFLOWY_WORKER_VERSION=${GITHUB_SHA}
# APPFLOWY_CLOUD_VERSION=${GITHUB_SHA}
# APPFLOWY_ADMIN_FRONTEND_VERSION=${GITHUB_SHA}

# test:
# name: Integration Tests
# runs-on: ubuntu-latest
# needs: setup
# strategy:
# matrix:
# include:
# - test_service: "appflowy_cloud"
# test_cmd: "--workspace --exclude appflowy-ai-client --features ai-test-enabled"
# - test_service: "appflowy_worker"
# test_cmd: "-p appflowy-worker"
# - test_service: "admin_frontend"
# test_cmd: "-p admin_frontend"
# steps:
# - uses: actions/checkout@v4
# - uses: dtolnay/rust-toolchain@stable
# - uses: Swatinem/rust-cache@v2
# with:
# toolchain: ${{ env.RUST_TOOLCHAIN }}
# workspaces: "AppFlowy-Cloud"

# - name: Copy and rename deploy.env to .env
# run: cp deploy.env .env

# - name: Replace values in .env
# run: |
# # log level
# sed -i 's|RUST_LOG=.*|RUST_LOG=trace|' .env
# sed -i 's|GOTRUE_SMTP_USER=.*|GOTRUE_SMTP_USER=${{ secrets.CI_GOTRUE_SMTP_USER }}|' .env
# sed -i 's|GOTRUE_SMTP_PASS=.*|GOTRUE_SMTP_PASS=${{ secrets.CI_GOTRUE_SMTP_PASS }}|' .env
# sed -i 's|GOTRUE_SMTP_ADMIN_EMAIL=.*|GOTRUE_SMTP_ADMIN_EMAIL=${{ secrets.CI_GOTRUE_SMTP_ADMIN_EMAIL }}|' .env
# sed -i 's|GOTRUE_EXTERNAL_GOOGLE_ENABLED=.*|GOTRUE_EXTERNAL_GOOGLE_ENABLED=true|' .env
# sed -i 's|GOTRUE_MAILER_AUTOCONFIRM=.*|GOTRUE_MAILER_AUTOCONFIRM=false|' .env
# sed -i 's|API_EXTERNAL_URL=http://your-host/gotrue|API_EXTERNAL_URL=http://localhost/gotrue|' .env
# sed -i 's|GOTRUE_RATE_LIMIT_EMAIL_SENT=100|GOTRUE_RATE_LIMIT_EMAIL_SENT=1000|' .env
# sed -i 's|APPFLOWY_MAILER_SMTP_USERNAME=.*|APPFLOWY_MAILER_SMTP_USERNAME=${{ secrets.CI_GOTRUE_SMTP_USER }}|' .env
# sed -i 's|APPFLOWY_MAILER_SMTP_PASSWORD=.*|APPFLOWY_MAILER_SMTP_PASSWORD=${{ secrets.CI_GOTRUE_SMTP_PASS }}|' .env
# sed -i 's|AI_OPENAI_API_KEY=.*|AI_OPENAI_API_KEY=${{ secrets.CI_OPENAI_API_KEY }}|' .env
# sed -i "s|AI_AWS_ACCESS_KEY_ID=.*|AI_AWS_ACCESS_KEY_ID=${{ secrets.LOCAL_AI_AWS_ACCESS_KEY_ID }}|" .env
# sed -i "s|AI_AWS_SECRET_ACCESS_KEY=.*|AI_AWS_SECRET_ACCESS_KEY=${{ secrets.LOCAL_AI_AWS_SECRET_ACCESS_KEY }}|" .env
# sed -i 's|AI_APPFLOWY_HOST=.*|AI_APPFLOWY_HOST=http://localhost|' .env
# sed -i 's|APPFLOWY_WEB_URL=.*|APPFLOWY_WEB_URL=http://localhost:3000|' .env
# sed -i 's|.*APPFLOWY_S3_PRESIGNED_URL_ENDPOINT=.*|APPFLOWY_S3_PRESIGNED_URL_ENDPOINT=http://localhost/minio-api|' .env
# shell: bash

# - name: Update Nginx Configuration
# # the wasm-pack headless tests will run on random ports, so we need to allow all origins
# run: sed -i 's/http:\/\/127\.0\.0\.1:8000/http:\/\/127.0.0.1/g' nginx/nginx.conf

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

# - name: Run Docker-Compose
# run: |
# export APPFLOWY_WORKER_VERSION=${GITHUB_SHA}
# export APPFLOWY_CLOUD_VERSION=${GITHUB_SHA}
# export APPFLOWY_ADMIN_FRONTEND_VERSION=${GITHUB_SHA}
# docker compose -f docker-compose-ci.yml up -d
# docker ps -a

# - name: Install prerequisites
# run: |
# sudo apt-get update
# sudo apt-get install -y protobuf-compiler

# - name: Run Tests
# run: |
# echo "Running tests for ${{ matrix.test_service }} with flags: ${{ matrix.test_cmd }}"
# RUST_LOG="info" DISABLE_CI_TEST_LOG="true" cargo test ${{ matrix.test_cmd }} -- --skip stress_test

# - name: Server Logs
# if: failure()
# run: |
# docker ps -a
# docker compose -f docker-compose-ci.yml logs

# - name: AI Logs
# if: always()
# run: |
# docker logs appflowy-cloud-ai-1

# cleanup:
# name: Cleanup Docker Images
# if: always()
# needs: test
# runs-on: ubuntu-latest
# steps:
# - name: Remove Docker Images from Docker Hub
# run: |
# TOKEN=$(curl -s -H "Content-Type: application/json" -X POST -d '{"username": "appflowyinc", "password": "${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}"}' https://hub.docker.com/v2/users/login/ | jq -r .token)
# if [ -z "$TOKEN" ]; then
# echo "Error: Docker Hub token not set"
# exit 1
# fi
# IMAGE_TAG="${{ matrix.test_service }}"
# RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" -X DELETE -H "Authorization: JWT ${TOKEN}" https://hub.docker.com/v2/repositories/appflowyinc/${IMAGE_TAG}/tags/${GITHUB_SHA}/)
# if [ "$RESPONSE" -ne 204 ]; then
# echo "Error: Failed to delete Docker image tag. HTTP response code: $RESPONSE"
# else
# echo "Successfully deleted Docker image tag for $IMAGE_TAG:${GITHUB_SHA}"
# fi
2 changes: 1 addition & 1 deletion src/biz/chat/metrics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ impl AIMetrics {
let metrics = Self::default();
let realtime_registry = registry.sub_registry_with_prefix("ai");

// Register each metric with the Prometheus registry
// (test) Register each metric with the Prometheus registry
realtime_registry.register(
"total_stream_count",
"Total count of streams processed",
Expand Down

0 comments on commit 9a99161

Please sign in to comment.