Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Свой github.com

, golang giteo
Статус пользователя Gecko
сообщение 8.5.2022, 16:45
Сообщение #1
Стаж: 7 лет 4 месяца

Сообщений: 1247
Благодарностей: 518
Полезность: 346

Представляю вашему вниманию очень полезную и нужную в современных реалиях программу, которая позволяет организовать свой собственный веб-сервис по развёртыванию git-репозиториев аналогичный github.com.
Данная программа написана на языке Go (golang) и требует компиляции из исходного кода, после которого вы получаете монолитный бинарный файл.

При первом запуске вам предоставляется возможность выбрать одну из доступных СУБД для работы с БД.
Прикрепленное изображение

Я написал небольшой bash-скрипт который скачает исходники и соберёт/установит всю необходимую программную инфраструктуру за исключением СУБД и прочих вспомогательных программ.
Внимание! Скрипт писался под Debian с использованием apt

Перед запуском скрипта:
Если установлен nodejs <= 14 тогда выполнить:
Код
sudo apt remove nodejs

Если уже установлен Go <= 16 тогда выполнить:
Код
rm -rf /usr/local/go


Скрипт универсальный его легко можно дополнить установкой дополнительного ПО которое необходимо вашему проекту на golang, а также собирать другие проекты на golang.
Запускать его можно с любого места, а также можно использовать как makefile

gitea_install.sh
Код
#!/bin/bash

### set -e

# Переменные приложения
app_name=gitea
app_version="1.16.7"
app_src=main.go
app_git_repo=https://github.com/go-gitea/gitea
app_cfg=
app_folder=${app_name}

nodejs=https://deb.nodesource.com/setup_14.x

# Переменные компилятора (можно не трогать)
go_url=https://go.dev/dl/
go_version=1.18.1
go_archive=go${go_version}.linux-amd64.tar.gz
go_projects=${HOME}/golang/go_projects
#############################################

# ВСЁ ЧТО НИЖЕ, ЛУЧШЕ НЕ ТРОГАТЬ!

# Переменные окружения golang
export PATH=$PATH:/usr/local/go/bin
export GOPATH=${go_projects}
export GOBIN=$PATH:$GOPATH/bin
export PATH=$PATH:$GOPATH/bin
export PATH=$PATH:$GOROOT/bin
export GOMODCACHE=${go_projects}/pkg/mod
export GO111MODULE="auto"

# Переменные цветного вывода текста
normal=$(echo "\033[m")
lightred=$(echo "\e[91m")
green=$(echo "\033[0;32m")
blue=$(echo "\033[36m")

clear
if [ "$(whoami)" != 'root' ]; then
   sudo=sudo
   else
   sudo=
fi

if [[ ! -f "/usr/bin/wget" ]]; then
    printf "\n ${lightred}Need to install ${green}Wget${normal}\n\n"
    ${sudo} apt install wget -y
fi

if [[ ! -f "/usr/bin/git" ]]; then
    printf "\n ${lightred}Need to install ${green}Git${normal}\n\n"
    ${sudo} apt install git -y
fi

if [[ ! -f "/usr/bin/make" ]]; then
    wget -qO- ${nodejs} |${sudo} bash -
    ${sudo} apt install -y make
fi

if [[ ! -f "/usr/bin/node" ]]; then
    wget -qO- ${nodejs} |${sudo} bash -
    ${sudo} apt install -y nodejs
fi

if [[ ! -f "/usr/local/go/bin/go" ]]; then
    wget ${go_url}${go_archive} && ${sudo} tar -C /usr/local -xzf ${go_archive} && rm -rf ${go_archive}
fi

if [[ ! -d "${go_projects}/src/${app_folder}/.git" ]]; then
    mkdir -p ${go_projects}/{bin,src/${app_folder},pkg} && cd ${go_projects}/src/${app_folder} && git clone ${app_git_repo} .
fi

if [[ ! -f "${go_projects}/src/${app_folder}/go.mod" ]]; then
    printf "module ${app_git_repo:8:${#app_git_repo}}\n\ngo ${go_version}" >go.mod
    go mod tidy
