
AlexAnder
17.06.2018
01:31:57
#!/usr/bin/env bash
Есть 5 однотипных скриптов на башике. Отличаются они лишь набором команд, которые нужно выполнить - COMMANDS_TO_RUN
Можно ли как то избавиться от дублирования и вынести из этих скриптов всю остальную логику, кроме COMMANDS_TO_RUN ?
Т.е. хотелось бы избавиться от дублирования

Антон
17.06.2018
01:35:14

AlexAnder
17.06.2018
01:35:47
скрипты для обычного ангулар проекта на баше) Ansible - оверхед думаю

Google

Deep Sea
17.06.2018
01:35:56
импортить дублирующийся код через source?

AlexAnder
17.06.2018
01:36:03
мб нужно что-то типо такого
2_install.sh:
bash ./templates/header.sh
... echo install && yarn install ...
bash ./templates/footer.sh
----
4_script.sh:
bash ./templates/header.sh
... echo script && yarn run test ...
bash ./templates/footer.sh

Антон
17.06.2018
01:36:52

Deep Sea
17.06.2018
01:37:27
типа как cat + eval

AlexAnder
17.06.2018
01:37:40
ну не знаю) ковырять энсибл для фронтендера это чересчур)) мне докера и баша пока хватает :D

Антон
17.06.2018
01:38:00
Тебе только главный шедулер написать, а окружение можно тянуть через --limit например. Пихаеш в крон и вуаля

AlexAnder
17.06.2018
01:39:12
мне и так уже на работе в девопсы предлагали свичнуться, мол их мало у нас, а если и в энсибл еще смогу, так и без моего согласия переведут )))

Sergey
17.06.2018
02:43:14
Фронтендер в devops?
Жди бяды

Banschikov
17.06.2018
03:44:36

Google

Антон
17.06.2018
03:54:20

Banschikov
17.06.2018
10:45:34
Привет! Есть стадия build в которой модифицируется файл index.html.
Хочу передать этот файл в следущую стадию docker_build. Передаю как авртефакт. Но в тоге после сборки образа, там лежит не модицированный. Подскажите как правильно скормить Dockerfile мой файл?

Deep Sea
17.06.2018
10:46:46
как копируете?

Nik
17.06.2018
10:46:56

Banschikov
17.06.2018
10:48:21

Nik
17.06.2018
10:48:32

Sergey
17.06.2018
10:48:40
dapp

Nik
17.06.2018
10:48:44
Покажи ci.yml

Sergey
17.06.2018
10:48:44
ты понел)0

Nik
17.06.2018
10:49:04

Banschikov
17.06.2018
10:49:13

Nik
17.06.2018
10:49:13
Но ci все равно покажи

Banschikov
17.06.2018
10:49:52
как копируете?
Там все банально
FROM nginx:latest
COPY index.html /usr/share/nginx/html/
CMD ["nginx", "-g", "daemon off;"]


Matvey
17.06.2018
10:55:02
как решить проблему рассинхронизации данных в микросервисной архитектуре?
существует сервис А с локальной базой данных A' - сервис пользователей
существует сервис B с локальной базой данных B' - сервис аватарок пользователей
бизнес-логика следующая:
- в сервисе A, в бд A', создается новый пользователь
- после успешного создания пользователя, получаем его id
- в сервисе B создаем, в бд B', создаем аватарку, привязывая id пользователя к ней
при хорошем стечении обстоятельств все хорошо. но могут возникать следующие случаи:
1.
- в A -> A' создается запись, получаем id
- запрос в сервис B не состоялся - сервис B возвращает 500 ошибку
2.
- в A -> A' создается запись, получаем id
- делаем запрос в сервис B
- B не может записать данные в B' - база данных остановлена
3.
- в A -> A' создается запись, получаем id
- сервис A аварийно завершил работу, и не успел обратиться в сервис B
по итогу бизнес-логика не завершена полностью. A -> A' содержит пользователя, но в B -> B' для него нет аватарки.


Banschikov
17.06.2018
10:55:42

Nik
17.06.2018
10:56:49
Для начала нужен depends на предидущий шаг.
test:
stage: test
dependencies:
- build
В твоём случае билд зависим на пакинг


Edgar
17.06.2018
10:57:14
как решить проблему рассинхронизации данных в микросервисной архитектуре?
существует сервис А с локальной базой данных A' - сервис пользователей
существует сервис B с локальной базой данных B' - сервис аватарок пользователей
бизнес-логика следующая:
- в сервисе A, в бд A', создается новый пользователь
- после успешного создания пользователя, получаем его id
- в сервисе B создаем, в бд B', создаем аватарку, привязывая id пользователя к ней
при хорошем стечении обстоятельств все хорошо. но могут возникать следующие случаи:
1.
- в A -> A' создается запись, получаем id
- запрос в сервис B не состоялся - сервис B возвращает 500 ошибку
2.
- в A -> A' создается запись, получаем id
- делаем запрос в сервис B
- B не может записать данные в B' - база данных остановлена
3.
- в A -> A' создается запись, получаем id
- сервис A аварийно завершил работу, и не успел обратиться в сервис B
по итогу бизнес-логика не завершена полностью. A -> A' содержит пользователя, но в B -> B' для него нет аватарки.
хэндлить эти кейсы, делать очереди. с 3им кейсом без вариков, имхо


Nik
17.06.2018
10:58:10
Пока каждый стейдж он работает с чистым репо. И потому у тебя в билде не правленный индекс

Google

Matvey
17.06.2018
10:58:18
@EdgarSedov спасибо. можно подробный план действий по построению очередей?


