diff --git a/.github/workflows/build-workflow-worker-develop.yaml b/.github/workflows/build-workflow-worker-develop.yaml new file mode 100644 index 00000000..eaccff6c --- /dev/null +++ b/.github/workflows/build-workflow-worker-develop.yaml @@ -0,0 +1,66 @@ +name: (Develop) Build and Push Workflow Worker to AWS and GCP + +on: + workflow_dispatch: + +env: + PROJECT_ID: aesy-330511 + GCP_REGION: asia-south1 + GAR_LOCATION: asia-south1-docker.pkg.dev/aesy-330511/root-hub + IMAGE_NAME: wavefront-workflow-worker + +jobs: + build-push-artifact: + runs-on: ubuntu-latest + + steps: + - name: "Checkout" + uses: "actions/checkout@v3" + + - name: Get commit hash + id: get-commit-hash + run: echo "::set-output name=commit-hash::$(git rev-parse --short HEAD)" + + - name: Get timestamp + id: get-timestamp + run: echo "::set-output name=timestamp::$(date +'%Y-%m-%d-%H-%M')" + + - name: Cache Docker layers + id: cache-docker-layers + uses: actions/cache@v3 + with: + path: /tmp/.buildx-cache + key: ${{ runner.os }}-docker-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-docker- + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Build Docker Image + id: build-image + run: | + docker build -f wavefront/server/docker/workflow.Dockerfile -t rootflo:${{ steps.get-commit-hash.outputs.commit-hash }}-${{ steps.get-timestamp.outputs.timestamp }} . + echo "IMAGE_TAG=${{ steps.get-commit-hash.outputs.commit-hash }}-${{ steps.get-timestamp.outputs.timestamp }}" >> $GITHUB_ENV + + - id: "Auth-to-GCP" + uses: "google-github-actions/auth@v1" + with: + credentials_json: "${{ secrets.GCP_SERVICE_ACCOUNT_KEY }}" + + - name: "Set up Cloud SDK" + uses: "google-github-actions/setup-gcloud@v1" + + - name: "Docker auth for GCP" + run: |- + gcloud auth configure-docker ${{ env.GCP_REGION }}-docker.pkg.dev --quiet + + - name: Tag and push image to GCP Artifact Registry + run: | + docker tag rootflo:${{ env.IMAGE_TAG }} ${{ env.GAR_LOCATION }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} + docker push ${{ env.GAR_LOCATION }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} + + - name: Cleanup Docker images + run: | + docker rmi rootflo:${{ env.IMAGE_TAG }} || true + docker rmi ${{ env.GAR_LOCATION }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} || true diff --git a/wavefront/server/background_jobs/workflow_job/workflow_job/config.ini b/wavefront/server/background_jobs/workflow_job/workflow_job/config.ini index cfb4301e..40875d40 100644 --- a/wavefront/server/background_jobs/workflow_job/workflow_job/config.ini +++ b/wavefront/server/background_jobs/workflow_job/workflow_job/config.ini @@ -15,6 +15,9 @@ pubsub_subscription_id = ${GCP_PUBSUB_SUBSCRIPTION_ID} pubsub_topic_id = ${GCP_PUBSUB_TOPIC_ID} bucket = ${APPLICATION_BUCKET} +[gcp] +gcp_asset_storage_bucket = ${APPLICATION_BUCKET} + [floware] service_url = ${FLOWARE_SERVICE_URL} diff --git a/wavefront/server/docker/workflow.Dockerfile b/wavefront/server/docker/workflow.Dockerfile new file mode 100644 index 00000000..6157735b --- /dev/null +++ b/wavefront/server/docker/workflow.Dockerfile @@ -0,0 +1,36 @@ +FROM python:3.11-slim + +WORKDIR /app + +COPY --from=ghcr.io/astral-sh/uv:0.8.6 /uv /uvx /bin/ + +RUN apt-get update && apt-get install -y \ + git \ + && rm -rf /var/lib/apt/lists/* + +COPY wavefront/server/pyproject.toml wavefront/server/uv.lock ./ + +COPY wavefront/server/background_jobs/workflow_job /app/background_jobs/workflow_job +COPY wavefront/server/packages/flo_cloud /app/packages/flo_cloud +COPY wavefront/server/packages/flo_utils /app/packages/flo_utils + +COPY wavefront/server/modules/api_services_module /app/modules/api_services_module +COPY wavefront/server/modules/auth_module /app/modules/auth_module +COPY wavefront/server/modules/agents_module /app/modules/agents_module +COPY wavefront/server/modules/common_module /app/modules/common_module +COPY wavefront/server/modules/db_repo_module /app/modules/db_repo_module +COPY wavefront/server/modules/knowledge_base_module /app/modules/knowledge_base_module +COPY wavefront/server/modules/plugins_module /app/modules/plugins_module +COPY wavefront/server/modules/tools_module /app/modules/tools_module +COPY wavefront/server/modules/user_management_module /app/modules/user_management_module + +COPY wavefront/server/plugins/datasource /app/plugins/datasource +COPY wavefront/server/plugins/authenticator /app/plugins/authenticator + +# Install dependencies (without dependecy resolution and no dev dependencies) +RUN uv sync --package workflow_job --frozen --no-dev + +# change WORKDIR +WORKDIR /app/background_jobs/workflow_job/workflow_job + +CMD ["uv", "run", "main.py"]