fi

# go build ${app_src} && cp -pf ${go_projects}/src/${app_folder}/$(basename -- ${app_src%.*}) ${go_projects}/bin/${app_name}
cd ${go_projects}/src/${app_folder} && TAGS="bindata" make build && cp -pf ${go_projects}/src/${app_folder}/$(basename -- ${app_src%.*}) ${go_projects}/bin/${app_name}

printf "\n Application: ${blue}${app_name} ${app_version}${normal}\n Repo: ${green}${app_git_repo}${normal}\n"

if [[ -f "${app_cfg}" ]]; then
    printf " Config: ${blue}${app_cfg}${normal}\n"
fi

# printf " Usage: ${lightred}cd ${go_projects}/src/${app_folder} && ./$(basename -- ${app_src%.*})${normal}\n\n ${green}Initialization completed!${normal}\n\n "
# cd ${go_projects}/src/${app_folder} && chmod -R 777 * && ./$(basename -- ${app_src%.*})
printf " Usage: ${lightred}cd ${go_projects}/src/${app_folder} && ./${app_name}${normal}\n\n ${green}Initialization completed!${normal}\n\n"
cd ${go_projects}/src/${app_folder} && chmod -R 777 * && ./${app_name}
exit


Прикрепленное изображение

Demo
Ещё один рабочий пример

Сайт программы | GitHub
Подробная документация: https://docs.gitea.io/en-us/

Отредактировал: Gecko, - 8.5.2022, 16:53


Не отвечаю на ЛС.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   Цитировать сообщение
Статус пользователя Eka
сообщение 8.5.2022, 17:09
Сообщение #2
Стаж: 8 лет 2 месяца

Сообщений: 280
Благодарностей: 114
Полезность: 176

Нужную в современных реалиях кому и зачем?


цитаты великих умов
Цитата
аналог libcurl в Go это net/http
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Gecko
сообщение 8.5.2022, 17:33
Сообщение #3
Стаж: 7 лет 4 месяца

Сообщений: 1247
Благодарностей: 518
Полезность: 346

Цитата(Eka @ 8.5.2022, 17:09) *
Нужную в современных реалиях кому и зачем?

Ну ты видимо не в курсах что сейчас происходит в мире OpenSource, значит тебе оно точно не надо.


Не отвечаю на ЛС.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Eka
сообщение 8.5.2022, 18:12
Сообщение #4
Стаж: 8 лет 2 месяца

Сообщений: 280
Благодарностей: 114
Полезность: 176

Gecko, а что сейчас происходит в мире опенсорс? Как софт из этой темы решает проблему? Зачем соло разработчику свой гит, если "проблема опенсорса" его не касается, а в компании, где он работает, есть свой приватный репозиторий?

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


цитаты великих умов
Цитата
аналог libcurl в Go это net/http
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Gecko
сообщение 8.5.2022, 18:20
Сообщение #5
Стаж: 7 лет 4 месяца

Сообщений: 1247
Благодарностей: 518
Полезность: 346

Eka, просто забудь


Не отвечаю на ЛС.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Gecko
сообщение 8.5.2022, 18:28
Сообщение #6
Стаж: 7 лет 4 месяца

Сообщений: 1247
Благодарностей: 518
Полезность: 346

Eka, Зачем собаке пятая нога, зачем Пугачёва уехала в Израиль, ... ??? lol.gif
Цитата
Зачем соло разработчику свой гит

свой гит ? Ты почитай что такое git


Не отвечаю на ЛС.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Eka
сообщение 8.5.2022, 22:38
Сообщение #7
Стаж: 8 лет 2 месяца

Сообщений: 280
Благодарностей: 114
Полезность: 176

Gecko, кроме того, как потешить свое эго, топик несет какой то смысл?
Не ясно что не понятного в вопросе "зачем соло деву свой гит сервер". Я гитом каждый день пользуюсь, модули для го тяну с гитхаба, код храню в рабочем приватном гитлабе. Делаю мержи из одной ветки в другую. Или этого недостаточно для того, чтобы знать что такое гит?
Я лично никаких проблем в мире опенсорса не заметил. А тебе, видимо, не хватает знаний об этом, чтобы объяснить. Тогда к чему эти дешевые понты?