Sergey
17.06.2018
10:58:58
как решить проблему рассинхронизации данных в микросервисной архитектуре?
существует сервис А с локальной базой данных A' - сервис пользователей
существует сервис B с локальной базой данных B' - сервис аватарок пользователей
бизнес-логика следующая:
- в сервисе A, в бд A', создается новый пользователь
- после успешного создания пользователя, получаем его id
- в сервисе B создаем, в бд B', создаем аватарку, привязывая id пользователя к ней
при хорошем стечении обстоятельств все хорошо. но могут возникать следующие случаи:
1.
- в A -> A' создается запись, получаем id
- запрос в сервис B не состоялся - сервис B возвращает 500 ошибку
2.
- в A -> A' создается запись, получаем id
- делаем запрос в сервис B
- B не может записать данные в B' - база данных остановлена
3.
- в A -> A' создается запись, получаем id
- сервис A аварийно завершил работу, и не успел обратиться в сервис B
по итогу бизнес-логика не завершена полностью. A -> A' содержит пользователя, но в B -> B' для него нет аватарки.
надо просто сделать чтобы кейсы не возникали)


Matvey
17.06.2018
10:59:39
чаще всего, наверное, такого происходить не будет, но всегда есть риск )

Nik
17.06.2018
10:59:53

Edgar
17.06.2018
10:59:54

Matvey
17.06.2018
11:01:06
@EdgarSedov а если в момент перезапуска задания, в сервисе A пользователя заблокировали, и аватарка ему больше не нужна?

Edgar
17.06.2018
11:01:26
в теории, можешь конечно почекать очередь на невыполненные задания, но это гемор, имхо

Banschikov
17.06.2018
11:02:06

Nik
17.06.2018
11:02:20
Просто контейнер с nginx. Не клади туда индекс
Простого монитоуй ему волюм, на который клади индекс
А то контейнер ради одного файла - оверкилл

Banschikov
17.06.2018
11:03:47

Matvey
17.06.2018
11:05:00
@EdgarSedov не могу придумать каких-то изъянов ) это должно работать, спасибо

Banschikov
17.06.2018
11:05:07

Edgar
17.06.2018
11:06:46

Matvey
17.06.2018
11:08:42
в таком случае должен быть какой-то сбобрщик мусора бесхозных данных. но эти данные могут начать использоваться в других записях еще до выполнения этого сборщика

Edgar
17.06.2018
11:09:02
обычно это хендлится локами

Matvey
17.06.2018
11:09:29
а как это? ) блокировками на уровне бд?

Google

Nik
17.06.2018
11:09:31


Aleksey
17.06.2018
11:09:38
как решить проблему рассинхронизации данных в микросервисной архитектуре?
существует сервис А с локальной базой данных A' - сервис пользователей
существует сервис B с локальной базой данных B' - сервис аватарок пользователей
бизнес-логика следующая:
- в сервисе A, в бд A', создается новый пользователь
- после успешного создания пользователя, получаем его id
- в сервисе B создаем, в бд B', создаем аватарку, привязывая id пользователя к ней
при хорошем стечении обстоятельств все хорошо. но могут возникать следующие случаи:
1.
- в A -> A' создается запись, получаем id
- запрос в сервис B не состоялся - сервис B возвращает 500 ошибку
2.
- в A -> A' создается запись, получаем id
- делаем запрос в сервис B
- B не может записать данные в B' - база данных остановлена
3.
- в A -> A' создается запись, получаем id
- сервис A аварийно завершил работу, и не успел обратиться в сервис B
по итогу бизнес-логика не завершена полностью. A -> A' содержит пользователя, но в B -> B' для него нет аватарки.
https://habr.com/post/413817/ там конешно избыточно но можно подчерпнуть идеи


Matvey
17.06.2018
11:10:01
спасибо, буду читать

Banschikov
17.06.2018
11:21:26

Nik
17.06.2018
11:22:10

Banschikov
17.06.2018
11:22:29

Aleksey
17.06.2018
11:26:31
а скачай артефакт и глянь какой он там

Banschikov
17.06.2018
11:31:13

Aleksey
17.06.2018
11:38:03

Banschikov
17.06.2018
11:38:28

Aleksey
17.06.2018
11:41:13
я думаю вы забываете делать docker pull image
т.к. у вас одинаковое имя образа

Banschikov
17.06.2018
12:09:26

Aleksey
17.06.2018
12:10:46
на той машине где вы проверяйте перед запуском сделайте docker pull
docker кеширует образы и не обновляет пока его явно не попросить об этом

Banschikov
17.06.2018
12:12:47

Aleksey
17.06.2018
12:13:34
и что. я сейчас говорю не про сборку. сборка работает на все 100
https://pastebin.com/EE4XLdwZ 63 строка образ обновился

Google

Aleksey
17.06.2018
12:15:20
192.168.0.30:5000/root/hello-world:master
так как вы проверяйте ? комманду плиз

Banschikov
17.06.2018
12:19:21
https://pastebin.com/EE4XLdwZ 63 строка образ обновился
Вообщем сейчас понял что проблема не с dockerfile.
Тема такая. У меня 2 ветки: Master и Developer
Когда идет пуш в Master, в реджистри по итогу 2 образа заливается. Один с тегом latest. а другой с тегом master. В Developer похожая ситуация, только один образ заливается с тегом developer

it m
17.06.2018
14:50:48
приветствую всех. подскажите, умеет ли MTMproxy работать через другой прокси ? или только iptables извращаться ?