name: Hackathon on: workflow_dispatch: branches: [hackathon] inputs: agents: description: "Agents to run (comma-separated)" required: false default: "ZEROAGPT_03" # Default agents if none are specified jobs: matrix-setup: runs-on: ubuntu-latest outputs: matrix: ${{ steps.set-matrix.outputs.matrix }} env-name: ${{ steps.set-matrix.outputs.env-name }} steps: - id: set-matrix run: | if [ "${{ github.event_name }}" == "schedule" ]; then echo "::set-output name=env-name::production" echo "::set-output name=matrix::[ 'ZEROAGPT_03', 'evo-ninja', 'gpt-engineer']" elif [ "${{ github.event_name }}" == "workflow_dispatch" ]; then IFS=',' read -ra matrix_array <<< "${{ github.event.inputs.agents }}" matrix_string="[ \"$(echo "${matrix_array[@]}" | sed 's/ /", "/g')\" ]" echo "::set-output name=env-name::production" echo "::set-output name=matrix::$matrix_string" else echo "::set-output name=env-name::testing" echo "::set-output name=matrix::[ 'mini-agi' ]" fi tests: environment: name: "${{ needs.matrix-setup.outputs.env-name }}" needs: matrix-setup env: min-python-version: "3.10" name: "${{ matrix.agent-name }}" runs-on: ubuntu-latest timeout-minutes: 50 strategy: fail-fast: false matrix: agent-name: ${{fromJson(needs.matrix-setup.outputs.matrix)}} steps: - name: Print Environment Name run: | echo "Matrix Setup Environment Name: ${{ needs.matrix-setup.outputs.env-name }}" - name: Checkout repository uses: actions/checkout@v3 with: fetch-depth: 0 ref: ${{ github.event.pull_request.head.ref }} repository: ${{ github.event.pull_request.head.repo.full_name }} submodules: true - name: Set up Python ${{ env.min-python-version }} uses: actions/setup-python@v2 with: python-version: ${{ env.min-python-version }} - id: get_date name: Get date run: echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT - name: Install Poetry run: | curl -sSL https://install.python-poetry.org | python - - name: Run benchmark run: | link=$(jq -r '.["github_repo_url"]' arena/$AGENT_NAME.json) branch=$(jq -r '.["branch_to_benchmark"]' arena/$AGENT_NAME.json) git clone "$link" -b "$branch" "$AGENT_NAME" cd $AGENT_NAME ./run agent start $AGENT_NAME cd benchmark poetry install poetry run agbenchmark env: OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} AGENT_NAME: ${{ matrix.agent-name }}