цитаты великих умов
Цитата
аналог libcurl в Go это net/http
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Gecko
сообщение 9.5.2022, 3:08
Сообщение #8
Стаж: 7 лет 4 месяца

Сообщений: 1247
Благодарностей: 518
Полезность: 346

Eka, что за бред? Просто какой смысл вести дискуссию с человеком который не различает git и github
Выпей таблетку, успокойся, столько негатива как будто я у тебя что-то украл.

Поинтересуйся для начала для чего это, почти 30к звёзд и 4к форков только на гитхабе, как ты считаешь может это нужная программа? Если ты не рубишь вообще разницу между хостингом и системой контроля версиями, то как я тебе написал ранее - просто забудь, иди играй лучше в cs, это вот как раз твоё.



Не отвечаю на ЛС.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Eka
сообщение 9.5.2022, 3:45
Сообщение #9
Стаж: 8 лет 2 месяца

Сообщений: 280
Благодарностей: 114
Полезность: 176

Gecko, твоя реакция прекрасно демонстрирует тот факт, что тема создана не чтобы поделиться чем то полезным.
По порядку. В чем я не прав? Gitea - self-hosted cvn? Нет? Тогда что это? Негатива никакого нет. Всего лишь реакция на токсика с ЛОРа. Ты типичный представитель помойного кодер-комьюнити :)
Ты на вопрос даже не смог ответить - зачем нужен gitea сейчас и для кого. Ты просто перепечатал гайд по установке ради того, чтобы он был. Ну и лишний раз о го напомнить, как же без этого ))


цитаты великих умов
Цитата
аналог libcurl в Go это net/http
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Gecko
сообщение 9.5.2022, 4:04
Сообщение #10
Стаж: 7 лет 4 месяца

Сообщений: 1247
Благодарностей: 518
Полезность: 346

Eka,
Цитата
твоя реакция прекрасно демонстрирует тот факт, что тема создана не чтобы поделиться чем то полезным.
По порядку. В чем я не прав? Gitea - self-hosted cvn? Нет? Тогда что это? Негатива никакого нет. Всего лишь реакция на токсика с ЛОРа. Ты типичный представитель помойного кодер-комьюнити :)
Ты на вопрос даже не смог ответить - зачем нужен gitea сейчас и для кого. Ты просто перепечатал гайд по установке ради того, чтобы он был. Ну и лишний раз о го напомнить, как же без этого ))

Дружище, вопрос в том, что я уже давненько не играю в игры. По этому давай я уж как нибудь сам решу что мне публиковать. Если это нарушит правила форума, тогда твои претензии можно считать обоснованными, а так, придётся тебе потерпеть. Да, действительно я в последнее время сильно подсел на go, ты считаешь это зазорным?

Цитата
ты просто перепечатал гайд по установке ради того, чтобы он был.

Дружише, каждый символ моего поста написан лично мною для этого форума, если ты или кто другой, найдёт в интернете этот скрипт или этот текст написанный и проиндексированный ранее хоть на любом другом языке, я тому без разговоров переведу 1000$.
Я не имею привычки перепечатывать чужой текст, там где я это делаю я это цитирую.
PS. Если ты не заметил, в скрипте есть комментарии типа
Код
go build ${app_src} && cp -pf ${go_projects}/src/${app_folder}/$(basename -- ${app_src%.*}) ${go_projects}/bin/${app_name}

или этот блок кода, он тут вообще не работает.
Код
if [[ -f "${app_cfg}" ]]; then
    printf " Config: ${blue}${app_cfg}${normal}\n"
fi

то есть я его писал для себя для сборки проектов, а в данном случае я переделал под сборку gitea чтобы упростить процедуру установки тем кто с go раньше не работал.

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

Eka,
Цитата
Ты на вопрос даже не смог ответить - зачем нужен gitea сейчас и для кого.

Я тебе уже на него ответил, смысл вести дискуссию если человек не различает git от github.

Для большего понимания, тем кто также не рубит разницу:

Все разработчики, в большей своей массе, хостят свой код тем или иным способом. И необязательно быть программистом чтобы пользоваться gitea, можно хостить статьи своего блога или даже новостного сайта, можно хостить сам новостной сайт попутно используя git и весь его инструментарий. Можно создать хостинг исключительно по amxx и это будет выглядеть гораздо солиднее чем к примеру как это часто бывает в виде простой ссылки на исходник и бинарный файл на каком нибудь форуме. И самое главное, ты знаешь что у тебя есть твой собственный хостинг который ты можешь переписать под себя, он будет работать без зависимостей в том числе от политической обстановки в мире.


Отредактировал: Gecko, - 9.5.2022, 4:48


Не отвечаю на ЛС.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Eka
сообщение 9.5.2022, 12:27
Сообщение #11
Стаж: 8 лет 2 месяца

Сообщений: 280
Благодарностей: 114
Полезность: 176

Gecko, а игры тут при чем, перед кем ты оправдываешься? Это ты мне приписываешь что то, не я тебе )
Цитата
Я тебе уже на него ответил, смысл вести дискуссию если человек не различает git от github.

Для большего понимания, тем кто также не рубит разницу:

Ты мне пытаешься что объяснить, что гити - это селф хостед гит? Так я это изначально и сказал. Или ты настаиваешь на том, что это конкретно гитхаб? А воркфлоу завезли уже?

И да, вопроса на ответ "кому оно нужно" у тебя так и не найдется. Только сомнительная перспектива переписать под себя код своего гита, Кому то на этом форуме это нужно? Тут кто то будет свою репу поднимать?))
Цитата
можно хостить статьи своего блога или даже новостного сайта, можно хостить сам новостной сайт попутно используя git и весь его инструментарий. Можно создать хостинг исключительно по amxx и это будет выглядеть гораздо солиднее чем к примеру как это часто бывает в виде простой ссылки на исходник и бинарный файл на каком нибудь форуме

И что, ты так уже делаешь? Может и ссылками своими поделишься?) Заодно посмотреть куда пр кидаешь, что там у тебя по опенсорсу.

А то тебя в топиках почитать - боярский во всей красе. А по факту - ничего.


цитаты великих умов
Цитата
аналог libcurl в Go это net/http
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Gecko
сообщение 9.5.2022, 17:48
Сообщение #12
Стаж: 7 лет 4 месяца

Сообщений: 1247
Благодарностей: 518
Полезность: 346

Eka,
Цитата
а игры тут при чем, перед кем ты оправдываешься? Это ты мне приписываешь что то, не я тебе )

Ну а что интересное ещё в твоём понимании может быть кроме как игры? Ты ведь сам написал что лучше что-то интересное выкладывать чем это...

Eka,
Цитата
ты мне пытаешься что объяснить, что гити - это селф хостед гит? Так я это изначально и сказал. Или ты настаиваешь на том, что это конкретно гитхаб? А воркфлоу завезли уже?

cbf1b2bfde1a.gif

Eka,
Цитата
И да, вопроса на ответ "кому оно нужно" у тебя так и не найдется. Только сомнительная перспектива переписать под себя код своего гита,

Я думал что описал тему так, что даже дебил поймёт о чем она...

Вот тебе задание:
Почитай что такое git и что такое github (прочувствуй разницу), потом прочитай название и описание данного топика, свои выводы напиши в следующем своём посте.

У нас с тобой разный круг интересов, то чем увлекаюсь я - тебе точно не интересно, как минимум это видно по твоим сообщениям. Я не занимаюсь альтруизмом как некоторые, я по жизни никому и ничего не должен, если у меня есть желание в пустую "потрындеть" я это с удовольствием делаю (как например в этом топике), если есть желание поделиться софтом, или помочь в какой нибудь теме, я также это делаю с удовольствием.

UPD
Совсем забыл )))
Eka,
Цитата
По порядку. В чем я не прав? Gitea - self-hosted cvn? Нет? Тогда что это?

Цитаты сочинений наших школьников )))
Хочешь сморозить что-нибудь заумное напиши это по английский. © Eka

Отредактировал: Gecko, - 9.5.2022, 18:12


Не отвечаю на ЛС.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Eka
сообщение 9.5.2022, 18:33
Сообщение #13
Стаж: 8 лет 2 месяца

Сообщений: 280
Благодарностей: 114
Полезность: 176

Gecko, и правда, потрындеть ты любишь, столько слов, а толку - 0. Ты не индус, часом?
Что ж ты пристал так к понятиям гит и гитхаб)
Твой топик называется "свой гитхаб". Я тебе четко написал - гити и гитхаб точно такие же разные вещи, как и гит с гитхабом)
Цитата
У нас с тобой разный круг интересов, то чем увлекаюсь я - тебе точно не интересно, как минимум это видно по твоим сообщениям. Я не занимаюсь альтруизмом как некоторые, я по жизни никому и ничего не должен, если у меня есть желание в пустую "потрындеть" я это с удовольствием делаю (как например в этом топике), если есть желание поделиться софтом, или помочь в какой нибудь теме, я также это делаю с удовольствием.

А к чему эти понты, даже не перед кем ведь? Ну я понял что тебе категорически необходимо иметь приватные репы, чтобы хранить там код своих блогов, которые никто никогда не увидит.
Вопрос - кому здесь нужен гити?) И еще больший вопрос - что там такого с опенсорс комунити случилось, что аж всем рекомендуется свои репохосты пилить?))

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

можешь и дальше прикрывать свою некомпетентность и необразованность нежеланием отвечать дурачкам ))


цитаты великих умов
Цитата
аналог libcurl в Go это net/http
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Gecko
сообщение 9.5.2022, 19:21
Сообщение #14
Стаж: 7 лет 4 месяца

Сообщений: 1247
Благодарностей: 518
Полезность: 346

Eka, так как с домашним заданием ты не справился
Цитата
Вот тебе задание:
Почитай что такое git и что такое github (прочувствуй разницу), потом прочитай название и описание данного топика, свои выводы напиши в следующем своём посте.

не вижу смысла продолжать с тобой дискуссию.
Цитата
потрындеть ты любишь, столько слов, а толку - 0.

не дорос ты ещё до серьёзных тем малютка. Потому и толку 0.
Иди лучше поиграй в майнкрафт, это реально твоё, или выбери тему по проще, где ты сможешь показать своё остроумие во всей красе )))









Не отвечаю на ЛС.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Eka
сообщение 9.5.2022, 19:49
Сообщение #15
Стаж: 8 лет 2 месяца

Сообщений: 280
Благодарностей: 114
Полезность: 176

Боюсь, поддержать разговор на эти темы ты сможешь только с гуглом под рукой, как жаль. Хотя даже с ним ты не ответил на самые элементарные вопросы. А пафоса то сколько.
Выходит, я во всем оказался прав :)


цитаты великих умов
Цитата
аналог libcurl в Go это net/http
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Gecko
сообщение 9.5.2022, 20:09
Сообщение #16
Стаж: 7 лет 4 месяца

Сообщений: 1247
Благодарностей: 518
Полезность: 346

Цитата(Eka @ 9.5.2022, 19:49) *
Боюсь, поддержать разговор на эти темы ты сможешь только с гуглом под рукой

А ты и с гуглом не сможешь, в этом и разница между нами.
Я тебе задал одни элементарный вопрос, на который гугл вот лично тебе ответит за 2 секунды, но ты и этого не осилил.
Человек который путает git и github, не знает как правильно писать SVN мне ра***зывает про гугл ))))
Забавно это читать.

Я тебя уверяю, в мире нет и не было не одного программиста, который не обращался бы при написании программы в справочник или в поисковую систему для уточнения или получения нужной информации, если ты видишь в этом что-то зазорное то мне тебя искренне жаль парень.
Я к примеру для себя написал целый набор файлов .md которые я могу конвертировать в сайт (по желанию) к которым я чаще обращаюсь чем в гугл.

Отредактировал: Gecko, - 9.5.2022, 20:28


Не отвечаю на ЛС.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Metal Messiah
сообщение 10.5.2022, 17:18
Сообщение #17


Иконка группы

Стаж: 13 лет

Сообщений: 2457
Благодарностей: 1482
Полезность: 770

HostGame.cf
Не понимаю кому нужно будет поднимать свое вместо использовать готовое бесплатное, но сам по себе мануал ценный.
Вообще на форуме не помешала бы серия статей смежной тематики, все что связано с хостингом сайтов, банлистов, fastDL, настройка nginx, выделение ядер cpu под игровой сервер, приоритеты процессов в Linux и так далее


Полезные публикации - ссылки у меня в профиле. Ссылка на плагин против спама на сервере StopServerSpam там же.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Gecko
сообщение 10.5.2022, 18:39
Сообщение #18
Стаж: 7 лет 4 месяца

Сообщений: 1247
Благодарностей: 518
Полезность: 346

Цитата(Metal Messiah @ 10.5.2022, 17:18) *
Не понимаю кому нужно будет поднимать свое вместо использовать готовое бесплатное, но сам по себе мануал ценный.
Вообще на форуме не помешала бы серия статей смежной тематики, все что связано с хостингом сайтов, банлистов, fastDL, настройка nginx, выделение ядер cpu под игровой сервер, приоритеты процессов в Linux и так далее

К написанию этого поста меня сподвиг этот пост на хабре ну и добавил саспенса в том числе и
этот видосик
Код
https://www.youtube.com/watch?v=U_2jnhx_l-M

да и логично предположить что могут быть серьёзные перемены с доступ к тем или иным зарубежным ресурсам где к стати не особо и разбираются РФ или Украина. Хотя, я уже давненько хотел перейти на свой хостинг в котором все мои проекты существовали бы как в собственной локальной сети, так и в интернет, под собственным доменом и с моими правилами, с возможностью подключать других людей к написанию кода и выделять им те или иные ресурсы.
На базе gitea можно создать сервис для хостинга сайтов аналогичный к примеру github page, очень удобно вести разработку статей блога на базе SSG (Генератора статических сайтов).
К примеру в контексте данного форума и игровой тематики на базе gitea можно создать аналог Dev-CS.ru, ведь согласись, приставка dev в контексте gitea выглядит более солидно чем в контексте форумного cms.

Немного оптимизировал скрипт сборки
go_install.sh
Код
#!/bin/bash

# set -e

# Переменные приложения
app_name=gitea
app_version="1.16.7"
app_src=main.go
app_git_repo=https://github.com/go-gitea/gitea
app_cfg=
app_folder=${app_name}

# Особая сборка проекта
APP=${app_name}

# Дополнительное ПО
nodejs=https://deb.nodesource.com/setup_14.x

# Переменные компилятора (можно не трогать)
go_url=https://go.dev/dl/
go_version=1.18.1
go_archive=go${go_version}.linux-amd64.tar.gz
go_projects=${HOME}/golang/go_projects
#############################################

# ВСЁ ЧТО НИЖЕ, ЛУЧШЕ НЕ ТРОГАТЬ!

# Переменные цветного вывода текста
normal=$(echo "\033[m")
lightred=$(echo "\e[91m")
green=$(echo "\033[0;32m")
blue=$(echo "\033[36m")

# Переменные окружения golang
export PATH=$PATH:/usr/local/go/bin
export GOPATH=${go_projects}
export GOBIN=$PATH:$GOPATH/bin
export PATH=$PATH:$GOPATH/bin
export PATH=$PATH:$GOROOT/bin
export GOMODCACHE=${go_projects}/pkg/mod
export GO111MODULE="auto"

clear
if [ "$(whoami)" != 'root' ]; then
   sudo=sudo
   else
   sudo=""
fi

if [[ ! -f "/usr/bin/wget" ]]; then
    printf "\n ${lightred}Need to install ${green}Wget${normal}\n\n"
    ${sudo} apt install wget -y
fi

