Skip to content
GitLabGitHub

AI Review - Codex w gitlab-ci

Od dawna, pracując nad własnymi projektami w homelabie i traktując je jako przestrzeń do nauki oraz eksperymentów, brakowało mi jednego elementu – kogoś, kto spojrzy na mój kod z dystansu. Nie w kontekście pracy zespołowej, bo tam code review jest naturalnym elementem procesu, ale w prywatnym środowisku, gdzie większość decyzji podejmuje się samodzielnie.

Sztuczna inteligencja zaczęła pełnić rolę cichego recenzenta — analizuje kod, podpowiada możliwe usprawnienia, wyłapuje potencjalne problemy i robi to dokładnie tam, gdzie i tak już wszystko się dzieje: w pipeline CI/CD. W tym artykule pokazuję, jak wykorzystuję AI Review – Codex w gitlab-ci w homelabie jako narzędzie edukacyjne, które realnie wspiera naukę, eksperymentowanie i podnoszenie jakości własnych projektów.


  1. Utworzenie kontenera za pomocą image buildera

    Section titled “Utworzenie kontenera za pomocą image buildera”

    Wydanie wersji codex v1.0.0

  2. ci_jobs/code_review

      .
      ├── .codex
      │   └── manifest.sh.yml
      ├── job.yml
      └── README.md
  3. Wydanie wersji v1.7.0

    W pierwszej kolejności jako użytkownik chciałem mieć możliwość uruchamia joba, kiedy będę uważał za stosowne. Idealnym miejscem “wyboru” czy chcę Code Rewiew czy nie jest dodanie w MR odpowiedniego reviewer

    if ! echo "$REVIEWER_LOGINS" | grep -Fq -- "$AI_REVIEWER_USERNAME"; then
      echo "⛔ Ten MR nie ma wymaganego reviewera – pomijam AI Code Review."
      exit 0
    fi

    W kolejnej fazie wygenerowałem plik diff MR

    echo -e "\033[1;34m--> Pobieram diff z MR #$CI_MERGE_REQUEST_IID\033[0m"
      CHANGES_JSON=$(curl -sS -H "PRIVATE-TOKEN: $GITLAB_TOKEN" "$CI_API_V4_URL/projects/$CI_PROJECT_ID/merge_requests/$CI_MERGE_REQUEST_IID/changes")
      echo "$CHANGES_JSON" | jq -e '.changes' >/dev/null 2>&1 || {
        echo "Nie udało się sparsować odpowiedzi z GitLaba (brak .changes)."
        echo "$CHANGES_JSON"
        exit 1
      }

    Następnie sklejam prompts w całość i uruchomienie codex

    {
        cat .codex/prompts/001-code-review.md
        echo
        echo "## MR_DIFF_START"
        cat .codex/artifacts/mr-diff
        echo "## MR_DIFF_END"
      } | codex exec \
          --model "${CODEX_MODEL}" \
          --sandbox danger-full-access \
          --cd "$CI_PROJECT_DIR" \
          - \
          >> "$CODEX_LOG" 2>&1 || EXIT_CODE=$?

    Na końcu publikuje komentarz do MR i otwiera wątki