name: Auto-GPT Docker CI on: push: branches: [ master ] paths: - 'autogpts/autogpt/**' - '!autogpts/autogpt/tests/vcr_cassettes' - '!autogpts/autogpt/tests/challenges/current_score.json' pull_request: branches: [ master, release-*, stable ] paths: - 'autogpts/autogpt/**' - '!autogpts/autogpt/tests/vcr_cassettes' - '!autogpts/autogpt/tests/challenges/current_score.json' concurrency: group: ${{ format('autogpt-docker-ci-{0}', github.head_ref && format('pr-{0}', github.event.pull_request.number) || github.sha) }} cancel-in-progress: ${{ github.event_name == 'pull_request' }} defaults: run: working-directory: autogpts/autogpt 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: context: autogpts/autogpt 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=autogpt-docker-${{ matrix.build-type }} cache-to: type=gha,scope=autogpt-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 working-directory: ./ continue-on-error: true test: runs-on: ubuntu-latest timeout-minutes: 10 steps: - name: Check out repository uses: actions/checkout@v3 with: submodules: true - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - id: build name: Build image uses: docker/build-push-action@v3 with: context: autogpts/autogpt 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=autogpt-docker-dev cache-to: type=gha,scope=autogpt-docker-dev,mode=max - id: test name: Run tests env: CI: true PLAIN_OUTPUT: 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 -v --cov=autogpt --cov-branch --cov-report term-missing \ --numprocesses=4 --durations=10 \ tests/unit tests/integration 2>&1 ) test_failure=$? echo "$test_output" cat << $EOF >> $GITHUB_STEP_SUMMARY # Tests $([ $test_failure = 0 ] && echo '✅' || echo '❌') \`\`\` $test_output \`\`\` $EOF exit $test_failure