diff --git a/.github/workflows/auto_format.yml b/.github/workflows/auto_format.yml
deleted file mode 100644
index c33cd39755d5..000000000000
--- a/.github/workflows/auto_format.yml
+++ /dev/null
@@ -1,23 +0,0 @@
-name: auto-format
-on: pull_request
-jobs:
- format:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout PR branch
- uses: actions/checkout@v2
- with:
- ref: ${{ github.event.pull_request.head.sha }}
- - name: autopep8
- uses: peter-evans/autopep8@v1
- with:
- args: --exit-code --recursive --in-place --aggressive --aggressive .
- - name: Check for modified files
- id: git-check
- run: echo "modified=$(if git diff-index --quiet HEAD --; then echo "false"; else echo "true"; fi)" >> $GITHUB_ENV
- - name: Push changes
- if: steps.git-check.outputs.modified == 'true'
- run: |
- git config --global user.name 'Torantulino'
- git config --global user.email 'toran.richards@gmail.com'
- git remote set
diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmarks.yml
similarity index 60%
rename from .github/workflows/benchmark.yml
rename to .github/workflows/benchmarks.yml
index 0d9822f70530..272fca17bdcb 100644
--- a/.github/workflows/benchmark.yml
+++ b/.github/workflows/benchmarks.yml
@@ -1,4 +1,4 @@
-name: benchmark
+name: Run Benchmarks
on:
workflow_dispatch:
@@ -6,26 +6,26 @@ on:
jobs:
build:
runs-on: ubuntu-latest
- environment: benchmark
- strategy:
- matrix:
- python-version: ['3.10', '3.11']
+
+ env:
+ python-version: '3.10'
steps:
- - name: Check out repository
+ - name: Checkout repository
uses: actions/checkout@v3
- - name: Set up Python ${{ matrix.python-version }}
- uses: actions/setup-python@v2
+ - name: Set up Python ${{ env.python-version }}
+ uses: actions/setup-python@v4
with:
- python-version: ${{ matrix.python-version }}
+ python-version: ${{ env.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
+
- name: benchmark
- run: |
- python benchmark/benchmark_entrepreneur_gpt_with_undecisive_user.py
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
+ run: |
+ python benchmark/benchmark_entrepreneur_gpt_with_undecisive_user.py
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 780db14fc6c5..0b2bbde668e6 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -2,12 +2,12 @@ name: Python CI
on:
push:
- branches: [master]
+ branches: [ master ]
pull_request:
- branches: [master]
+ branches: [ master ]
concurrency:
- group: ${{ format('ci-{0}', format('pr-{0}', github.event.pull_request.number) || github.sha) }}
+ group: ${{ format('ci-{0}', github.head_ref && format('pr-{0}', github.event.pull_request.number) || github.sha) }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
jobs:
@@ -17,7 +17,7 @@ jobs:
min-python-version: "3.10"
steps:
- - name: Check out repository
+ - name: Checkout repository
uses: actions/checkout@v3
- name: Set up Python ${{ env.min-python-version }}
@@ -74,6 +74,7 @@ jobs:
pytest --cov=autogpt --cov-report term-missing --cov-branch --cov-report xml --cov-report term
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
+
- name: Generate coverage report
run: |
coverage report
diff --git a/.github/workflows/docker-cache-clean.yml b/.github/workflows/docker-cache-clean.yml
new file mode 100644
index 000000000000..f3fc8c10b4e8
--- /dev/null
+++ b/.github/workflows/docker-cache-clean.yml
@@ -0,0 +1,58 @@
+name: Purge Docker CI cache
+
+on:
+ schedule:
+ - cron: 20 4 * * 1,4
+
+env:
+ BASE_BRANCH: master
+ IMAGE_NAME: auto-gpt
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ build-type: [release, dev]
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v3
+
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v2
+
+ - id: build
+ name: Build image
+ uses: docker/build-push-action@v3
+ with:
+ build-args: BUILD_TYPE=${{ matrix.build-type }}
+ load: true # save to docker images
+ # use GHA cache as read-only
+ cache-to: type=gha,scope=docker-${{ matrix.build-type }},mode=max
+
+ - name: Generate build report
+ env:
+ event_name: ${{ github.event_name }}
+ event_ref: ${{ github.event.schedule }}
+
+ build_type: ${{ matrix.build-type }}
+
+ prod_branch: stable
+ dev_branch: master
+ repository: ${{ github.repository }}
+ base_branch: ${{ github.ref_name != 'master' && github.ref_name != 'stable' && 'master' || 'stable' }}
+
+ current_ref: ${{ github.ref_name }}
+ commit_hash: ${{ github.sha }}
+ source_url: ${{ format('{0}/tree/{1}', github.event.repository.url, github.sha) }}
+ push_forced_label:
+
+ new_commits_json: ${{ null }}
+ compare_url_template: ${{ format('/{0}/compare/{{base}}...{{head}}', github.repository) }}
+
+ github_context_json: ${{ toJSON(github) }}
+ job_env_json: ${{ toJSON(env) }}
+ vars_json: ${{ toJSON(vars) }}
+
+ run: .github/workflows/scripts/docker-ci-summary.sh >> $GITHUB_STEP_SUMMARY
+ continue-on-error: true
diff --git a/.github/workflows/docker-ci.yml b/.github/workflows/docker-ci.yml
new file mode 100644
index 000000000000..c933202f16db
--- /dev/null
+++ b/.github/workflows/docker-ci.yml
@@ -0,0 +1,115 @@
+name: Docker CI
+
+on:
+ push:
+ branches: [ master ]
+ pull_request:
+ branches: [ master ]
+
+concurrency:
+ group: ${{ format('docker-ci-{0}', github.head_ref && format('pr-{0}', github.event.pull_request.number) || github.sha) }}
+ cancel-in-progress: ${{ github.event_name == 'pull_request' }}
+
+env:
+ IMAGE_NAME: auto-gpt
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ build-type: [release, dev]
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v3
+
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v2
+
+ - if: runner.debug
+ run: |
+ ls -al
+ du -hs *
+
+ - id: build
+ name: Build image
+ uses: docker/build-push-action@v3
+ with:
+ build-args: BUILD_TYPE=${{ matrix.build-type }}
+ tags: ${{ env.IMAGE_NAME }}
+ load: true # save to docker images
+ # cache layers in GitHub Actions cache to speed up builds
+ cache-from: type=gha,scope=docker-${{ matrix.build-type }}
+ cache-to: type=gha,scope=docker-${{ matrix.build-type }},mode=max
+
+ - name: Generate build report
+ env:
+ event_name: ${{ github.event_name }}
+ event_ref: ${{ github.event.ref }}
+ event_ref_type: ${{ github.event.ref}}
+
+ build_type: ${{ matrix.build-type }}
+
+ prod_branch: stable
+ dev_branch: master
+ repository: ${{ github.repository }}
+ base_branch: ${{ github.ref_name != 'master' && github.ref_name != 'stable' && 'master' || 'stable' }}
+
+ current_ref: ${{ github.ref_name }}
+ commit_hash: ${{ github.event.after }}
+ source_url: ${{ format('{0}/tree/{1}', github.event.repository.url, github.event.release && github.event.release.tag_name || github.sha) }}
+ push_forced_label: ${{ github.event.forced && '☢️ forced' || '' }}
+
+ new_commits_json: ${{ toJSON(github.event.commits) }}
+ compare_url_template: ${{ format('/{0}/compare/{{base}}...{{head}}', github.repository) }}
+
+ github_context_json: ${{ toJSON(github) }}
+ job_env_json: ${{ toJSON(env) }}
+ vars_json: ${{ toJSON(vars) }}
+
+ run: .github/workflows/scripts/docker-ci-summary.sh >> $GITHUB_STEP_SUMMARY
+ continue-on-error: true
+
+ # Docker setup needs fixing before this is going to work: #1843
+ test:
+ runs-on: ubuntu-latest
+ needs: build
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v3
+
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v2
+
+ - id: build
+ name: Build image
+ uses: docker/build-push-action@v3
+ with:
+ build-args: BUILD_TYPE=dev # include pytest
+ tags: ${{ env.IMAGE_NAME }}
+ load: true # save to docker images
+ # cache layers in GitHub Actions cache to speed up builds
+ cache-from: type=gha,scope=docker-dev
+ cache-to: type=gha,scope=docker-dev,mode=max
+
+ - id: test
+ name: Run tests
+ env:
+ CI: true
+ OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
+ run: |
+ set +e
+ test_output=$(
+ docker run --env CI --env OPENAI_API_KEY --entrypoint python ${{ env.IMAGE_NAME }} -m \
+ pytest --cov=autogpt --cov-report term-missing --cov-branch --cov-report xml --cov-report term 2>&1
+ )
+ test_failure=$?
+
+ echo "$test_output"
+
+ cat << $EOF >> $GITHUB_STEP_SUMMARY
+ # Tests $([ $test_failure = 0 ] && echo '✅' || echo '❌')
+ \`\`\`
+ $test_output
+ \`\`\`
+ $EOF
diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml
deleted file mode 100644
index d63ff1f4e765..000000000000
--- a/.github/workflows/docker-image.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-name: Docker Image CI
-
-on:
- push:
- branches: [ "master" ]
- pull_request:
- branches: [ "master" ]
-concurrency:
- group: ${{ format('docker-ci-{0}', github.event.pull_request.number || github.sha) }}
- cancel-in-progress: true
-
-jobs:
-
- build:
-
- runs-on: ubuntu-latest
-
- steps:
- - uses: actions/checkout@v3
- - name: Build the Docker image
- run: docker build . --build-arg BUILD_TYPE=release --tag autogpt:$(date +%s)
diff --git a/.github/workflows/docker-release.yml b/.github/workflows/docker-release.yml
new file mode 100644
index 000000000000..e066641f04fb
--- /dev/null
+++ b/.github/workflows/docker-release.yml
@@ -0,0 +1,81 @@
+name: Docker Release
+
+on:
+ release:
+ types: [ published, edited ]
+
+ workflow_dispatch:
+ inputs:
+ no_cache:
+ type: boolean
+ description: 'Build from scratch, without using cached layers'
+
+env:
+ IMAGE_NAME: auto-gpt
+ DEPLOY_IMAGE_NAME: ${{ secrets.DOCKER_USER }}/auto-gpt
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v3
+
+ - name: Log in to Docker hub
+ uses: docker/login-action@v2
+ with:
+ username: ${{ secrets.DOCKER_USER }}
+ password: ${{ secrets.DOCKER_PASSWORD }}
+
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v2
+
+ # slashes are not allowed in image tags, but can appear in git branch or tag names
+ - id: sanitize_tag
+ name: Sanitize image tag
+ run: echo tag=${raw_tag//\//-} >> $GITHUB_OUTPUT
+ env:
+ raw_tag: ${{ github.ref_name }}
+
+ - id: build
+ name: Build image
+ uses: docker/build-push-action@v3
+ with:
+ build-args: BUILD_TYPE=release
+ load: true # save to docker images
+ # push: true # TODO: uncomment when this issue is fixed: https://github.com/moby/buildkit/issues/1555
+ tags: >
+ ${{ env.IMAGE_NAME }},
+ ${{ env.DEPLOY_IMAGE_NAME }}:latest,
+ ${{ env.DEPLOY_IMAGE_NAME }}:${{ steps.sanitize_tag.outputs.tag }}
+
+ # cache layers in GitHub Actions cache to speed up builds
+ cache-from: ${{ !inputs.no_cache && 'type=gha' || '' }},scope=docker-release
+ cache-to: type=gha,scope=docker-release,mode=max
+
+ - name: Push image to Docker Hub
+ run: docker push --all-tags ${{ env.DEPLOY_IMAGE_NAME }}
+
+ - name: Generate build report
+ env:
+ event_name: ${{ github.event_name }}
+ event_ref: ${{ github.event.ref }}
+ event_ref_type: ${{ github.event.ref}}
+ inputs_no_cache: ${{ inputs.no_cache }}
+
+ prod_branch: stable
+ dev_branch: master
+ repository: ${{ github.repository }}
+ base_branch: ${{ github.ref_name != 'master' && github.ref_name != 'stable' && 'master' || 'stable' }}
+
+ ref_type: ${{ github.ref_type }}
+ current_ref: ${{ github.ref_name }}
+ commit_hash: ${{ github.sha }}
+ source_url: ${{ format('{0}/tree/{1}', github.event.repository.url, github.event.release && github.event.release.tag_name || github.sha) }}
+
+ github_context_json: ${{ toJSON(github) }}
+ job_env_json: ${{ toJSON(env) }}
+ vars_json: ${{ toJSON(vars) }}
+
+ run: .github/workflows/scripts/docker-release-summary.sh >> $GITHUB_STEP_SUMMARY
+ continue-on-error: true
diff --git a/.github/workflows/dockerhub-imagepush.yml b/.github/workflows/dockerhub-imagepush.yml
deleted file mode 100644
index 165f62658daa..000000000000
--- a/.github/workflows/dockerhub-imagepush.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-name: Push Docker Image on Release
-
-on:
- release:
- types: [published,edited]
-
-jobs:
-
- build:
-
- runs-on: ubuntu-latest
-
- steps:
- - uses: actions/checkout@v3
- - name: Log in to Docker hub
- env:
- DOCKER_USER: ${{secrets.DOCKER_USER}}
- DOCKER_PASSWORD: ${{secrets.DOCKER_PASSWORD}}
- run: |
- docker login -u $DOCKER_USER -p $DOCKER_PASSWORD
- - name: Build the Docker image
- run: |
- tag_v=$(git describe --tags $(git rev-list --tags --max-count=1))
- tag=$(echo $tag_v | sed 's/v//')
- docker build . --file Dockerfile --tag ${{secrets.DOCKER_USER}}/auto-gpt:${tag}
- - name: Docker Push
- run: |
- tag_v2=$(git describe --tags $(git rev-list --tags --max-count=1))
- tag2=$(echo $tag_v | sed 's/v//')
- docker push ${{secrets.DOCKER_USER}}/auto-gpt:${tag2}
-
diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation-release.yml
similarity index 65%
rename from .github/workflows/documentation.yml
rename to .github/workflows/documentation-release.yml
index 7a7fd784a630..ef97e1e435ce 100644
--- a/.github/workflows/documentation.yml
+++ b/.github/workflows/documentation-release.yml
@@ -13,17 +13,25 @@ on:
permissions:
contents: write
+
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-python@v4
+ - name: Checkout repository
+ uses: actions/checkout@v3
+
+ - name: Set up Python 3
+ uses: actions/setup-python@v4
with:
python-version: 3.x
- - uses: actions/cache@v2
+
+ - name: Set up workflow cache
+ uses: actions/cache@v3
with:
key: ${{ github.ref }}
path: .cache
- - run: pip install mkdocs-material
+
+ - run: pip install mkdocs-material
+
- run: mkdocs gh-deploy --force
diff --git a/.github/workflows/pr-label.yml b/.github/workflows/pr-label.yml
index f1b200b0b387..d4e9a5e720f0 100644
--- a/.github/workflows/pr-label.yml
+++ b/.github/workflows/pr-label.yml
@@ -1,12 +1,15 @@
name: "Pull Request auto-label"
+
on:
# So that PRs touching the same files as the push are updated
push:
+ branches: [ master ]
# So that the `dirtyLabel` is removed if conflicts are resolve
# We recommend `pull_request_target` so that github secrets are available.
# In `pull_request` we wouldn't be able to change labels of fork PRs
pull_request_target:
- types: [opened, synchronize]
+ types: [ opened, synchronize ]
+
concurrency:
group: ${{ format('pr-label-{0}', github.event.pull_request.number || github.sha) }}
cancel-in-progress: true
@@ -34,15 +37,15 @@ jobs:
pull-requests: write
runs-on: ubuntu-latest
steps:
- - uses: codelytv/pr-size-labeler@v1.7.0
+ - uses: codelytv/pr-size-labeler@v1
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- s_label: "size/s"
- s_max_size: "10"
- m_label: "size/m"
- m_max_size: "50"
- l_label: "size/l"
- l_max_size: "200"
- xl_label: "size/xl"
- fail_if_xl: "false"
- github_api_url: "api.github.com"
+ xs_label: 'size/xs'
+ xs_max_size: 2
+ s_label: 'size/s'
+ s_max_size: 10
+ m_label: 'size/m'
+ m_max_size: 50
+ l_label: 'size/l'
+ l_max_size: 200
+ xl_label: 'size/xl'
diff --git a/.github/workflows/scripts/docker-ci-summary.sh b/.github/workflows/scripts/docker-ci-summary.sh
new file mode 100755
index 000000000000..0a55293f7178
--- /dev/null
+++ b/.github/workflows/scripts/docker-ci-summary.sh
@@ -0,0 +1,98 @@
+#!/bin/bash
+meta=$(docker image inspect "$IMAGE_NAME" | jq '.[0]')
+head_compare_url=$(sed "s/{base}/$base_branch/; s/{head}/$current_ref/" <<< $compare_url_template)
+ref_compare_url=$(sed "s/{base}/$base_branch/; s/{head}/$commit_hash/" <<< $compare_url_template)
+
+EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64)
+
+cat << $EOF
+# Docker Build summary 🔨
+
+**Source:** branch \`$current_ref\` -> [$repository@\`${commit_hash:0:7}\`]($source_url)
+
+**Build type:** \`$build_type\`
+
+**Image size:** $((`jq -r .Size <<< $meta` / 10**6))MB
+
+## Image details
+
+**Tags:**
+$(jq -r '.RepoTags | map("* `\(.)`") | join("\n")' <<< $meta)
+
+
+Layers
+
+| Age | Size | Created by instruction |
+| --------- | ------ | ---------------------- |
+$(docker history --no-trunc --format "{{.CreatedSince}}\t{{.Size}}\t\`{{.CreatedBy}}\`\t{{.Comment}}" $IMAGE_NAME \
+ | grep 'buildkit.dockerfile' `# filter for layers created in this build process`\
+ | cut -f-3 `# yeet Comment column`\
+ | sed 's/ ago//' `# fix Layer age`\
+ | sed 's/ # buildkit//' `# remove buildkit comment from instructions`\
+ | sed 's/\$/\\$/g' `# escape variable and shell expansions`\
+ | sed 's/|/\\|/g' `# escape pipes so they don't interfere with column separators`\
+ | column -t -s$'\t' -o' | ' `# align columns and add separator`\
+ | sed 's/^/| /; s/$/ |/' `# add table row start and end pipes`)
+
+
+
+ENV
+
+| Variable | Value |
+| -------- | -------- |
+$(jq -r \
+ '.Config.Env
+ | map(
+ split("=")
+ | "\(.[0]) | `\(.[1] | gsub("\\s+"; " "))`"
+ )
+ | map("| \(.) |")
+ | .[]' <<< $meta
+)
+
+
+
+Raw metadata
+
+\`\`\`JSON
+$meta
+\`\`\`
+
+
+## Build details
+**Build trigger:** $push_forced_label $event_name \`$event_ref\`
+
+
+github
context
+
+\`\`\`JSON
+$github_context_json
+\`\`\`
+
+
+### Source
+**HEAD:** [$repository@\`${commit_hash:0:7}\`]($source_url) on branch [$current_ref]($ref_compare_url)
+
+**Diff with previous HEAD:** $head_compare_url
+
+#### New commits
+$(jq -r 'map([
+ "**Commit [`\(.id[0:7])`](\(.url)) by \(if .author.username then "@"+.author.username else .author.name end):**",
+ .message,
+ (if .committer.name != .author.name then "\n> **Committer:** \(.committer.name) <\(.committer.email)>" else "" end),
+ "**Timestamp:** \(.timestamp)"
+] | map("> \(.)\n") | join("")) | join("\n")' <<< $new_commits_json)
+
+### Job environment
+
+#### \`vars\` context:
+\`\`\`JSON
+$vars_json
+\`\`\`
+
+#### \`env\` context:
+\`\`\`JSON
+$job_env_json
+\`\`\`
+
+$EOF
diff --git a/.github/workflows/scripts/docker-release-summary.sh b/.github/workflows/scripts/docker-release-summary.sh
new file mode 100755
index 000000000000..1e00f41d4563
--- /dev/null
+++ b/.github/workflows/scripts/docker-release-summary.sh
@@ -0,0 +1,85 @@
+#!/bin/bash
+meta=$(docker image inspect "$IMAGE_NAME" | jq '.[0]')
+
+EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64)
+
+cat << $EOF
+# Docker Release Build summary 🚀🔨
+
+**Source:** $ref_type \`$current_ref\` -> [$repository@\`${commit_hash:0:7}\`]($source_url)
+
+**Image size:** $((`jq -r .Size <<< $meta` / 10**6))MB
+
+## Image details
+
+**Tags:**
+$(jq -r '.RepoTags | map("* `\(.)`") | join("\n")' <<< $meta)
+
+
+Layers
+
+| Age | Size | Created by instruction |
+| --------- | ------ | ---------------------- |
+$(docker history --no-trunc --format "{{.CreatedSince}}\t{{.Size}}\t\`{{.CreatedBy}}\`\t{{.Comment}}" $IMAGE_NAME \
+ | grep 'buildkit.dockerfile' `# filter for layers created in this build process`\
+ | cut -f-3 `# yeet Comment column`\
+ | sed 's/ ago//' `# fix Layer age`\
+ | sed 's/ # buildkit//' `# remove buildkit comment from instructions`\
+ | sed 's/\$/\\$/g' `# escape variable and shell expansions`\
+ | sed 's/|/\\|/g' `# escape pipes so they don't interfere with column separators`\
+ | column -t -s$'\t' -o' | ' `# align columns and add separator`\
+ | sed 's/^/| /; s/$/ |/' `# add table row start and end pipes`)
+
+
+
+ENV
+
+| Variable | Value |
+| -------- | -------- |
+$(jq -r \
+ '.Config.Env
+ | map(
+ split("=")
+ | "\(.[0]) | `\(.[1] | gsub("\\s+"; " "))`"
+ )
+ | map("| \(.) |")
+ | .[]' <<< $meta
+)
+
+
+
+Raw metadata
+
+\`\`\`JSON
+$meta
+\`\`\`
+
+
+## Build details
+**Build trigger:** $event_name \`$current_ref\`
+
+| Parameter | Value |
+| -------------- | ------------ |
+| \`no_cache\` | \`$inputs_no_cache\` |
+
+
+github
context
+
+\`\`\`JSON
+$github_context_json
+\`\`\`
+
+
+### Job environment
+
+#### \`vars\` context:
+\`\`\`JSON
+$vars_json
+\`\`\`
+
+#### \`env\` context:
+\`\`\`JSON
+$job_env_json
+\`\`\`
+
+$EOF
diff --git a/.github/workflows/sponsors_readme.yml b/.github/workflows/sponsors_readme.yml
index fffdbd4dabf9..7e51a4f820b1 100644
--- a/.github/workflows/sponsors_readme.yml
+++ b/.github/workflows/sponsors_readme.yml
@@ -1,14 +1,17 @@
name: Generate Sponsors README
+
on:
workflow_dispatch:
schedule:
- cron: '0 */12 * * *'
+
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout 🛎️
- uses: actions/checkout@v2
+ uses: actions/checkout@v3
+
- name: Generate Sponsors 💖
uses: JamesIves/github-sponsors-readme-action@v1
with:
diff --git a/Dockerfile b/Dockerfile
index 05ec1a429863..6023cefac6ae 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,9 +1,9 @@
-# Use an official Python base image from the Docker Hub
-FROM python:3.10-slim
-
# 'dev' or 'release' container build
ARG BUILD_TYPE=dev
+# Use an official Python base image from the Docker Hub
+FROM python:3.10-slim AS autogpt-base
+
# Install browsers
RUN apt-get update && apt-get install -y \
chromium-driver firefox-esr \
@@ -21,13 +21,20 @@ ENV PIP_NO_CACHE_DIR=yes \
ENV PATH="$PATH:/root/.local/bin"
COPY requirements.txt .
-# Only install dev dependencies in dev container builds
-RUN [ '${BUILD_TYPE}' = 'dev' ] || sed -i '/Items below this point will not be included in the Docker Image/,$d' requirements.txt && \
- pip install --no-cache-dir -r requirements.txt
+# Set the entrypoint
+ENTRYPOINT ["python", "-m", "autogpt"]
-# Copy the application files
+# dev build -> include everything
+FROM autogpt-base as autogpt-dev
+RUN pip install --no-cache-dir -r requirements.txt
WORKDIR /app
-COPY autogpt/ ./autogpt
+ONBUILD COPY . ./
-# Set the entrypoint
-ENTRYPOINT ["python", "-m", "autogpt"]
+# release build -> include bare minimum
+FROM autogpt-base as autogpt-release
+RUN sed -i '/Items below this point will not be included in the Docker Image/,$d' requirements.txt && \
+ pip install --no-cache-dir -r requirements.txt
+WORKDIR /app
+ONBUILD COPY autogpt/ ./autogpt
+
+FROM autogpt-${BUILD_TYPE} AS auto-gpt