Новые приложения и технологии появляются каждый день; большинство из них не привлекают внимания. Но время от времени происходит что-то, что сотрясает статус-кво и обращает на него все взгляды; ChatGPT, безусловно, берет эту мантию.
Если вы еще не в курсе, ChatGPT — это языковая модель ИИ, разработанная OpenAI. Но что уникально в этом, так это то, что это разговорная языковая модель, предназначенная для ведения разговора в человеческом стиле. Еще одна замечательная особенность ChatGPT заключается в том, что он может выполнять широкий спектр языковых задач. Вы можете попросить его резюмировать статьи, переводить тексты, создавать творческие записи или сообщения в блогах, отвечать на сложные вопросы, которые могут варьироваться от философских до эмоциональных, и даже вопросы по кодированию. Проще говоря, это технология искусственного интеллекта, которую вам нужно попробовать прямо сейчас. И если вы хотите знать, как использовать его на своем iPhone в пути, не ищите дальше.
Начните работу с ChatGPT на iPhone
К сожалению, в App Store нет отдельного приложения для ChatGPT, что ставит многих пользователей в тупик на пути к началу работы с этим чат-ботом с искусственным интеллектом. Но по-прежнему очень легко использовать ChatGPT для iPhone в любом браузере, таком как Safari или Chrome.
Примечание. Если вы не попадаете на страницу аутентификации, а вместо этого получаете сообщение о том, что «ChatGPT сейчас заполнен», единственное, что вы можете сделать, это подождать. OpenAI работает над масштабированием своих систем для ChatGPT из-за высокого спроса, который они испытывают.
Затем нажмите «Зарегистрироваться», если вы впервые используете ChatPT. Если вы являетесь пользователем ChatGPT на рабочем столе, вместо этого коснитесь параметра «Войти» и введите свои учетные данные, чтобы войти в свою учетную запись.
Если вы нажали «Зарегистрироваться», создайте новую учетную запись, введя свой адрес электронной почты и придумав пароль. Вы также можете быстрее создать новую учетную запись, используя свои учетные записи Google или Microsoft.
Если вы ввели адрес электронной почты, откройте папку «Входящие» и подтвердите адрес электронной почты, чтобы продолжить. Затем вам также потребуется подтвердить свой номер телефона, чтобы подтвердить свою личность в целях безопасности. Введите свой номер телефона и полученный код для завершения настройки.
Использование ChatGPT на iPhone
После входа в свою учетную запись использовать ChatGPT очень просто. Нажмите «Далее» в любых подсказках, которые вы видите на веб-сайте, чтобы продолжить. ChatGPT также перечисляет свои возможности, ограничения и примеры вопросов, которые вы можете задать на странице чата. Прочтите их, чтобы лучше понять инструмент ИИ.
Теперь коснитесь текстового поля внизу и введите подсказку. Четко объясните, что вы хотите, чтобы вы могли получить соответствующий ответ с первого раза. Нажмите «Отправить» после ввода запроса.
Затем подождите, пока ChatGPT сгенерирует ответ. Ответ генерируется в режиме реального времени, поэтому вы можете видеть, как он печатается. Пока ChatGPT генерирует свой ответ, вы не можете редактировать запрос или отправить другой запрос. Вам придется либо дождаться завершения ответа, либо закончить ответ в середине. Чтобы остановить ответ в середине, коснитесь флажка справа от текстового поля.
После того, как ответ будет полностью сгенерирован, вы можете поставить ему «Нравится» или «Не нравится», чтобы отправить отзыв команде OpenAI — их основная цель на данном этапе разработки ChatGPT. Если полученный ответ был таким, как вы ожидали, нажмите кнопку «Нравится». В противном случае нажмите кнопку «Не нравится» и сообщите команде OpenAI, каким должен был быть ответ. Конечно, предоставление обратной связи совершенно необязательно и никак не влияет на ваше взаимодействие с чат-ботом.
Если вы хотите, чтобы ИИ дал еще один ответ на заданный вами вопрос, коснитесь значка «Регенерировать», который появляется справа от текстового поля только после того, как он уже сгенерировал ответ. Вы можете использовать этот параметр для повторного создания ответа только для текущей подсказки.
Чтобы отредактировать подсказку, нажмите кнопку «Изменить» рядом с ней.
Вы также можете просмотреть все попытки для одного запроса, сгенерированного ИИ (если вы попросили его сгенерировать несколько ответов).
ChatGPT сохраняет ваши предыдущие разговоры, но всегда начинает новый разговор всякий раз, когда вы перезагружаете или повторно посещаете веб-сайт. Если вы хотите продолжить старый разговор, коснитесь меню-гамбургера в правом верхнем углу экрана.
Затем выберите нужный чат на появившейся панели.
Вы также можете отредактировать название разговора или удалить чат после его открытия. Параметры переименования и удаления появятся рядом с текущим выбранным чатом.
Чтобы начать новый разговор, коснитесь значка «+» в верхнем левом углу.
Так просто использовать ChatGPT. Если вы по какой-либо причине боялись попробовать этого чат-бота с искусственным интеллектом, не делайте этого. Но помните о нескольких вещах при использовании ChatGPT.
Во-первых, набор данных, на котором он обучался, действует только до 2021 года; поэтому он не имеет информации о событиях, произошедших после этого, и может давать устаревшую информацию. Он также может выдавать фактически неверную информацию или иногда быть обманутым, чтобы дать неверную информацию. Более того, хотя OpenAI тщательно обучил ChatGPT не создавать вредоносный или оскорбительный контент, он все же может время от времени создавать его.
Кроме того, использование чат-бота с искусственным интеллектом для создания полных школьных сочинений является неправильным и будет считаться плагиатом; вы можете даже провалить курс, если вас поймают. Поэтому используйте инструмент этично и ответственно. Кроме этого, получайте удовольствие от ChatGPT, пока он не станет бесплатным (вы никогда не знаете, что произойдет в будущем).
ChatGPT покорил мир. Все говорят об этом. И думать, что прошло всего 2 месяца с тех пор, как он был выпущен для публики, ошеломляет; он уже перешагнул порог в 100 миллионов пользователей.
Однако, в дополнение к тому, что чат-бот с искусственным интеллектом на самом деле был блестящим, социальные сети также сыграли роль в этом стремительном взлете. В настоящее время в Интернете нет недостатка в советах (если использовать этот термин легкомысленно), которые побуждают людей использовать ChatGPT. И в спешке, чтобы опробовать этот бесплатный инструмент чат-бота с искусственным интеллектом, который внезапно рекомендует каждый интернет-гуру, люди не остановились, чтобы понять механику модели. Во-первых, большинство людей даже не задавались самым фундаментальным вопросом — как компания использует ваши данные?
Но если вы, наконец, перестали думать об этом и теперь хотите удалить свою учетную запись и данные ChatGPT, процесс будет простым, хотя и не совсем простым. Давайте погрузимся прямо в.
Кто-нибудь может видеть ваши данные ChatGPT?
Прежде чем обратиться к вашей главной проблеме, давайте сначала посмотрим на эту касательную. Кто может видеть ваши данные ChatGPT и что они с ними делают?
ChatGPT — это разговорная модель от OpenAI, которая работает в форме диалогов. Вы даете подсказку чат-боту, и он дает вам ответ в ответ. И все ваши разговоры ChatGPT могут быть просмотрены командой OpenAI. Команда OpenAI просматривает ваши разговоры, чтобы улучшить свои системы. Только просматривая разговоры, они могут убедиться, что контент, который генерирует ChatGPT, соответствует их политикам и требованиям безопасности, что необходимо для обеспечения безопасности их ИИ.
Но это не единственный способ использования ваших разговоров. Инструкторы OpenAI по искусственному интеллекту также могут использовать ваши разговоры для обучения и улучшения своих систем. Вот почему вы никогда не должны раскрывать конфиденциальную информацию во время чата с ChatGPT.
Теперь, если вы хотите удалить свою учетную запись, следуйте инструкциям в следующем разделе.
Удалите свою учетную запись и данные ChatGPT
Прямой возможности удалить вашу учетную запись ChatGPT на веб-сайте нет. Единственный способ удалить вашу учетную запись — связаться с командой OpenAI и отправить запрос на ее удаление. Есть два способа отправить запрос на удаление ваших данных; мы рассмотрим оба.
Примечание. Когда вы удаляете свою учетную запись, этот процесс необратим. Он удалит все данные, связанные с вашей учетной записью. Однако в будущем вы не сможете создать новую учетную запись, используя те же учетные данные.
Удалите свою учетную запись с помощью справочного чата
Вы можете отправить запрос на удаление своей учетной записи из справочного чата OpenAI, перейдя на их веб-сайт. Эти шаги можно выполнить, перейдя на указанный веб-сайт из любого браузера на вашем компьютере или мобильном телефоне. Для этого руководства мы используем наш компьютер, но процесс тот же.
Перейдите на platform.openai.com и войдите в учетную запись OpenAI, которую вы используете для ChatGPT. Важно войти в свою учетную запись, чтобы выполнить следующие шаги для удаления учетной записи.
Затем нажмите «Справка» в правом верхнем углу экрана.
Панель справки OpenAI откроется в правом нижнем углу. Нажмите «Отправить нам сообщение».
Затем выберите «Удаление учетной записи» из вариантов в чате.
Выполните следующие шаги рабочего процесса удаления учетной записи, которые могут потребовать от вас подтверждения вашего запроса. Обратите внимание, что получение ответа из справочного чата может занять некоторое время. Вы можете оставить чат открытым или получать ответы по электронной почте.
После того, как вы выполните эти шаги, ваш запрос будет отправлен, и команда OpenAI удалит вашу учетную запись. Выполнение вашего запроса может занять 1-2 недели.
Удалите свою учетную запись через службу поддержки по электронной почте
Вы также можете отправить запрос на удаление своей учетной записи по электронной почте в службу поддержки OpenAI.
Отправьте электронное письмо deletion@openai.com из учетной записи, которую вы хотите удалить. Тема письма должна быть «Запрос на удаление учетной записи», а в теле письма добавить «Пожалуйста, удалите мою учетную запись».
Ваш запрос на удаление вашей учетной записи будет отправлен и обработан в течение 1-2 недель.
Примечание. Как только вы отправите электронное письмо на адрес deletion@openai.com, ваш запрос будет отправлен, и его нельзя будет отменить ни при каких обстоятельствах. Отправляйте электронное письмо на указанный выше адрес только в том случае, если вы абсолютно уверены, что хотите удалить свою учетную запись.
Удалить разговоры ChatGPT
Вместо того, чтобы удалять всю свою учетную запись, вы также можете удалить свои разговоры ChatGPT. ChatGPT хранит записи всех ваших разговоров с чат-ботом в вашей учетной записи, и вы можете просмотреть их снова или продолжить, когда захотите. Кроме того, вы можете удалить любой разговор, если хотите. Но вы не можете удалить отдельные подсказки из разговора.
Чтобы удалить беседу, перейдите на сайт chat.openai.com и войдите в свою учетную запись.
Затем щелкните разговор, который вы хотите удалить, на левой панели, чтобы открыть его.
Как только вы откроете беседу, в ней появится несколько опций; щелкните значок «Удалить».
Подтвердите, что хотите удалить чат, щелкнув значок «галочка».
Повторите вышеуказанные шаги для других разговоров, которые вы хотите удалить.
Чтобы очистить все разговоры в вашей учетной записи за один раз, нажмите «Очистить разговоры».
ChatGPT может быть захватывающим программным обеспечением, но если вы беспокоитесь о своей конфиденциальности, удаление вашей учетной записи может быть вашим лучшим выбором. К счастью, вашу учетную запись ChatGPT и ее данные легко удалить, несмотря на отсутствие простого варианта.
Большинство из нас уже слышали о ChatGPT и, вероятно, уже испытали его на себе. Но у ChatGPT нет отдельного приложения, и им можно пользоваться, только посетив веб-сайт.
Если вы тот, кто хочет использовать его часто, но каждый раз заходить на веб-сайт утомительно, это руководство научит вас, как установить его на свой компьютер с Windows в качестве приложения. Давайте идти.
Что такое ChatGPT?
Если вы жили под скалой и не знаете, что такое ChatGPT, мы вас поддержим. Chat GPT — это модель обработки языка на основе ИИ, разработанная OpenAI. Хотя вы, возможно, уже слышали о его возможностях, для непосвященных ChatGPT может так хорошо общаться с пользователями, что может быть трудно понять, что ответ исходит не от человека.
Наряду с этим ChatGPT может собирать все переданные ему данные и составлять эссе, вести блог или даже писать для вас код на выбранную вами тему. Хотя это не первая крупная модель обработки языка в мире, она определенно первая с интерфейсом, который позволяет публике опробовать ее.
Помимо технических вещей, ChatGPT может помочь вам по-разному. Вы можете попросить его объяснить выбранную вами тему более простым языком, резюмировать абзац текста или даже спросить, какой лучший подарок для ваших близких и родных.
Теперь, когда вы знакомы с ChatGPT, давайте перейдем к его установке в виде приложения на ваш компьютер. Кроме того, для вашего удобства мы будем демонстрировать инструкции для Google Chrome и Microsoft Edge.
Установите ChatGPT с помощью Google Chrome
Поскольку ChatGPT не имеет официального отдельного приложения и доступен только через веб-сайт, обходным путем является создание ярлыка на рабочем столе, который будет действовать как приложение.
Сначала зайдите на сайт chat.openai.com с помощью Google Chrome. Затем щелкните значок «кебаб» в правом верхнем углу и наведите указатель мыши на параметр «Дополнительные инструменты». Затем нажмите «Создать ярлык».
В окне наложения введите ChatGPT в текстовое поле, а затем установите флажок перед параметром «Открыть как окно», чтобы всегда открывать ChatGPT в новом окне. Затем нажмите на кнопку «Создать».
Затем вы можете найти ярлык ChatGPT прямо на рабочем столе. Дважды щелкните по нему всякий раз, когда вы хотите его использовать.
При запуске ChatGPT откроется в отдельном окне.
Установите ChatGPT с помощью Microsoft Edge
Процесс более или менее похож на процесс Google Chrome, однако есть некоторые изменения в пользовательском интерфейсе, а также некоторые дополнительные параметры для вашего удобства.
Сначала зайдите на сайт chat.openai.com, используя Microsoft Edge на своем ПК. Затем нажмите на значок с многоточием в правом верхнем углу. После этого наведите указатель мыши на раздел «Приложения» и нажмите «Установить этот сайт как приложение». На экране появится окно наложения.
Теперь введите ChatGPTтекстовое поле и нажмите кнопку «Установить».
После установки приложение отобразится в новом окне Microsoft Edge. Затем у вас будет возможность закрепить приложение на панели задач, в меню «Пуск» или создать ярлык на рабочем столе. Установите флажок рядом с тем вариантом, который кажется вам наиболее подходящим. В дополнение к этому вы также можете запустить ChatGPT, как только вы войдете в свою учетную запись пользователя. После этого нажмите кнопку «Разрешить», чтобы сохранить изменения.
Вот и все, вы успешно установили чат GPT на свой ПК с Windows 11.
ChatGPT все еще находится в зачаточном состоянии, и чем больше данных он собирает, тем совершеннее и эффективнее он будет становиться. В наши дни имеет смысл работать только вместе с технологическими достижениями, а не против них.
ChatGPT расшифровывается как Chat Generative Pretrained Transformer. Это чат-бот на основе искусственного интеллекта, способный вести человеческую беседу. Хотя основная функция модели — имитировать собеседника, ChatGPT — это гораздо больше. На момент написания этой статьи ChatGPT мог не только писать эссе и блоги, но также писать стихи и тексты песен. В дополнение к этому, он также может отлаживать и писать для вас компьютерные программы.
Большинство из нас уже знают об этих подвигах ИИ и любят возиться с ним. Однако, поскольку единственный способ получить к нему доступ — через веб-сайт, доступ к нему на ходу может показаться немного громоздким. К счастью, вы можете установить ChatGPT как приложение на главном экране вашего iPhone и получить к нему доступ простым касанием пальца. Более того, вам даже не нужно устанавливать стороннее приложение на свой iPhone, поскольку Safari может сделать это за вас.
Установите ChatGPT на iPhone с помощью Safari
Поскольку ChatGPT не предлагает отдельного приложения, вы можете создать ярлык Safari прямо на главном экране. Сначала зайдите на сайт chat.openai.com/chat, используя Safari на своем iPhone. Затем войдите в систему/зарегистрируйтесь, если это необходимо.
Когда веб-сайт загрузится, нажмите на значок «Поделиться» внизу.
После этого найдите и нажмите кнопку «Добавить на главный экран» в меню параметров.
После этого введите «ChatGPT» в поле для имени, а затем нажмите кнопку «Добавить».
Теперь вы сможете просматривать приложение ChatGPT на главном экране. Однако помните, поскольку веб-сайт не предназначен для работы в качестве отдельного приложения, он откроется как новая вкладка в Safari.
Если вам нужно использовать ChatGPT довольно часто в пути, установка его на главном экране вашего iPhone действительно может помочь вам избежать хлопот, связанных с вводом адреса каждый раз, когда вы хотите использовать чат-бота.
Процессы разработки веб-приложений со временем усложняются, и девопсам труднее разбираться в их нюансах. Кроме того, девопсы, помимо фронта, занимаются и бэкендом, и кучей других задач, которые решать могут только они.
Мне кажется, это хорошая идея — разобраться, как ваше приложение будет автоматически собираться и деплоиться. Тем более сейчас (на самом деле всегда) тренд на T-shaped people — спецов в своей области, которые немного разбираются в смежных.
Что такое CI/CD
Для начала небольшой ликбез. CI/CD расшифровывается как Continuous Integration и Continuous Delivery aka Deployment — то есть непрерывная интеграция и непрерывная доставка. Зачем это нужно?
Чаще всего конечная цель разработки — приложение. Чтобы им пользоваться, люди должны получить к нему доступ: либо скачать из стора и установит. Если это сайт — вбить в адресную строку URL и открыть страничку. Чтобы мобильное приложение попало в стор, его нужно туда загрузить. В случае с сайтами нужно загрузить наши HTML/JS/CSS-файлы.
Вроде бы все просто. Но загружать файлы вручную как минимум неудобно:
Нужно находиться за компьютером, на котором эти файлы есть.
Когда файлы загружает человек, он может забыть что-то выгрузить или выгрузить что-то не то.
Процесс неплохо бы автоматизировать — это и есть деплоймент, желтая петля на картинке. В статье я упомяну именно деплой- и релиз-шаги. Более продвинутые темы оперирования и мониторинга не трогаю: не хочется совсем уж отнимать хлеб у девопсов 🙂
Голубая петля, CI, — это то, что мы делаем после того, как доработали новый функционал, и перед тем, как он пойдет в деплой, чтобы стать доступным пользователям.
Что входит в CI
линтеры;
тесты;
подготовка продакшен-билда.
Линтеры
Зачем
Линтеры — это статические анализаторы кода, которые его проверяют, не запуская. Они позволяют сократить время на код-ревью и избавить разработчиков от рутинных задач: проверки стилистики кода (пробелы, точки с запятыми и длина строки); поиска проблем и потенциальных багов: неиспользованные фрагменты кода, заведомо опасные или переусложненные конструкции.
Как
ESLlint — де-факто стандартный линтер для JavaScript.
TSLint — был основным линтером для TypeScript, однако разработчики отказываются от его поддержки в пользу ESLint.
Prettier — не совсем линтер, скорее, форматтер, который следит за единой стилистикой кода; без проблем интегрируется с ESLint и TSLint.
stylelint — линтер для CSS и самых популярных его диалектов (SASS, LESS), для которых у него есть плагины.
Тесты
Зачем
Перед тем как деплоить приложение, или даже строже: перед тем как вливать его в мастер, мы хотим убедиться в его стабильности. Мы хотим знать, что приложение не сломается после запуска и что основные сценарии использования работают. И мы хотим делать это автоматически.
Как
Jest, Mocha, Jasmine — фреймворки для организации и запуска тестов; в последнее время наиболее популярен Jest, так как он идет из коробки с Create React App.
Testing Library, Enzyme — утилиты, в первую очередь нацеленные на тестирование веб-приложений (рендеринг, симуляция кликов и т. п.).
selenium-webdriver, Cypress — инструменты для тестирования end-to-end, то есть когда будет действительно запускаться браузер и туда будут отправляться команды, эмулирующие действия пользователя (клики, нажатия клавиш и т. п.).
Подготовка продакшен-сборки
Что и зачем
Сборка — это преобразование исходных файлов так, чтобы их можно было раздавать сервером как веб-сайт (то есть как набор HTML-/JS-/CSS-файлов, которые понимает браузер), публиковать в менеджере пакетов (если вы пишете библиотеку, фреймворк или утилиту), использовать как расширения для браузера, приложение на Electron и др.
В процессе разработки и в продакшене приложение запускается и работает по-разному. И характеристики нам важны разные. В процессе разработки мы хотим, чтобы приложение быстро пересобиралось и мы видели обновленный результат. При этом не важно, сколько оно весит, ведь оно раздается с локальной машины. В продакшене нам не важно (в разумных пределах, конечно), сколько времени приложение собирается, ведь мы его собираем один раз и потом просто раздаем сервером.
Условно продакшен-сборка состоит из таких процессов:
Разрешение импортов. Браузеры начали понимать модульность только недавно, и то до сих пор не все. Необходимо разобраться, в каком порядке запускать скрипты и как передавать результаты их исполнения другим скриптам.
Минификация и обфускация. Собранный код весит меньше, чем исходники, и его сложнее анализировать. Этим мы усложняем реверс-инжиниринг.
Вшивание переменных окружения. Одно и то же приложение может работать в разных средах. Простейший пример — на тестовом сервере и на продакшене: в этом случае необходимо сбилдить приложения два раза, один раз — когда в окружении задан адрес апи тестового сервера, второй раз — продакшен-сервера.
Как
webpack, Parcel, Rollup, SystemJS, gulp, Grunt — основные сборщики приложений, которые решают большинство упомянутых задач.
Dotenv, dotenv-cli — npm-пакеты, которые упрощают работу с переменными окружения, особенно при разработке.
Дополнительно
Очень полезно после билда и перед деплоем создавать файл version.json. Этот файл будет содержать информацию о версии приложения, о времени билда, фрагмент хеша коммита, из которого приложение было собрано.
Храните этот файл таким образом, чтобы он был легко доступен рядом с веб-приложением. Например, по адресу: https://your-site.com/version.json.
Такое простое действие поможет вам и другим членам команды (в первую очередь тестировщикам) быстро определять версию приложения, которая запущена в данном окружении, и отслеживать деплои.
Итог. Npm Scripts
Все эти процессы — это integration из CI, но пока что не очень continuous. Чтобы их автоматизировать, необходимо потратить время (один раз) и сконфигурировать их так, чтобы они запускались одной командой в командной строке.
Для этого отлично подходят npm-скрипты. В итоге все 3 предыдущих процесса можно свести к запуску трех команд, который будет похож на что-то вроде:
npm run lint
npm run test
npm run build
Таким образом, мы получаем несколько простых команд, которые можно запускать для каждой новой версии приложения, чтобы отлавливать проблемы и ошибки заранее и автоматически.
Бонус. Git Hooks
Зачем
Чтобы не забывать запускать линтеры и тесты. Их запуск можно автоматизировать с помощью Git Hooks, то есть линтеры и тесты будут запускаться, например, перед каждым коммитом.
Как
Husky — позволяет привязывать npm-скрипты к Git Hooks внутри package.json.
lint-staged — позволяет запускать линтеры только для тех файлов, которые подготовлены для коммита.
Что входит в CD
версионирование и релиз;
деплоймент.
Версионирование и релиз
Зачем
Версионирование решает большое количество проблем: и при разработке библиотек и фреймворков, и связанных с совместимостями. Сфокусируемся на проблемах, возникающих при разработке приложений для конечных пользователей. Их помогают решить:
Маркеры стабильных ревизий. Упрощают поиск последней стабильной ревизии при необходимости откатить версию приложения (если, например, критический баг попал в продакшен).
Именования для коммуникации. У вас появляется возможность обсуждать заливки, не называя их «то, где мы добавили профиль» или «то, где мы пофиксили регистрацию», а используя номера версий — емкие и однозначные, писать более точные ченжлоги, более эффективно исследовать и воспроизводить баги.
Как
Semantic Versioning — методология для формирования номера версии. Одна из многих, но именно эта используется для версионирования npm-пакетов (ее удобно совмещать с версией в package.json).
Npm version, yarn version — команды, которые увеличивают версию вашего приложения. Они автоматически меняют версию в package.json, делают коммит с соответствующим сообщением и ставят тег, в котором будет имя новой версии.
Деплоймент
Деплоймент — это доставка и выгрузка файлов в место, откуда они будут раздаваться. То, как происходит деплой в значительной мере зависит от того, как именно хостится ваше приложение. Это может быть один из многих вариантов, например: AWS S3 Bucket / AWS CloudFront / другой сервис AWS, коих множество, Heroku/Dokku, VPS/VPH.
Зачем
Очевидно, что если мы не выгрузим наше приложение на сервера, откуда оно будет хоститься, люди не смогут им пользоваться. Процесс нужно автоматизировать: один раз потратить время на написание скрипта, чтобы сэкономить большое количество времени и нервов, а также снизить риск, связанный с человеческим фактором.
Как
Деплоймент — это просто выгрузка файлов на другой сервер. Разница лишь в протоколе, по которому она будет происходить:
SSH — с некоторыми оговорками можно представить как пуш в некий удаленный (в смысле находящийся далеко) репозиторий.
HTTP — простой и знакомый фронтендерам способ, когда каждый файл отправляется в теле соответствующего HTTP-запроса.
FTP — самый старый из перечисленных протоколов, для которого можно найти клиент на Node.js, но, возможно, придется попотеть, настраивая его.
Операция выгрузки файлов может быть свернута до единого npm script, который будет запускать файл Node.js. Большинство API работают на Node.js (к примеру AWS).
Итог
По аналогии с CI мы получим несколько простых npm-скриптов, которые позволят запускать более сложные и ответственные процессы.
Пайплайны
Если переводить слово pipeline с английского в контексте computer science, одним из переводов будет «конвейер». И это слово хорошо описывает ситуацию.
Зачем
Если взять упрощенную аналогию с машиной, то сначала нам нужно собрать двигатель, ходовую из колес и осей. После соединить их вместе, чтобы двигатель крутил колеса. Затем на все это сверху повесить корпус, чтобы водитель не мог под дождем. А в конце покрасить, чтобы было красиво 🙂
Существуют взаимозависимости и порядок процессов. Например, нет смысла деплоить приложение, если тесты упали. Упрощенно конвейер для нашего приложения выглядит так: линтинг и тесты — версионирование — билд — деплой.
Именно здесь вступают в дело пайплайны — как инструмент, который описывает и запускает конвейер для процессов CI/CD.
Почти все, что я привел в списке, — это хостинги репозиториев, кроме Jenkins’а (который я добавил для полноты картины, чтобы было ясно, что такие инструменты не обязательно являются частью хостинга репозиториев).
Далее я приведу несколько примеров, как это выглядит в GitLab Pipelines. Для примеров я взял именно GitLab по нескольким причинам. У меня есть опыт плотной работы с этим сервисом. Бесплатный аккаунт на GitLab предоставляет хороший пакет, связанный с пайплайнами, которого с головой хватит, чтобы потренироваться на пет-проекте. То же относится к standalone GitLab-серверу. Также он дает общее понимание, как настраиваются пайплайны. Лично мне было нетрудно по аналогии с GitLab разобраться с тем, что предлагали Bitbucket Pipelines.
GitLab CI/CD
Как это выглядит. Для каждого запушенного коммита запускается пайплайн. Ниже можно увидеть список пайплайнов, которые запускались для разных коммитов.
Рис. 1. Успешно завершенные пайплайны
Пайплайн состоит из шагов (steps). Степы, в свою очередь, состоят из задач (jobs). Ниже можно увидеть развернутую структуру пайплайна. Колонки Setup, Code_quality и далее — это steps. Каждый блок с зеленой иконкой — это отдельная job.
Рис. 2. Декомпозиция пайплайна
Если одна из джоб падает, пайплайн останавливается. В этот момент ясно видна выгода от связки хостинг-репозитория и пайплайна: если для последнего коммита в мерж-реквесте упал пайплайн, смержить такой реквест не удастся. Это не допустит попадания в стабильные ветки кода, который, например, не проходит проверку линтеров или тестов.
Рис. 3. Пайплайн, завершившийся неудачей, так как линтеры упали
.gitlab-ci.yml
Как это настраивать. Пайплайн описывается в файле .gitlab-ci.yml, который должен лежать в корневой папке репозитория.
Я остановлюсь лишь на базовых примерах, а полную документацию вы сможете найти здесь.
image — указывает, в каком докер-контейнере должен запускаться пайплайн. Если очень коротко, докер — это технология, позволяющая получить предсказуемую среду выполнения. В данном случае мы хотим запускаться в условном Linux, на котором установлена 8-я версия Node.js.
variables — позволяет явно определить переменные окружения во время работы пайплайна. В нашем примере берем встроенную переменную, которая содержит имя энвайронмента, для которого работает пайплайн, и переприсвает его в переменную, которая будет доступна внутри упакованного приложения. В данном случае это делалось для интеграции с системой трекинга ошибок — Sentry.
stages — описывает очередность выполнения задач. Ставим зависимости, линтим скрипты и стили, потом тестируем, после чего уже можем деплоить. Выглядит это как массив строчных значений, которые используются для маркировки задач. Эти же стадии изображены на рис. 2.
jobs — далее от корня указываются названия задач и потом вглубь — их описание. Ключевыми параметрами джобы выступают стейджи, то есть привязки конкретной джобы к стейджу. Это определяет, после каких джоб она будет исполнена.
script — набор команд, которые будут выполнены в процессе работы джобы. Для dependencies installation мы видим, что это всего одна команда — yarn — c аргументами, которые говорят не качать лишнего, если оно есть в кеше.
Подобным образом это работает с линтом скриптов и стилей. Обратите внимание, что и скрипты, и стили привязаны к одному стейджу. Это значит, что по возможности они будут идти параллельно.
only и exlude позволяют определить, когда джоба должна работать, а когда нет. Например, мы видим, что линтинг скриптов происходит только при изменениях в рамках .ts- и .tsx-файлов, CSS- и SCSS-стилей.
Таким же образом можно сделать джобу деплоя доступной только для мастер-ветки.
Версионирование
Версионирование — одна из путающих задач при построении пайплайна. Пайплайн запускается на одном из коммитов, а версионирование само по себе провоцирует создание нового коммита, в котором будет изменена версия package.json и проставлен новый тег. Нам придется запушить в репозиторий из пайплайна и, таким образом, один пайплайн спровоцирует другой пайплайн.
Этот фрагмент уже более сложный. Здесь описаны две аналогичные джобы: для инкремента минорной и патч-версий соответственно. Скрипт описывает операции, которые позволят пушить из пайплайна в свой же репозиторий:
Добавление приватного SSH-ключа, который хранится в переменных окружения и который имеет доступ для пуша в репозиторий.
Добавление хоста репозитория в список известных хостов.
Конфигурация гит-пользователя с именем и электронной почтой, что также необходимо, чтобы иметь возможность коммитить и пушить.
Чтобы не копировать этот фрагмент для минорной и патч-версий, здесь используется фича YAML-файлов, которая называется YAML anchor. Благодаря подобным фичам YAML-файлы становятся лучшим форматом для описания конфигураций.
Деплоймент и переменные окружения
Рис. 4. Веб-интерфейс гитлаба для управления окружениями
На рис. 4 показан веб-интерфейс гитлаба для создания и редактирования деплоймент-окружений. После того как они созданы здесь, их можно использовать в .gitlab-ci.yaml.
Ниже приведен фрагмент конфигурации деплоймента на примере выгрузки результатов билда в AWS S3 Bucket. Здесь также использован YAML anchor для исключения дублирования кода.
Обратите внимание, как используются переменные окружения. Команды yarn run build и yarn run deploy используют имена переменных без постфиксов, которые определяются на уровне конкретной джобы из значений, находящихся в переменных с постфиксами.
Рис. 5. Веб-интерфейс гитлаба для управления переменными окружения
На рис. 5 показан веб-интерфейс, в котором можно описать переменные окружения. Они будут доступны внутри пайплайна, когда он запустится. Тут можно определить адреса апи бэкенда, ключи апи для сервисов, которые вы используете: например, Google API key, SSH-ключи для версионирования и другие данные, коммитить которые небезопасно.
Заключение
Даже при рассмотрении CI/CD в рамках специфики фронтенда обнаруживается много деталей и нюансов. Файл конфигурации пайплайнов из моего примера — рабочий, вы можете использовать его для своих проектов, подставив соответствующие npm- или yarn-скрипты. Надеюсь, эта статья станет отправной точкой для дискуссий и погружения в тему.
Lynis: программное обеспечение для аудита безопасности в Linux, macOS и UNIX.
В сообщении, непосредственно предшествовавшем этому, мы рассмотрели руководство по техническим деталям, установке и использованию команда аудита, более известный как Фреймворк аудита Linux (фреймворк аудита Linux). Который, как следует из его названия, обеспечивает Система аудита, совместимая с CAPP, который способен надежно собирать информацию о любом связанном с безопасностью (или нет) событии в операционной системе Linux.
По этой причине мы увидели, что сегодня уместно и уместно обратиться к аналогичному программному обеспечению, гораздо более полному, продвинутому и практичному, называемому «Лынис». который также является программное обеспечение для аудита безопасности, бесплатный, открытый и бесплатный, и служит тому же и даже больше, как мы увидим ниже.