mirror of
https://tvoygit.ru/Djam/artmigrator.git
synced 2025-02-23 10:22:45 +00:00
update
This commit is contained in:
parent
cb816f8d66
commit
f40022f203
5 changed files with 268 additions and 229 deletions
|
@ -2,6 +2,7 @@ nexus:
|
|||
url: "http://127.0.0.1:8081"
|
||||
username: "your-nexus-username"
|
||||
password: "your-nexus-password"
|
||||
repository: "my-repository"
|
||||
|
||||
gitea:
|
||||
url: "http://127.0.0.1:3000"
|
||||
|
|
|
@ -11,6 +11,7 @@ type Config struct {
|
|||
URL string `yaml:"url"`
|
||||
Username string `yaml:"username"`
|
||||
Password string `yaml:"password"`
|
||||
Repository string `yaml:"repository"`
|
||||
} `yaml:"nexus"`
|
||||
Gitea struct {
|
||||
URL string `yaml:"url"`
|
||||
|
|
25
core/core.go
25
core/core.go
|
@ -3,6 +3,7 @@ package core
|
|||
import (
|
||||
"flag"
|
||||
"log"
|
||||
"strings"
|
||||
|
||||
"tvoygit.ru/djam/artmigrator/config"
|
||||
"tvoygit.ru/djam/artmigrator/repository/gitea"
|
||||
|
@ -39,7 +40,7 @@ func (a *App) Run() error {
|
|||
giteaClient := gitea.NewClient(a.Config.Gitea.URL, a.Config.Gitea.Token, a.Config)
|
||||
log.Println("Авторизация в Gitea прошла успешно")
|
||||
|
||||
repository := "your-repository-name"
|
||||
repository := a.Config.Nexus.Repository
|
||||
log.Println("Начало процесса загрузки артефактов...")
|
||||
artifacts, err := nexusClient.GetArtifacts(repository)
|
||||
if err != nil {
|
||||
|
@ -59,8 +60,28 @@ func (a *App) Run() error {
|
|||
}
|
||||
log.Printf("Артефакт %s загружен из репозитория Nexus", artifact)
|
||||
|
||||
// Изменение функции Run для загрузки артефактов в Gitea
|
||||
parts := strings.Split(artifact, "/")
|
||||
if len(parts) < 4 {
|
||||
log.Printf("Некорректный формат артефакта %s", artifact)
|
||||
continue
|
||||
}
|
||||
groupId := parts[0]
|
||||
artifactId := parts[1]
|
||||
version := parts[2]
|
||||
fileParts := strings.Split(parts[3], ".")
|
||||
if len(fileParts) < 2 {
|
||||
log.Printf("Некорректный формат файла %s", parts[3])
|
||||
continue
|
||||
}
|
||||
if fileParts[len(fileParts)-1] == "md5" || fileParts[len(fileParts)-1] == "sha1" {
|
||||
log.Printf("Пропускаем файл %s, так как он имеет расширение .md5 или .sha1", artifact)
|
||||
continue
|
||||
}
|
||||
packaging := fileParts[len(fileParts)-1]
|
||||
|
||||
log.Printf("Загрузка артефакта %s в репозиторий Gitea...", artifact)
|
||||
err = giteaClient.UploadArtifact(artifact, data)
|
||||
err = giteaClient.UploadArtifact(groupId, artifactId, version, packaging, data)
|
||||
if err != nil {
|
||||
log.Printf("Ошибка загрузки артефакта %s в Gitea: %v", artifact, err)
|
||||
} else {
|
||||
|
|
|
@ -57,12 +57,15 @@ type UploadArtifactRequest struct {
|
|||
Message string `json:"message"`
|
||||
}
|
||||
|
||||
func (c *Client) UploadArtifact(artifactPath string, data []byte) error {
|
||||
log.Printf("Загрузка артефакта %s в репозиторий Gitea", artifactPath)
|
||||
url := fmt.Sprintf("%s/api/v1/repos/%s/%s/contents/%s?ref=master", c.BaseURL, c.Config.Gitea.Username, c.Config.Gitea.Repo, artifactPath)
|
||||
request := UploadArtifactRequest{
|
||||
Content: string(data),
|
||||
Message: "Upload artifact",
|
||||
func (c *Client) UploadArtifact(groupId, artifactId, version, packaging string, data []byte) error {
|
||||
log.Printf("Загрузка артефакта %s-%s-%s.%s в репозиторий Gitea", groupId, artifactId, version, packaging)
|
||||
url := fmt.Sprintf("%s/api/v1/packages/%s/maven", c.BaseURL, c.Config.Gitea.Repo)
|
||||
request := map[string]string{
|
||||
"groupId": groupId,
|
||||
"artifactId": artifactId,
|
||||
"version": version,
|
||||
"packaging": packaging,
|
||||
"file": fmt.Sprintf("%s-%s-%s.%s", artifactId, version, packaging, packaging),
|
||||
}
|
||||
jsonRequest, err := json.Marshal(request)
|
||||
if err != nil {
|
||||
|
@ -101,6 +104,6 @@ func (c *Client) UploadArtifact(artifactPath string, data []byte) error {
|
|||
return fmt.Errorf("failed to upload artifact")
|
||||
}
|
||||
|
||||
log.Printf("Артефакт %s загружен в репозиторий Gitea", artifactPath)
|
||||
log.Printf("Артефакт %s-%s-%s.%s загружен в репозиторий Gitea", groupId, artifactId, version, packaging)
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
package nexus
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"net/http"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type Client struct {
|
||||
|
@ -25,32 +25,45 @@ func NewClient(baseURL, username, password string) *Client {
|
|||
}
|
||||
|
||||
func (c *Client) GetArtifacts(repository string) ([]string, error) {
|
||||
log.Printf("Получение артефактов из репозитория Nexus")
|
||||
url := fmt.Sprintf("%s/repository/%s/", c.BaseURL, repository)
|
||||
url := fmt.Sprintf("%s/service/rest/v1/search/assets?sort=repository&repository=%s", c.BaseURL, repository)
|
||||
req, err := http.NewRequest("GET", url, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
req.SetBasicAuth(c.Username, c.Password)
|
||||
|
||||
log.Printf("Запрос на получение артефактов: %s", req.URL)
|
||||
log.Printf("Заголовки запроса: %v", req.Header)
|
||||
|
||||
resp, err := c.HTTPClient.Do(req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
log.Printf("Код ответа: %d", resp.StatusCode)
|
||||
log.Printf("Заголовки ответа: %v", resp.Header)
|
||||
|
||||
body, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
log.Printf("Артефакты получены из репозитория Nexus")
|
||||
artifacts := strings.Split(string(body), "\n")
|
||||
var result []string
|
||||
for _, artifact := range artifacts {
|
||||
if strings.Contains(artifact, ".jar") || strings.Contains(artifact, ".pom") {
|
||||
result = append(result, artifact)
|
||||
log.Printf("Тело ответа: %s", string(body))
|
||||
|
||||
var assets struct {
|
||||
Items []struct {
|
||||
DownloadUrl string `json:"downloadUrl"`
|
||||
} `json:"items"`
|
||||
}
|
||||
err = json.Unmarshal(body, &assets)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var result []string
|
||||
for _, asset := range assets.Items {
|
||||
result = append(result, asset.DownloadUrl)
|
||||
}
|
||||
return result, nil
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue