Browse Source

Make all workflows consistent formatting and some more comments (#3270)

mamoodi 1 year ago
parent
commit
2915679adc

+ 5 - 3
.github/workflows/clean-up.yml

@@ -1,4 +1,6 @@
+# Workflow that cleans up outdated and old workflows to prevent out of disk issues
 name: Delete old workflow runs
+
 on:
   workflow_dispatch:
     inputs:
@@ -27,11 +29,11 @@ on:
       delete_run_by_conclusion_pattern:
         description: 'Remove runs based on conclusion: action_required, cancelled, failure, skipped, success'
         required: true
-        default: "ALL"
+        default: 'ALL'
         type: choice
         options:
-          - "ALL"
-          - "Unsuccessful: action_required,cancelled,failure,skipped"
+          - 'ALL'
+          - 'Unsuccessful: action_required,cancelled,failure,skipped'
           - action_required
           - cancelled
           - failure

+ 5 - 4
.github/workflows/deploy-docs.yml

@@ -1,3 +1,4 @@
+# Workflow that builds and deploys the documentation website
 name: Deploy Docs to GitHub Pages
 
 on:
@@ -11,6 +12,7 @@ on:
       - main
 
 jobs:
+  # Build the documentation website
   build:
     name: Build Docusaurus
     runs-on: ubuntu-latest
@@ -27,23 +29,23 @@ jobs:
       - name: Set up Python
         uses: actions/setup-python@v5
         with:
-          python-version: "3.11"
-
+          python-version: '3.11'
       - name: Generate Python Docs
         run: rm -rf docs/modules/python && pip install pydoc-markdown && pydoc-markdown
       - name: Install dependencies
         run: cd docs && npm ci
       - name: Build website
         run: cd docs && npm run build
-
       - name: Upload Build Artifact
         if: github.ref == 'refs/heads/main'
         uses: actions/upload-pages-artifact@v3
         with:
           path: docs/build
 
+  # Deploy the documentation website
   deploy:
     name: Deploy to GitHub Pages
+    runs-on: ubuntu-latest
     needs: build
     if: github.ref == 'refs/heads/main' && github.repository == 'OpenDevin/OpenDevin'
     # Grant GITHUB_TOKEN the permissions required to make a Pages deployment
@@ -54,7 +56,6 @@ jobs:
     environment:
       name: github-pages
       url: ${{ steps.deployment.outputs.page_url }}
-    runs-on: ubuntu-latest
     steps:
       - name: Deploy to GitHub Pages
         id: deployment

+ 2 - 1
.github/workflows/dummy-agent-test.yml

@@ -1,3 +1,4 @@
+# Workflow that uses the DummyAgent to run a simple task
 name: Run E2E test with dummy agent
 
 concurrency:
@@ -11,7 +12,7 @@ on:
   pull_request:
 
 env:
-  PERSIST_SANDBOX : "false"
+  PERSIST_SANDBOX : 'false'
 
 jobs:
   test:

+ 32 - 100
.github/workflows/ghcr.yml

@@ -1,3 +1,4 @@
+# Workflow that builds, tests and then pushes the docker images to the ghcr.io repository
 name: Build Publish and Test Runtime Image
 
 concurrency:
@@ -24,25 +25,21 @@ on:
         default: ''
 
 jobs:
+  # Builds the OpenDevin and sandbox Docker images
   ghcr_build:
     runs-on: ubuntu-latest
-
     outputs:
       tags: ${{ steps.capture-tags.outputs.tags }}
-
     permissions:
       contents: read
       packages: write
-
     strategy:
       matrix:
-        image: ["sandbox", "opendevin"]
-        platform: ["amd64", "arm64"]
-
+        image: ['sandbox', 'opendevin']
+        platform: ['amd64', 'arm64']
     steps:
       - name: Checkout
         uses: actions/checkout@v4
-
       - name: Free Disk Space (Ubuntu)
         uses: jlumbroso/free-disk-space@main
         with:
@@ -57,25 +54,20 @@ jobs:
           large-packages: true
           docker-images: false
           swap-storage: true
-
       - name: Set up QEMU
         uses: docker/setup-qemu-action@v3
-
       - name: Set up Docker Buildx
         id: buildx
         uses: docker/setup-buildx-action@v3
-
       - name: Build and export image
         id: build
         run: ./containers/build.sh ${{ matrix.image }} ${{ github.repository_owner }} ${{ matrix.platform }}
-
       - name: Capture tags
         id: capture-tags
         run: |
           tags=$(cat tags.txt)
           echo "tags=$tags"
           echo "tags=$tags" >> $GITHUB_OUTPUT
-
       - name: Upload Docker image as artifact
         uses: actions/upload-artifact@v4
         with:
@@ -83,26 +75,22 @@ jobs:
           path: /tmp/${{ matrix.image }}_image_${{ matrix.platform }}.tar
           retention-days: 14
 
+  # Builds the runtime Docker images
   ghcr_build_runtime:
     runs-on: ubuntu-latest
-
     outputs:
       tags: ${{ steps.capture-tags.outputs.tags }}
-
     permissions:
       contents: read
       packages: write
-
     strategy:
       matrix:
-        image: ["od_runtime"]
-        base_image: ["ubuntu:22.04"]
-        platform: ["amd64", "arm64"]
-
+        image: ['od_runtime']
+        base_image: ['ubuntu:22.04']
+        platform: ['amd64', 'arm64']
     steps:
       - name: Checkout
         uses: actions/checkout@v4
-
       - name: Free Disk Space (Ubuntu)
         uses: jlumbroso/free-disk-space@main
         with:
@@ -117,40 +105,31 @@ jobs:
           large-packages: true
           docker-images: false
           swap-storage: true
-
       - name: Set up QEMU
         uses: docker/setup-qemu-action@v3
-
       - name: Set up Docker Buildx
         id: buildx
         uses: docker/setup-buildx-action@v3
-
       - name: Install poetry via pipx
         run: pipx install poetry
-
       - name: Set up Python
         uses: actions/setup-python@v5
         with:
-          python-version: "3.11"
-          cache: "poetry"
-
+          python-version: '3.11'
+          cache: 'poetry'
       - name: Install Python dependencies using Poetry
         run: make install-python-dependencies
-
       - name: Create source distribution and Dockerfile
         run: poetry run python3 opendevin/runtime/utils/runtime_build.py --base_image ${{ matrix.base_image }} --build_folder containers/runtime
-
       - name: Build and export image
         id: build
         run: ./containers/build.sh ${{ matrix.image }} ${{ github.repository_owner }} ${{ matrix.platform }}
-
       - name: Capture tags
         id: capture-tags
         run: |
           tags=$(cat tags.txt)
           echo "tags=$tags"
           echo "tags=$tags" >> $GITHUB_OUTPUT
-
       - name: Upload Docker image as artifact
         uses: actions/upload-artifact@v4
         with:
@@ -158,27 +137,24 @@ jobs:
           path: /tmp/${{ matrix.image }}_image_${{ matrix.platform }}.tar
           retention-days: 14
 
+  # Run unit tests with the EventStream and Server runtime Docker images
   test_runtime:
     name: Test Runtime
     runs-on: ubuntu-latest
     needs: [ghcr_build_runtime, ghcr_build]
     env:
-      PERSIST_SANDBOX: "false"
-
+      PERSIST_SANDBOX: 'false'
     strategy:
       matrix:
-        runtime_type: ["eventstream", "server"]
-
+        runtime_type: ['eventstream', 'server']
     steps:
       - uses: actions/checkout@v4
-
       - name: Free Disk Space (Ubuntu)
         uses: jlumbroso/free-disk-space@main
         with:
           # this might remove tools that are actually needed,
           # when set to "true" but frees about 6 GB
           tool-cache: true
-
           # all of these default to true, but feel free to set to
           # "false" if necessary for your workflow
           android: true
@@ -186,33 +162,27 @@ jobs:
           haskell: true
           large-packages: true
           swap-storage: true
-
       - name: Install poetry via pipx
         run: pipx install poetry
-
       - name: Set up Python
         uses: actions/setup-python@v5
         with:
-          python-version: "3.11"
-          cache: "poetry"
-
+          python-version: '3.11'
+          cache: 'poetry'
       - name: Install Python dependencies using Poetry
         run: make install-python-dependencies
-
       - name: Download Runtime Docker image
         if: matrix.runtime_type == 'eventstream'
         uses: actions/download-artifact@v4
         with:
           name: od_runtime-docker-image-amd64
           path: /tmp/
-
       - name: Download Sandbox Docker image
         if: matrix.runtime_type == 'server'
         uses: actions/download-artifact@v4
         with:
           name: sandbox-docker-image-amd64
           path: /tmp/
-
       - name: Load Runtime image and run runtime tests
         run: |
           # Load the Docker image and capture the output
@@ -229,12 +199,12 @@ jobs:
           echo "Loaded Docker image: $image_name"
 
           TEST_RUNTIME=${{ matrix.runtime_type }} SANDBOX_USER_ID=$(id -u) SANDBOX_CONTAINER_IMAGE=$image_name TEST_IN_CI=true poetry run pytest --cov=agenthub --cov=opendevin --cov-report=xml -s ./tests/unit/test_runtime.py
-
       - name: Upload coverage to Codecov
         uses: codecov/codecov-action@v4
         env:
           CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
 
+  # Run integration tests with the sandbox Docker images
   integration_tests_on_linux:
     name: Integration Tests on Linux
     runs-on: ubuntu-latest
@@ -244,29 +214,24 @@ jobs:
     strategy:
       fail-fast: false
       matrix:
-        python-version: ["3.11"]
-        sandbox: ["ssh", "local"]
+        python-version: ['3.11']
+        sandbox: ['ssh', 'local']
     steps:
       - uses: actions/checkout@v4
-
       - name: Install poetry via pipx
         run: pipx install poetry
-
       - name: Set up Python
         uses: actions/setup-python@v5
         with:
           python-version: ${{ matrix.python-version }}
           cache: 'poetry'
-
       - name: Install Python dependencies using Poetry
         run: make install-python-dependencies
-
       - name: Download sandbox Docker image
         uses: actions/download-artifact@v4
         with:
           name: sandbox-docker-image-amd64
           path: /tmp/
-
       - name: Load sandbox image and run integration tests
         env:
           SANDBOX_BOX_TYPE: ${{ matrix.sandbox }}
@@ -281,46 +246,40 @@ jobs:
           echo "Loaded Docker image: $image_name"
 
           SANDBOX_CONTAINER_IMAGE=$image_name TEST_IN_CI=true TEST_ONLY=true TEST_RUNTIME=server ./tests/integration/regenerate.sh
-
       - name: Upload coverage to Codecov
         uses: codecov/codecov-action@v4
         env:
           CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
 
+  # Run integration tests with the eventstream runtime Docker image
   runtime_integration_tests_on_linux:
     name: Runtime Integration Tests on Linux
     runs-on: ubuntu-latest
     needs: [ghcr_build_runtime]
     env:
-      PERSIST_SANDBOX: "false"
+      PERSIST_SANDBOX: 'false'
     strategy:
       fail-fast: false
       matrix:
-        python-version: ["3.11"]
+        python-version: ['3.11']
         # server is tested in a separate workflow
-        runtime_type: ["eventstream"]
+        runtime_type: ['eventstream']
     steps:
       - uses: actions/checkout@v4
-
       - name: Install poetry via pipx
         run: pipx install poetry
-
       - name: Set up Python
         uses: actions/setup-python@v5
         with:
           python-version: ${{ matrix.python-version }}
           cache: 'poetry'
-
       - name: Install Python dependencies using Poetry
         run: make install-python-dependencies
-
       - name: Download Runtime Docker image
         uses: actions/download-artifact@v4
         with:
           name: od_runtime-docker-image-amd64
           path: /tmp/
-
-
       - name: Load runtime image and run integration tests
         run: |
           # Load the Docker image and capture the output
@@ -338,47 +297,39 @@ jobs:
           echo "Loaded Docker image: $image_name"
 
           TEST_RUNTIME=${{ matrix.runtime_type }} SANDBOX_USER_ID=$(id -u) SANDBOX_CONTAINER_IMAGE=$image_name TEST_IN_CI=true TEST_ONLY=true ./tests/integration/regenerate.sh
-
       - name: Upload coverage to Codecov
         uses: codecov/codecov-action@v4
         env:
           CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
 
+  # Push the OpenDevin and sandbox Docker images to the ghcr.io repository
   ghcr_push:
     runs-on: ubuntu-latest
-    # don't push if integration tests or sandbox tests fail
     needs: [ghcr_build, test_runtime, integration_tests_on_linux]
     if: github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/')
-
     env:
       tags: ${{ needs.ghcr_build.outputs.tags }}
-
     permissions:
       contents: read
       packages: write
-
     strategy:
       matrix:
-        image: ["sandbox", "opendevin"]
-        platform: ["amd64", "arm64"]
-
+        image: ['sandbox', 'opendevin']
+        platform: ['amd64', 'arm64']
     steps:
       - name: Checkout code
         uses: actions/checkout@v4
-
       - name: Login to GHCR
         uses: docker/login-action@v2
         with:
           registry: ghcr.io
           username: ${{ github.repository_owner }}
           password: ${{ secrets.GITHUB_TOKEN }}
-
       - name: Download Docker images
         uses: actions/download-artifact@v4
         with:
           name: ${{ matrix.image }}-docker-image-${{ matrix.platform }}
           path: /tmp/${{ matrix.platform }}
-
       - name: Load images and push to registry
         run: |
           mv /tmp/${{ matrix.platform }}/${{ matrix.image }}_image_${{ matrix.platform }}.tar .
@@ -393,28 +344,23 @@ jobs:
             docker push $image_name:${tag}_${{ matrix.platform }}
           done
 
+  # Push the runtime Docker images to the ghcr.io repository
   ghcr_push_runtime:
     runs-on: ubuntu-latest
-    # don't push if runtime tests fail
     needs: [ghcr_build_runtime, test_runtime, integration_tests_on_linux]
     if: github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/')
-
     env:
       tags: ${{ needs.ghcr_build_runtime.outputs.tags }}
-
     permissions:
       contents: read
       packages: write
-
     strategy:
       matrix:
-        image: ["od_runtime"]
-        platform: ["amd64", "arm64"]
-
+        image: ['od_runtime']
+        platform: ['amd64', 'arm64']
     steps:
       - name: Checkout code
         uses: actions/checkout@v4
-
       - name: Free Disk Space (Ubuntu)
         uses: jlumbroso/free-disk-space@main
         with:
@@ -425,25 +371,21 @@ jobs:
           large-packages: true
           docker-images: false
           swap-storage: true
-
       - name: Login to GHCR
         uses: docker/login-action@v2
         with:
           registry: ghcr.io
           username: ${{ github.repository_owner }}
           password: ${{ secrets.GITHUB_TOKEN }}
-
       - name: Download Docker images
         uses: actions/download-artifact@v4
         with:
           name: ${{ matrix.image }}-docker-image-${{ matrix.platform }}
           path: /tmp/${{ matrix.platform }}
-
       - name: List downloaded files
         run: |
           ls -la /tmp/${{ matrix.platform }}
           file /tmp/${{ matrix.platform }}/*
-
       - name: Load images and push to registry
         run: |
           mv /tmp/${{ matrix.platform }}/${{ matrix.image }}_image_${{ matrix.platform }}.tar ./${{ matrix.image }}_image_${{ matrix.platform }}.tar
@@ -465,33 +407,28 @@ jobs:
             fi
           done
 
+  # Creates and pushes the OpenDevin and sandbox Docker image manifests
   create_manifest:
     runs-on: ubuntu-latest
     needs: [ghcr_build, ghcr_push]
     if: github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/')
-
     env:
       tags: ${{ needs.ghcr_build.outputs.tags }}
-
     strategy:
       matrix:
-        image: ["sandbox", "opendevin"]
-
+        image: ['sandbox', 'opendevin']
     permissions:
       contents: read
       packages: write
-
     steps:
       - name: Checkout code
         uses: actions/checkout@v4
-
       - name: Login to GHCR
         uses: docker/login-action@v2
         with:
           registry: ghcr.io
           username: ${{ github.repository_owner }}
           password: ${{ secrets.GITHUB_TOKEN }}
-
       - name: Create and push multi-platform manifest
         run: |
           image_name=$(echo "ghcr.io/${{ github.repository_owner }}/${{ matrix.image }}" | tr '[:upper:]' '[:lower:]')
@@ -504,33 +441,28 @@ jobs:
               $image_name:${tag}_arm64
           done
 
+  # Creates and pushes the runtime Docker image manifest
   create_manifest_runtime:
     runs-on: ubuntu-latest
     needs: [ghcr_build_runtime, ghcr_push_runtime]
     if: github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/')
-
     env:
       tags: ${{ needs.ghcr_build_runtime.outputs.tags }}
-
     strategy:
       matrix:
-        image: ["od_runtime"]
-
+        image: ['od_runtime']
     permissions:
       contents: read
       packages: write
-
     steps:
       - name: Checkout code
         uses: actions/checkout@v4
-
       - name: Login to GHCR
         uses: docker/login-action@v2
         with:
           registry: ghcr.io
           username: ${{ github.repository_owner }}
           password: ${{ secrets.GITHUB_TOKEN }}
-
       - name: Create and push multi-platform manifest
         run: |
           image_name=$(echo "ghcr.io/${{ github.repository_owner }}/${{ matrix.image }}" | tr '[:upper:]' '[:lower:]')

+ 3 - 3
.github/workflows/lint.yml

@@ -1,3 +1,4 @@
+# Workflow that runs lint on the frontend and python code
 name: Lint
 
 concurrency:
@@ -11,27 +12,26 @@ on:
   pull_request:
 
 jobs:
+  # Run lint on the frontend code
   lint-frontend:
     name: Lint frontend
     runs-on: ubuntu-latest
     steps:
       - uses: actions/checkout@v4
-
       - name: Install Node.js 20
         uses: actions/setup-node@v4
         with:
           node-version: 20
-
       - name: Install dependencies
         run: |
           cd frontend
           npm install --frozen-lockfile
-
       - name: Lint
         run: |
           cd frontend
           npm run lint
 
+  # Run lint on the python code
   lint-python:
     name: Lint python
     runs-on: ubuntu-latest

+ 1 - 7
.github/workflows/review-pr.yml

@@ -1,3 +1,4 @@
+# Workflow that uses OpenDevin to review a pull request. PR must be labeled 'review-this'
 name: Use OpenDevin to Review Pull Request
 
 on:
@@ -22,16 +23,13 @@ jobs:
       run: |
         sudo apt-get install -y git gh
         git config --global --add safe.directory $PWD
-
     - name: Checkout Repository
       uses: actions/checkout@v4
       with:
         ref: ${{ github.event.pull_request.base.ref }} # check out the target branch
-
     - name: Download Diff
       run: |
         curl -O "${{ github.event.pull_request.diff_url }}" -L
-
     - name: Write Task File
       run: |
         echo "Your coworker wants to apply a pull request to this project." > task.txt
@@ -45,14 +43,12 @@ jobs:
         echo "${{ github.event.pull_request.body }}" >> task.txt
         echo "" >> task.txt
         echo "Diff file is: ${{ github.event.pull_request.number }}.diff" >> task.txt
-
     - name: Set up environment
       run: |
         curl -sSL https://install.python-poetry.org | python3 -
         export PATH="/github/home/.local/bin:$PATH"
         poetry install --without evaluation,llama-index
         poetry run playwright install --with-deps chromium
-
     - name: Run OpenDevin
       env:
         LLM_API_KEY: ${{ secrets.LLM_API_KEY }}
@@ -67,7 +63,6 @@ jobs:
         export WORKSPACE_BASE=$GITHUB_WORKSPACE
         echo -e "/exit\n" | poetry run python opendevin/core/main.py -i 50 -f task.txt
         rm task.txt
-
     - name: Check if review file is non-empty
       id: check_file
       run: |
@@ -76,7 +71,6 @@ jobs:
           echo "non_empty=true" >> $GITHUB_OUTPUT
         fi
       shell: bash
-
     - name: Create PR review if file is non-empty
       env:
         GH_TOKEN: ${{ github.token }}

+ 11 - 27
.github/workflows/run-unit-tests.yml

@@ -1,3 +1,4 @@
+# Workflow that runs frontend and python unit tests
 name: Run Unit Tests
 
 concurrency:
@@ -19,59 +20,50 @@ env:
   PERSIST_SANDBOX : "false"
 
 jobs:
+  # Run frontend unit tests
   fe-test:
     runs-on: ubuntu-latest
-
     strategy:
       matrix:
         node-version: [20]
-
     steps:
       - name: Checkout
         uses: actions/checkout@v4
-
       - name: Set up Node.js
         uses: actions/setup-node@v4
         with:
           node-version: ${{ matrix.node-version }}
-
       - name: Install dependencies
         working-directory: ./frontend
         run: npm ci
-
       - name: Run tests and collect coverage
         working-directory: ./frontend
         run: npm run test:coverage
-
       - name: Upload coverage to Codecov
         uses: codecov/codecov-action@v4
         env:
           CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
 
+  # Run python unit tests on macOS
   test-on-macos:
     name: Test on macOS
     runs-on: macos-12
     env:
-      INSTALL_DOCKER: "1" # Set to '0' to skip Docker installation
+      INSTALL_DOCKER: '1' # Set to '0' to skip Docker installation
     strategy:
       matrix:
-        python-version: ["3.11"]
-
+        python-version: ['3.11']
     steps:
       - uses: actions/checkout@v4
-
       - name: Install poetry via pipx
         run: pipx install poetry
-
       - name: Set up Python ${{ matrix.python-version }}
         uses: actions/setup-python@v5
         with:
           python-version: ${{ matrix.python-version }}
-          cache: "poetry"
-
+          cache: 'poetry'
       - name: Install Python dependencies using Poetry
         run: poetry install --without evaluation,llama-index
-
       - name: Install & Start Docker
         if: env.INSTALL_DOCKER == '1'
         run: |
@@ -120,47 +112,39 @@ jobs:
           # For testcontainers to find the Colima socket
           # https://github.com/abiosoft/colima/blob/main/docs/FAQ.md#cannot-connect-to-the-docker-daemon-at-unixvarrundockersock-is-the-docker-daemon-running
           sudo ln -sf $HOME/.colima/default/docker.sock /var/run/docker.sock
-
       - name: Build Environment
         run: make build
-
       - name: Run Tests
         run: poetry run pytest --forked --cov=agenthub --cov=opendevin --cov-report=xml ./tests/unit -k "not test_sandbox.py and not test_runtime.py"
-
       - name: Upload coverage to Codecov
         uses: codecov/codecov-action@v4
         env:
           CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
+
+  # Run python unit tests on Linux
   test-on-linux:
     name: Test on Linux
     runs-on: ubuntu-latest
     env:
-      INSTALL_DOCKER: "0" # Set to '0' to skip Docker installation
+      INSTALL_DOCKER: '0' # Set to '0' to skip Docker installation
     strategy:
       matrix:
-        python-version: ["3.11"]
-
+        python-version: ['3.11']
     steps:
       - uses: actions/checkout@v4
-
       - name: Install poetry via pipx
         run: pipx install poetry
-
       - name: Set up Python
         uses: actions/setup-python@v5
         with:
           python-version: ${{ matrix.python-version }}
-          cache: "poetry"
-
+          cache: 'poetry'
       - name: Install Python dependencies using Poetry
         run: poetry install --without evaluation,llama-index
-
       - name: Build Environment
         run: make build
-
       - name: Run Tests
         run: poetry run pytest --forked --cov=agenthub --cov=opendevin --cov-report=xml ./tests/unit -k "not test_sandbox.py and not test_runtime.py"
-
       - name: Upload coverage to Codecov
         uses: codecov/codecov-action@v4
         env:

+ 1 - 9
.github/workflows/solve-issue.yml

@@ -1,3 +1,4 @@
+# Workflow that uses OpenDevin to resolve a GitHub issue. Issue must be labeled 'solve-this'
 name: Use OpenDevin to Resolve GitHub Issue
 
 on:
@@ -17,14 +18,11 @@ jobs:
       image: ghcr.io/opendevin/opendevin
       volumes:
         - /var/run/docker.sock:/var/run/docker.sock
-
     steps:
     - name: install git, github cli
       run: apt-get install -y git gh
-
     - name: Checkout Repository
       uses: actions/checkout@v4
-
     - name: Write Task File
       env:
         ISSUE_TITLE: ${{ github.event.issue.title }}
@@ -35,15 +33,12 @@ jobs:
         echo "" >> task.txt
         echo "BODY:" >> task.txt
         echo "${ISSUE_BODY}" >> task.txt
-
     - name: Set up environment
       run: |
         curl -sSL https://install.python-poetry.org | python3 -
         export PATH="/github/home/.local/bin:$PATH"
         poetry install --without evaluation,llama-index
         poetry run playwright install --with-deps chromium
-
-
     - name: Run OpenDevin
       env:
         ISSUE_TITLE: ${{ github.event.issue.title }}
@@ -58,7 +53,6 @@ jobs:
         export PYTHONPATH=$(pwd):$PYTHONPATH
         WORKSPACE_MOUNT_PATH=$GITHUB_WORKSPACE poetry run python ./opendevin/core/main.py -i 50 -f task.txt -d $GITHUB_WORKSPACE
         rm task.txt
-
     - name: Setup Git, Create Branch, and Commit Changes
       run: |
         # Setup Git configuration
@@ -84,7 +78,6 @@ jobs:
 
         # Push changes
         git push --set-upstream origin $BRANCH_NAME
-
     - name: Fetch Default Branch
       env:
         GH_TOKEN: ${{ github.token }}
@@ -93,7 +86,6 @@ jobs:
         DEFAULT_BRANCH=$(gh repo view --json defaultBranchRef --jq .defaultBranchRef.name)
         echo "Default branch is $DEFAULT_BRANCH"
         echo "DEFAULT_BRANCH=$DEFAULT_BRANCH" >> $GITHUB_ENV
-
     - name: Generate PR
       env:
         GH_TOKEN: ${{ github.token }}