Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Скрипт клонирования форков с блекджеком и куртизанками #1222

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

trin4ik
Copy link
Contributor

@trin4ik trin4ik commented Jun 29, 2024

Проблема

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

Решение

bash скрипт, который всё это дело автоматизирует.

$ curl -s https://raw.githubusercontent.com/trin4ik/vas3k.club/feature/clone-forks/etc/bin/clone-fork.sh | bash -s -- nlopin:feat/add-attach-file-button
developer: nlopin
branch: feat/add-attach-file-button
create directory
cloning repository...
Cloning into 'nlopin/feat/add-attach-file-button'...
remote: Enumerating objects: 13924, done.
remote: Counting objects: 100% (494/494), done.
remote: Compressing objects: 100% (234/234), done.
remote: Total 13924 (delta 277), reused 401 (delta 245), pack-reused 13430
Receiving objects: 100% (13924/13924), 16.84 MiB | 19.76 MiB/s, done.
Resolving deltas: 100% (9722/9722), done.
change docker-compose.yml
done
$ tree -d
.
├── nlopin
│   └── feat
│       └── add-attach-file-button
│           ├── authn
│           │   ├── context_processors
│           │   ├── decorators
│           │   ├── management
│           │   │   └── commands
│           │   ├── migrations
│           │   ├── models
│           │   ├── providers
│           │   └── views
│           ├── badges
│           │   └── migrations
│           ├── bookmarks
│           │   └── migrations
│           ├── bot
│           │   └── handlers
...
$ cat nlopin/feat/add-attach-file-button/docker-compose.yml
name: "vas3kclub_nlopin_feat_add_attach_file_button" # <---
version: "3.7"

services:
  club_app: &app
    container_name: club_app_nlopin_feat_add_attach_file_button # <---

...

  postgres:
    image: postgres:11
    container_name: club_postgres_nlopin_feat_add_attach_file_button # <---

...

Собственно, сам скрипт тут https://raw.githubusercontent.com/trin4ik/vas3k.club/feature/clone-forks/etc/bin/clone-fork.sh на вход 2 аргумента: репозиторий для клона в одном из форматов:

  • nlopin:feat/add-attach-file-button
  • https://github.com/nlopin/vas3k.club/tree/feat/add-attach-file-button

и второй аргумент -- директория для клона. По дефолту директория берётся ${developer}/${branch}, для для репы https://github.com/nlopin/vas3k.club/tree/feat/add-attach-file-button будет создана директория nlopin/feat/add-attach-file-button


В целом не думаю, что это прям нужно тащить в основной проект, скрипт вполне может жить и в форке. Если решим перетащить в проект, то надо ещё описание для девелоперов написать. Запуск тоже не то, чтобы прям удобный

curl -s https://raw.githubusercontent.com/trin4ik/vas3k.club/feature/clone-forks/etc/bin/clone-fork.sh | bash -s -- nlopin:feat/add-attach-file-button

Но всё равно удобней, чем ковырять руками.


Совсем крутым решением было бы сделать поддомен с генерацией скрипта, чтобы можно было делать

curl -s https://clone.vas3k.club/nlopin:feat/add-attach-file-button | bash

Вот это вообще секс ) Скопировал название PR, написал в консоли курл и вуаля. Что думаете?

@trin4ik
Copy link
Contributor Author

trin4ik commented Jun 30, 2024

# просто клонировать репу, по сути синоним `git clone https://github.com/vas3k/vas3k.club.git`
curl -s https://clone.vas3k.club/ | bash

# клонировать и сделать `docker compose up`
curl -s https://clone.vas3k.club/?up | bash

# клонировать форк и запустить
curl -s https://clone.vas3k.club/nlopin:feat/add-attach-file-button?up | bash

# клонировать форк и запустить на указанном порту
curl -s https://clone.vas3k.club/nlopin:feat/add-attach-file-button?port=8001&up | bash

# клонировать форк, запустить на указанном порту и открыть postgres порт
curl -s https://clone.vas3k.club/nlopin:feat/add-attach-file-button?port=8001&postgres_port=15432&up | bash

Разве не счастье для контрибьютера? clone.vas3k.club -- самый просто веб сервер, который генерит текстовик на основе входных параметров. Для контрибьютеров, кто часто делает форки или ревьювит их, кмк, очень удобно

@vas3k
Copy link
Owner

vas3k commented Jul 1, 2024

Кажется этому PRу крайне не хватает отдельной доки по поводу того как этим всем пользоваться и зачем. Без нее не присылай :)

@trin4ik
Copy link
Contributor Author

trin4ik commented Jul 1, 2024

Кажется этому PRу крайне не хватает отдельной доки по поводу того как этим всем пользоваться и зачем. Без нее не присылай :)

🫡

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants