diff --git a/.github/workflows/auto-reviewer.yml b/.github/workflows/auto-reviewer.yml index 6bbbc013..674bb7ba 100644 --- a/.github/workflows/auto-reviewer.yml +++ b/.github/workflows/auto-reviewer.yml @@ -1,15 +1,16 @@ name: Auto Reviewer on: - pull_request: - types: [opened, reopened, synchronize] + workflow_run: + workflows: [Git Police] + types: + - completed jobs: make-review: - if: github.head_ref != 'develop' + if: github.head_ref != 'develop' && github.event.workflow_run.conclusion == 'success' runs-on: ubuntu-latest env: - PULL_REQUEST: ${{ github.event.pull_request.number }} PROJECT: ${{ github.event.repository.owner.login }} REPO_SLUG: ${{ github.event.repository.name }} OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} @@ -20,6 +21,14 @@ jobs: - name: Checkout code uses: actions/checkout@v2 + - name: Fetch pull request number + id: fetch-pr + run: | + PR_NUMBER=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ + "https://api.github.com/repos/${{ env.PROJECT }}/${{ env.REPO_SLUG }}/pulls?head=${{ env.PROJECT }}:${{ github.head_ref }}" \ + | jq '.[0].number') + echo "PULL_REQUEST=$PR_NUMBER" >> $GITHUB_ENV + - name: Run Docker container id: run-docker run: | @@ -27,6 +36,7 @@ jobs: echo "-------------------------------------------------------------------------" echo ${{ env.DOCKERHUB_PASSWORD }} | docker login --username "${{ env.DOCKERHUB_USERNAME }}" --password-stdin docker run -d -p 5000:5000 -e REPO_API_TOKEN="${{ env.ETENDOBOT_TOKEN }}" -e PULL_REQUEST=${{ env.PULL_REQUEST }} -e PROJECT=${{ env.PROJECT }} -e REPO_SLUG=${{ env.REPO_SLUG }} -e OPENAI_API_KEY="${{ env.OPENAI_API_KEY }}" etendo/code-reviewer:latest + - name: Make Reviewer API call id: call-api run: | @@ -34,7 +44,6 @@ jobs: response=$(curl -s -o response.txt -w "%{http_code}" -X GET http://localhost:5000/review/github) if [ $response -ne 200 ]; then echo "API call failed with status code $response. This is likely an error related to the PR data, or an internal API error" - echo "Response text:" cat response.txt exit 1 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f1aa7a88..02dd03eb 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,13 +1,16 @@ name: Sonar Build on: - pull_request: - types: [opened, synchronize, reopened] + workflow_run: + workflows: [Git Police] + types: + - completed push: branches: - main - develop jobs: build: + if: github.event.workflow_run.conclusion == 'success' name: Sonar Build runs-on: ubuntu-latest steps: diff --git a/.github/workflows/git-police.yml b/.github/workflows/git-police.yml new file mode 100644 index 00000000..b8e5cc00 --- /dev/null +++ b/.github/workflows/git-police.yml @@ -0,0 +1,49 @@ +name: Git Police + +on: + pull_request: + types: [opened, reopened, synchronize] + +jobs: + git-police: + name: Git Police + if: github.head_ref != 'develop' + runs-on: ubuntu-latest + env: + PR_ID: ${{ github.event.pull_request.number }} + REPO_NAME: ${{ github.event.repository.name }} + ETENDOBOT_TOKEN: ${{ secrets.ETENDOBOT_TOKEN }} + DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} + DOCKERHUB_PASSWORD: ${{ secrets.DOCKERHUB_PASSWORD }} + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Run Docker container + id: run-docker + run: | + printenv + echo "-------------------------------------------------------------------------" + echo ${{ env.DOCKERHUB_PASSWORD }} | docker login --username "${{ env.DOCKERHUB_USERNAME }}" --password-stdin + docker run -d -p 5000:5000 -e REPO_TOKEN="${{ env.ETENDOBOT_TOKEN }}" -e PR_ID=${{ env.PR_ID }} -e REPO_NAME=${{ env.REPO_NAME }} etendo/gitpolice:latest + - name: Git Police API call + id: call-api + run: | + sleep 10s + response=$(curl -s -o response.txt -w "%{http_code}" -X GET http://localhost:5000/api/github) + if [ $response -ne 200 ]; then + echo "API call failed with status code $response. This is likely an error related to the PR data, or an internal API error" + + echo "Response text:" + cat response.txt + exit 1 + fi + if ! grep -q "Valid branch name and correct destination" response.txt; then + echo "Git Police check failed: response does not contain 'Valid branch name and correct destination'" + echo "Full response:" + cat response.txt + exit 1 + fi + echo "API call successful with status code $response" + echo "Response text:" + cat response.txt