diff --git a/.github/workflows/auto-reviewer.yml b/.github/workflows/auto-reviewer.yml index 6bbbc013..c20ef64a 100644 --- a/.github/workflows/auto-reviewer.yml +++ b/.github/workflows/auto-reviewer.yml @@ -1,12 +1,14 @@ 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 }} 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