Utility for sequential startup pipeline stages gitlab-ci

roman.volkov 11b37cbe6f moved from personal repository před 2 roky
COPYNG 11b37cbe6f moved from personal repository před 2 roky
Readme.Ru.md 11b37cbe6f moved from personal repository před 2 roky
Readme.md 11b37cbe6f moved from personal repository před 2 roky
httpreq.go 11b37cbe6f moved from personal repository před 2 roky
main.go 11b37cbe6f moved from personal repository před 2 roky
osenv.go 11b37cbe6f moved from personal repository před 2 roky
slicestring.go 11b37cbe6f moved from personal repository před 2 roky

Readme.Ru.md

Утилита для запуска стейджей пайплайна GitLab

Как-то раз на собеседовании мне не поверили, что я написал это, потому что не смог вспомнить супер-важное свойство языка го.

Хоть это и гавнокод по исполнению, пусть лежит в качестве пруфа

:)

Так как это дело проектировалось под нужды конкретного проекта, в нём затесались не нужные куски.

Общий флоу:

создаём новую ветку

запускаем пайплайн

в цикле проверяем статусы и там если то, то другое как везде

Что с этм делать:

httpreq.go:

По хорошему надо собрать в одну функцию и потом переписать в мейне, отличия там только в методе по сути, чтоб его не пробрасывать?) А и таймаутов не хватает, да, можно прокинуть флагом

main.go:

headers - тут надо вписать в PRIVATE-TOKEN значение гитлаб-токена

envs (структура) и env реализация - только если собираешься что-то пробро- сить, а так можно вырезать

myUsageпридётся добавить флагов, например для проброса того же токена и urlstring, рекомендую если пусто постараться достать из окружения

flag.StringVar(&branch, "b") по умолчанию берёт ветку девелоп, наверно стоит поставить master

if "build" == args[i] проверка на наличие стадии билда также не имеет смыс- ла для широких масс

data := map[string]interface{}{- вот тут дата для пробрасывания кастом-енв- ов, конечно можно вырезать, но лучше если ничего не указано кидать ниже в функциях нулину

И ОСНОВНОЙ ЦИКЛ НАДО БЫ НА КЕЙСАХ СДЕЛАТЬ А ТО ТАК НЕ КРАСИВО

osenv.go:

Тут легко разобраться

slicestring.go:

Тут тоже легко