mirror of
https://github.com/aljazceru/Auto-GPT.git
synced 2025-12-19 06:54:22 +01:00
Clean up GitHub Workflows (#3059)
* initial cleanup of github workflows * only run pr-label workflow on push to master * move docker ci/release summaries to scripts * add XS label for PR's under 2 lines * draft test job for Docker CI * fix & activate Docker CI test job * add debug step to docker CI * fix Docker CI test container env * Docker CI build matrix * fixup build summaries * fix pipes in summary * optimize Dockerfile for layer caching * more markdown escaping * add gha cache scopes * add Docker CI cache clean workflow
This commit is contained in:
committed by
GitHub
parent
3886afc825
commit
ffdc652605
23
.github/workflows/auto_format.yml
vendored
23
.github/workflows/auto_format.yml
vendored
@@ -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
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
name: benchmark
|
name: Run Benchmarks
|
||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
@@ -6,26 +6,26 @@ on:
|
|||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
environment: benchmark
|
|
||||||
strategy:
|
env:
|
||||||
matrix:
|
python-version: '3.10'
|
||||||
python-version: ['3.10', '3.11']
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Check out repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
- name: Set up Python ${{ matrix.python-version }}
|
- name: Set up Python ${{ env.python-version }}
|
||||||
uses: actions/setup-python@v2
|
uses: actions/setup-python@v4
|
||||||
with:
|
with:
|
||||||
python-version: ${{ matrix.python-version }}
|
python-version: ${{ env.python-version }}
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
python -m pip install --upgrade pip
|
python -m pip install --upgrade pip
|
||||||
pip install -r requirements.txt
|
pip install -r requirements.txt
|
||||||
|
|
||||||
- name: benchmark
|
- name: benchmark
|
||||||
run: |
|
|
||||||
python benchmark/benchmark_entrepreneur_gpt_with_undecisive_user.py
|
|
||||||
env:
|
env:
|
||||||
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
||||||
|
run: |
|
||||||
|
python benchmark/benchmark_entrepreneur_gpt_with_undecisive_user.py
|
||||||
9
.github/workflows/ci.yml
vendored
9
.github/workflows/ci.yml
vendored
@@ -2,12 +2,12 @@ name: Python CI
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches: [master]
|
branches: [ master ]
|
||||||
pull_request:
|
pull_request:
|
||||||
branches: [master]
|
branches: [ master ]
|
||||||
|
|
||||||
concurrency:
|
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' }}
|
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
@@ -17,7 +17,7 @@ jobs:
|
|||||||
min-python-version: "3.10"
|
min-python-version: "3.10"
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Check out repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
- name: Set up Python ${{ env.min-python-version }}
|
- 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
|
pytest --cov=autogpt --cov-report term-missing --cov-branch --cov-report xml --cov-report term
|
||||||
env:
|
env:
|
||||||
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
||||||
|
|
||||||
- name: Generate coverage report
|
- name: Generate coverage report
|
||||||
run: |
|
run: |
|
||||||
coverage report
|
coverage report
|
||||||
|
|||||||
58
.github/workflows/docker-cache-clean.yml
vendored
Normal file
58
.github/workflows/docker-cache-clean.yml
vendored
Normal file
@@ -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
|
||||||
115
.github/workflows/docker-ci.yml
vendored
Normal file
115
.github/workflows/docker-ci.yml
vendored
Normal file
@@ -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
|
||||||
21
.github/workflows/docker-image.yml
vendored
21
.github/workflows/docker-image.yml
vendored
@@ -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)
|
|
||||||
81
.github/workflows/docker-release.yml
vendored
Normal file
81
.github/workflows/docker-release.yml
vendored
Normal file
@@ -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
|
||||||
31
.github/workflows/dockerhub-imagepush.yml
vendored
31
.github/workflows/dockerhub-imagepush.yml
vendored
@@ -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}
|
|
||||||
|
|
||||||
@@ -13,17 +13,25 @@ on:
|
|||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: write
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
deploy:
|
deploy:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- name: Checkout repository
|
||||||
- uses: actions/setup-python@v4
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Set up Python 3
|
||||||
|
uses: actions/setup-python@v4
|
||||||
with:
|
with:
|
||||||
python-version: 3.x
|
python-version: 3.x
|
||||||
- uses: actions/cache@v2
|
|
||||||
|
- name: Set up workflow cache
|
||||||
|
uses: actions/cache@v3
|
||||||
with:
|
with:
|
||||||
key: ${{ github.ref }}
|
key: ${{ github.ref }}
|
||||||
path: .cache
|
path: .cache
|
||||||
|
|
||||||
- run: pip install mkdocs-material
|
- run: pip install mkdocs-material
|
||||||
|
|
||||||
- run: mkdocs gh-deploy --force
|
- run: mkdocs gh-deploy --force
|
||||||
25
.github/workflows/pr-label.yml
vendored
25
.github/workflows/pr-label.yml
vendored
@@ -1,12 +1,15 @@
|
|||||||
name: "Pull Request auto-label"
|
name: "Pull Request auto-label"
|
||||||
|
|
||||||
on:
|
on:
|
||||||
# So that PRs touching the same files as the push are updated
|
# So that PRs touching the same files as the push are updated
|
||||||
push:
|
push:
|
||||||
|
branches: [ master ]
|
||||||
# So that the `dirtyLabel` is removed if conflicts are resolve
|
# So that the `dirtyLabel` is removed if conflicts are resolve
|
||||||
# We recommend `pull_request_target` so that github secrets are available.
|
# 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
|
# In `pull_request` we wouldn't be able to change labels of fork PRs
|
||||||
pull_request_target:
|
pull_request_target:
|
||||||
types: [opened, synchronize]
|
types: [ opened, synchronize ]
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ format('pr-label-{0}', github.event.pull_request.number || github.sha) }}
|
group: ${{ format('pr-label-{0}', github.event.pull_request.number || github.sha) }}
|
||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
@@ -34,15 +37,15 @@ jobs:
|
|||||||
pull-requests: write
|
pull-requests: write
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: codelytv/pr-size-labeler@v1.7.0
|
- uses: codelytv/pr-size-labeler@v1
|
||||||
with:
|
with:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
s_label: "size/s"
|
xs_label: 'size/xs'
|
||||||
s_max_size: "10"
|
xs_max_size: 2
|
||||||
m_label: "size/m"
|
s_label: 'size/s'
|
||||||
m_max_size: "50"
|
s_max_size: 10
|
||||||
l_label: "size/l"
|
m_label: 'size/m'
|
||||||
l_max_size: "200"
|
m_max_size: 50
|
||||||
xl_label: "size/xl"
|
l_label: 'size/l'
|
||||||
fail_if_xl: "false"
|
l_max_size: 200
|
||||||
github_api_url: "api.github.com"
|
xl_label: 'size/xl'
|
||||||
|
|||||||
98
.github/workflows/scripts/docker-ci-summary.sh
vendored
Executable file
98
.github/workflows/scripts/docker-ci-summary.sh
vendored
Executable file
@@ -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)
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><h3>Layers</h3></summary>
|
||||||
|
|
||||||
|
| 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`)
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><h3>ENV</h3></summary>
|
||||||
|
|
||||||
|
| Variable | Value |
|
||||||
|
| -------- | -------- |
|
||||||
|
$(jq -r \
|
||||||
|
'.Config.Env
|
||||||
|
| map(
|
||||||
|
split("=")
|
||||||
|
| "\(.[0]) | `\(.[1] | gsub("\\s+"; " "))`"
|
||||||
|
)
|
||||||
|
| map("| \(.) |")
|
||||||
|
| .[]' <<< $meta
|
||||||
|
)
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Raw metadata</summary>
|
||||||
|
|
||||||
|
\`\`\`JSON
|
||||||
|
$meta
|
||||||
|
\`\`\`
|
||||||
|
</details>
|
||||||
|
|
||||||
|
## Build details
|
||||||
|
**Build trigger:** $push_forced_label $event_name \`$event_ref\`
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><code>github</code> context</summary>
|
||||||
|
|
||||||
|
\`\`\`JSON
|
||||||
|
$github_context_json
|
||||||
|
\`\`\`
|
||||||
|
</details>
|
||||||
|
|
||||||
|
### 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> <sub>**Committer:** \(.committer.name) <\(.committer.email)></sub>" else "" end),
|
||||||
|
"<sub>**Timestamp:** \(.timestamp)</sub>"
|
||||||
|
] | map("> \(.)\n") | join("")) | join("\n")' <<< $new_commits_json)
|
||||||
|
|
||||||
|
### Job environment
|
||||||
|
|
||||||
|
#### \`vars\` context:
|
||||||
|
\`\`\`JSON
|
||||||
|
$vars_json
|
||||||
|
\`\`\`
|
||||||
|
|
||||||
|
#### \`env\` context:
|
||||||
|
\`\`\`JSON
|
||||||
|
$job_env_json
|
||||||
|
\`\`\`
|
||||||
|
|
||||||
|
$EOF
|
||||||
85
.github/workflows/scripts/docker-release-summary.sh
vendored
Executable file
85
.github/workflows/scripts/docker-release-summary.sh
vendored
Executable file
@@ -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)
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><h3>Layers</h3></summary>
|
||||||
|
|
||||||
|
| 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`)
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><h3>ENV</h3></summary>
|
||||||
|
|
||||||
|
| Variable | Value |
|
||||||
|
| -------- | -------- |
|
||||||
|
$(jq -r \
|
||||||
|
'.Config.Env
|
||||||
|
| map(
|
||||||
|
split("=")
|
||||||
|
| "\(.[0]) | `\(.[1] | gsub("\\s+"; " "))`"
|
||||||
|
)
|
||||||
|
| map("| \(.) |")
|
||||||
|
| .[]' <<< $meta
|
||||||
|
)
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Raw metadata</summary>
|
||||||
|
|
||||||
|
\`\`\`JSON
|
||||||
|
$meta
|
||||||
|
\`\`\`
|
||||||
|
</details>
|
||||||
|
|
||||||
|
## Build details
|
||||||
|
**Build trigger:** $event_name \`$current_ref\`
|
||||||
|
|
||||||
|
| Parameter | Value |
|
||||||
|
| -------------- | ------------ |
|
||||||
|
| \`no_cache\` | \`$inputs_no_cache\` |
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><code>github</code> context</summary>
|
||||||
|
|
||||||
|
\`\`\`JSON
|
||||||
|
$github_context_json
|
||||||
|
\`\`\`
|
||||||
|
</details>
|
||||||
|
|
||||||
|
### Job environment
|
||||||
|
|
||||||
|
#### \`vars\` context:
|
||||||
|
\`\`\`JSON
|
||||||
|
$vars_json
|
||||||
|
\`\`\`
|
||||||
|
|
||||||
|
#### \`env\` context:
|
||||||
|
\`\`\`JSON
|
||||||
|
$job_env_json
|
||||||
|
\`\`\`
|
||||||
|
|
||||||
|
$EOF
|
||||||
5
.github/workflows/sponsors_readme.yml
vendored
5
.github/workflows/sponsors_readme.yml
vendored
@@ -1,14 +1,17 @@
|
|||||||
name: Generate Sponsors README
|
name: Generate Sponsors README
|
||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
schedule:
|
schedule:
|
||||||
- cron: '0 */12 * * *'
|
- cron: '0 */12 * * *'
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
deploy:
|
deploy:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout 🛎️
|
- name: Checkout 🛎️
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
- name: Generate Sponsors 💖
|
- name: Generate Sponsors 💖
|
||||||
uses: JamesIves/github-sponsors-readme-action@v1
|
uses: JamesIves/github-sponsors-readme-action@v1
|
||||||
with:
|
with:
|
||||||
|
|||||||
29
Dockerfile
29
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
|
# 'dev' or 'release' container build
|
||||||
ARG BUILD_TYPE=dev
|
ARG BUILD_TYPE=dev
|
||||||
|
|
||||||
|
# Use an official Python base image from the Docker Hub
|
||||||
|
FROM python:3.10-slim AS autogpt-base
|
||||||
|
|
||||||
# Install browsers
|
# Install browsers
|
||||||
RUN apt-get update && apt-get install -y \
|
RUN apt-get update && apt-get install -y \
|
||||||
chromium-driver firefox-esr \
|
chromium-driver firefox-esr \
|
||||||
@@ -21,13 +21,20 @@ ENV PIP_NO_CACHE_DIR=yes \
|
|||||||
ENV PATH="$PATH:/root/.local/bin"
|
ENV PATH="$PATH:/root/.local/bin"
|
||||||
COPY requirements.txt .
|
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
|
|
||||||
|
|
||||||
# Copy the application files
|
|
||||||
WORKDIR /app
|
|
||||||
COPY autogpt/ ./autogpt
|
|
||||||
|
|
||||||
# Set the entrypoint
|
# Set the entrypoint
|
||||||
ENTRYPOINT ["python", "-m", "autogpt"]
|
ENTRYPOINT ["python", "-m", "autogpt"]
|
||||||
|
|
||||||
|
# dev build -> include everything
|
||||||
|
FROM autogpt-base as autogpt-dev
|
||||||
|
RUN pip install --no-cache-dir -r requirements.txt
|
||||||
|
WORKDIR /app
|
||||||
|
ONBUILD COPY . ./
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|||||||
Reference in New Issue
Block a user