init
This commit is contained in:
19
Create-PAT.ps1
Normal file
19
Create-PAT.ps1
Normal 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
47
README.md
Normal 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"*
|
||||
38
Set-GiteaOrgActionItem.ps1
Normal file
38
Set-GiteaOrgActionItem.ps1
Normal 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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user