This commit is contained in:
2026-03-11 19:48:23 +01:00
commit 00adbd3da4
3 changed files with 104 additions and 0 deletions

19
Create-PAT.ps1 Normal file
View File

@@ -0,0 +1,19 @@
$HostUrl = "https://code.wynenterprise.io"
$UserName = "KodoBot"
$Password = "<KodoBot password here>"
$TokenName = "ci-token"
$pair = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("${UserName}:${Password}"))
$Headers = @{
Authorization = "Basic $pair"
"Content-Type" = "application/json"
}
$Body = @{
name = $TokenName
scopes = @( "write:issue", "write:repository", "read:user" )
} | ConvertTo-Json
$response = Invoke-RestMethod -Method Post -Uri "$HostUrl/api/v1/users/$UserName/tokens" -Headers $Headers -Body $Body
$response.sha1

47
README.md Normal file
View File

@@ -0,0 +1,47 @@
# Создание технического аккаунта для Code Review
## 1. Создание локального пользователя в Gitea
Создайте локального пользователя в Gitea.
Рекомендуемое имя пользователя: `KodoBot`
## 2. Сохранение временного пароля
При создании пользователя задайте временный пароль и сохраните его в защищённом месте.
## 3. Генерация PAT с минимальными правами
Сгенерируйте Personal Access Token (PAT) с минимально необходимыми правами, используя PowerShell-скрипт.
(Create-PAT.ps1)
Сохраните возвращённое значение PAT в защищённом месте.
## 4. Смена пароля созданного пользователя
После успешного создания PAT смените пароль у созданного пользователя для безопасности.
## 5. Настройка секретов и переменных организации
На уровне организации определите секреты и переменные, необходимые для функционирования Code Reviewer.
### Secrets
- `CC_GITEATOKEN` — PAT пользователя `reviewer`
- `CC_API_KEY` — ключ авторизации для LLM OpenAI API (`sk-***`)
### Variables
- `CC_BASE_URL` — URL LiteLLM Proxy. Значение по умолчанию: `http://llm.developertools.com`
- `CC_MODEL` — модель, используемая по умолчанию: `/int/revewer/default`
и пропишите их на уровне организации с помощью скрита (Set-GiteaOrgActionItem.ps1)
для использования скрипта нужно определить переменную окружения $Env:AdminGiteaManagePAT
Пример запуска
Pat=$Env:AdminGiteaManage
.\Set-GiteaOrgActionItem.ps1 -Org *wyn-core* -VarName *"CC_BASE_URL"* -Value *"https://llm.developertools.pro/"*
.\Set-GiteaOrgActionItem.ps1 -Org *wyn-core* -VarName *"CC_MODEL"* -Value *"/int/reviewer/default"*
.\Set-GiteaOrgActionItem.ps1 -Org *wyn-core* -VarName *"CC_GITEATOKEN"* -Password *"f79....c1c"*
.\Set-GiteaOrgActionItem.ps1 -Org *wyn-core* -VarName *"CC_API_KEY"* -Password *"sk-F..6-k..g"*

View File

@@ -0,0 +1,38 @@
param(
[ValidateNotNullOrEmpty()] [string]$BaseUrl = "https://code.wynenterprise.io/",
[ValidateNotNullOrEmpty()] [string]$Token = $Env:AdminGiteaManagePAT,
[ValidateNotNullOrEmpty()] [string]$Org = "devops",
[Parameter(Mandatory=$true)] [string]$VarName,
[string]$Value,
[string]$Password
)
if ([string]::IsNullOrWhiteSpace($Value) -and [string]::IsNullOrWhiteSpace($Password)) {
throw "Specify either -Value or -Password"
}
if (-not [string]::IsNullOrWhiteSpace($Value) -and -not [string]::IsNullOrWhiteSpace($Password)) {
throw "Specify only one of -Value or -Password"
}
$BaseUrl = $BaseUrl.TrimEnd('/')
$Headers = @{
Authorization = "token $Token"
Accept = "application/json"
"Content-Type" = "application/json"
}
if (-not [string]::IsNullOrWhiteSpace($Password)) { $Uri = "$BaseUrl/api/v1/orgs/$Org/actions/secrets"; $Body = (@{data = $Password} | ConvertTo-Json -Compress); $Method="Put"}
else { $Uri = "$BaseUrl/api/v1/orgs/$Org/actions/variables"; $Body = (@{name = $VarName; value = $Value} | ConvertTo-Json -Compress); $Method="Post"}
$vars = Invoke-RestMethod -Method Get -Uri $Uri -Headers $Headers -ErrorAction Stop
$FoundVar = $vars | Where-Object { $_.name -eq $VarName }
if (-not [bool]$FoundVar) {
Invoke-RestMethod -Method $Method -Uri "$Uri/$VarName" -Headers $Headers -Body $Body
} else {
Invoke-RestMethod -Method Put -Uri "$Uri/$VarName" -Headers $Headers -Body $Body
}