if [[ ! -f "/usr/bin/git" ]]; then
    printf "\n ${lightred}Need to install ${green}Git${normal}\n\n"
    ${sudo} apt install git -y
fi

if [[ ! -f "/usr/bin/make" ]]; then
    wget -qO- ${nodejs} |${sudo} bash -
    ${sudo} apt install -y make
fi

if [[ ! -f "/usr/bin/node" ]]; then
    wget -qO- ${nodejs} |${sudo} bash -
    ${sudo} apt install -y nodejs
fi

if [[ ! -f "/usr/local/go/bin/go" ]]; then
    wget ${go_url}${go_archive} && ${sudo} tar -C /usr/local -xzf ${go_archive} && rm -rf ${go_archive}
fi

if [[ ! -d "${go_projects}/src/${app_folder}/.git" ]]; then
    mkdir -p ${go_projects}/{bin,src/${app_folder},pkg} && cd ${go_projects}/src/${app_folder} && git clone ${app_git_repo} .
fi

if [[ ! -f "${go_projects}/src/${app_folder}/go.mod" ]]; then
    printf "module ${app_git_repo:8:${#app_git_repo}}\n\ngo ${go_version}" >go.mod
    go mod tidy
fi

if [[ -z "${APP}" ]]; then
    cd ${go_projects}/src/${app_folder} && go build ${app_src}
else
    cd ${go_projects}/src/${app_folder} && TAGS="bindata"  make build
fi

if [[ ! -f "${go_projects}/src/${app_folder}/$(basename -- ${app_src%.*})" ]]; then
    cp -pf ${go_projects}/src/${app_folder}/$(basename -- ${app_src%.*}) ${go_projects}/bin/${app_name}
fi

printf "\n Application: ${blue}${app_name} ${app_version}${normal}\n Repo: ${green}${app_git_repo}${normal}\n"

# Для конфигов
if [[ -f "${app_cfg}" ]]; then
    printf " Config: ${blue}${app_cfg}${normal}\n"
fi

if [[ -z "${APP}" ]];  then
    printf " Usage: ${lightred}cd ${go_projects}/src/${app_folder} && ./$(basename -- ${app_src%.*})${normal}\n\n ${green}Initialization completed!${normal}\n\n "
    cd ${go_projects}/src/${app_folder} && chmod -R 777 * && ./$(basename -- ${app_src%.*})
else
    printf " Usage: ${lightred}cd ${go_projects}/src/${app_folder} && ./${app_name}${normal}\n\n ${green}Initialization completed!${normal}\n\n"
    cd ${go_projects}/src/${app_folder} && chmod -R 777 * && ./${app_name}
fi
exit


Отредактировал: Gecko, - 10.5.2022, 19:46


Не отвечаю на ЛС.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Gecko
сообщение 10.5.2022, 20:22
Сообщение #19
Стаж: 7 лет 4 месяца

Сообщений: 1247
Благодарностей: 518
Полезность: 346

Кроме всего прочего эта программа может работать везде, даже на raspberry pi 3, и потреблять очень мало ресурсов.

к примеру, банально:

Код
package main

import (
    "os"
)

func main() {

file_exist()

// ...
}

func file_exist() {
app := "/etc/nginx/stat"
      if _, err := os.Stat(app); err != nil || os.IsExist(err) {
      os.Exit(1)  
   }
}


И какой нибудь sh-скрипт будет при старте скачивать секретный файл в виде хэш-суммы, хотя для простоты назовём его stat который будет падать в каталог /etc/nginx а при запуске (если файл будет)/завершении работы его удалять.

И вашу программу/gitea не запустить нигде кроме как на вашем VPS.
Понятно что в продакшине всё будет иначе.
Я для себя подчеркнул очень много плюсов в том что gitea именно на go а не к примеру на php, простой и понятный код и работа с пакетами, в частности с "html/template", "net/http"

А программу можно переписать как душе угодно, на github.com вы трафик не сможете монетизировать, а вот на gitea - легко!

Отредактировал: Gecko, - 10.5.2022, 21:26


Не отвечаю на ЛС.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: