Как установить и настроить GoCD на CentOS 7

GoCD - это система непрерывной доставки и автоматизации с открытым исходным кодом. Это позволяет моделировать сложные рабочие процессы, используя его параллельное и последовательное выполнение. Его карта потока создания ценности позволяет легко визуализировать сложный рабочий процесс. GoCD позволяет легко сравнивать две сборки и развертывать любую версию приложения, которую вы хотите. Экосистема GoCD состоит из сервера GoCD и агента GoCD. GoCD отвечает за управление всем, таким как запуск веб-интерфейса пользователя, а также управление и предоставление заданий агенту. Go агенты отвечают за выполнение заданий и развертываний.

Предпосылки

  • Экземпляр сервера Vultr CentOS 7 с ОЗУ не менее 1 ГБ.
  • Пользователь Sudo .
  • Доменное имя указывает на сервер.

В этом руководстве мы будем использовать 192.168.1.1в качестве общедоступного IP-адреса и в gocd.example.comкачестве имени домена, указывающего на экземпляр Vultr. Обязательно замените все вхождения примера доменного имени и IP-адреса фактическим.

Обновите базовую систему, используя руководство Как обновить CentOS 7 . После обновления системы перейдите к установке Java.

Установить Java

GoCD требует Java версии 8 и поддерживает Oracle Java и OpenJDK. В этом уроке мы будем устанавливать Java 8 из OpenJDK.

OpenJDK может быть легко установлен, так как пакет доступен в YUMрепозитории по умолчанию .

sudo yum -y install java-1.8.0-openjdk-devel

Если Java установлена ​​правильно, вы сможете проверить ее версию.

java -version

Вы получите вывод, аналогичный следующему тексту.

[user@vultr ~]$ java -version
openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)

Прежде чем мы продолжим, нам нужно будет установить переменные среды JAVA_HOMEи JRE_HOME. Найдите абсолютный путь к исполняемому файлу Java в вашей системе.

readlink -f $(which java)

Следующий текст будет выведен на ваш терминал.

[user@vultr ~]$ readlink -f $(which java)
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-5.b12.el7_4.x86_64/jre/bin/java

Теперь установите переменные среды JAVA_HOMEи в JRE_HOMEсоответствии с путем к каталогу Java.

echo "export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-5.b12.el7_4.x86_64" >> ~/.bash_profile
echo "export JRE_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-5.b12.el7_4.x86_64/jre" >> ~/.bash_profile

Примечание. Убедитесь, что вы используете путь Java, полученный в вашей системе. Путь, используемый в этом руководстве, может измениться, когда выйдет новая версия Java 8.

Запустите bash_profileфайл.

source ~/.bash_profile

Теперь вы можете запустить echo $JAVA_HOMEкоманду, чтобы убедиться, что установлена ​​переменная окружения.

[user@vultr ~]$ echo $JAVA_HOME
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64

Установить GoCD

GoCD написан на Java, поэтому Java является единственной зависимостью для запуска GoCD. GoCD может быть установлен с помощью YUM. Установите его официальный репозиторий в систему.

sudo curl https://download.gocd.org/gocd.repo -o /etc/yum.repos.d/gocd.repo

Установите сервер GoCD в вашей системе.

sudo yum install -y go-server

Запустите GoCD и включите его для автоматического запуска во время загрузки.

sudo systemctl start go-server
sudo systemctl enable go-server

Прежде чем мы получим доступ к панели инструментов GoCD, давайте создадим новый каталог для хранения артефактов. Артефакты могут храниться на том же диске, на котором установлена ​​операционная система и приложения. Кроме того, вы можете использовать выделенный диск или блочный накопитель для хранения артефактов.

Если вы хотите использовать один и тот же диск для хранения артефактов, просто создайте новый каталог и предоставьте право собственности пользователю GoCD.

sudo mkdir /opt/artifacts
sudo chown -R go:go /opt/artifacts

Настроить блочное хранилище

Программное обеспечение GoCD рекомендует использовать дополнительный раздел или диск для хранения артефактов. В платформе непрерывной интеграции и доставки артефакты создаются очень часто. Дисковое пространство уменьшается со временем, когда постоянно создаются новые артефакты. На каком-то этапе ваша система исчерпает свободное место на диске, и службы, работающие в вашей системе, не будут работать. Чтобы преодолеть эту проблему, вы можете подключить новый блочный накопитель Vultr для хранения артефактов. Если вы по-прежнему хотите хранить артефакты на том же диске, перейдите к разделу «Настройка брандмауэра».

Разверните новый блочный накопитель и подключите его к экземпляру сервера GoCD. Теперь создайте новый раздел на блочном устройстве хранения.

sudo parted -s /dev/vdb mklabel gpt
sudo parted -s /dev/vdb unit mib mkpart primary 0% 100%

Создайте файловую систему на новом диске.

sudo mkfs.ext4 /dev/vdb1

Смонтируйте блочный накопитель.

sudo mkdir /mnt/artifacts
sudo cp /etc/fstab /etc/fstab.backup
echo "
/dev/vdb1 /mnt/artifacts ext4 defaults,noatime 0 0" | sudo tee -a /etc/fstab
sudo mount /mnt/artifacts

Теперь запустите df, и вы увидите новый накопитель блочного хранилища /mnt/artifacts.

[user@vultr ~]$ df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/vda1       20616252 6313892  13237464  33% /

...
/dev/vdb1       10188052   36888   9610596   1% /mnt/artifacts

Предоставьте право собственности на каталог пользователю GoCD.

sudo chown -R go:go /mnt/artifacts

Настройка брандмауэра

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

sudo firewall-cmd --zone=public --add-port=8153/tcp --permanent
sudo firewall-cmd --zone=public --add-port=8154/tcp --permanent
sudo firewall-cmd --reload

Теперь вы можете получить доступ к панели инструментов GoCD http://192.168.1.1:8153. Чтобы получить доступ к панели мониторинга GoCD по защищенному соединению, войдите в систему https://192.168.1.1:8154. Вы получите сообщение об ошибке, показывающее, что сертификаты недействительны. Вы можете спокойно игнорировать ошибку, так как сертификаты являются самозаверяющими. В целях безопасности вы всегда должны использовать панель мониторинга по защищенному соединению.

Перед настройкой нового конвейера перейдите к « Admin >> Server Configuration» из верхней панели навигации.

Введите URL-адрес вашего незащищенного сайта в поле « Site URL» и защищенный сайт в поле « Secure Site URL».

Как установить и настроить GoCD на CentOS 7

Затем предоставьте данные вашего SMTP-сервера для отправки уведомлений по электронной почте с GoCD.

Как установить и настроить GoCD на CentOS 7

Наконец, укажите путь к месту, где вы хотите хранить артефакты. Если вы решили сохранить артефакты на том же диске, что и операционная система, введите /opt/artifacts; если вы решили прикрепить блочный накопитель, то можете войти /mnt/artifacts.

Кроме того, вы можете настроить GoCD для автоматического удаления старых артефактов. Настройте следующую опцию в соответствии с размером вашего диска. Однако опция автоудаления не создает резервную копию ваших старых артефактов. Чтобы вручную создать резервную копию и затем удалить старые артефакты, отключите автоматическое удаление, выбрав параметр « Never» для параметра « Auto delete old artifacts».

Как установить и настроить GoCD на CentOS 7

Вам нужно будет перезапустить сервер GoCD, чтобы новые изменения вступили в силу.

sudo systemctl restart go-server

Настройка аутентификации

По умолчанию панель мониторинга GoCD не настроена на использование любого типа аутентификации, но она поддерживает аутентификацию с использованием файла пароля и LDAP. В этом уроке мы настроим аутентификацию на основе пароля.

Примечание . Настройка аутентификации - необязательный шаг, но он настоятельно рекомендуется для общедоступных серверов, таких как Vultr.

Установите инструменты Apache, чтобы мы могли использовать htpasswdкоманду для создания зашифрованного файла паролей.

sudo yum -y install httpd-tools

Создайте файл паролей с помощью htpasswdкоманды, используя шифрование Bcrypt.

sudo htpasswd -B -c /etc/go/passwd_auth goadmin

Введите пароль для пользователя дважды. Вы увидите следующий вывод.

[user@vultr ~]$ sudo htpasswd -B -c /etc/go/passwd_auth goadmin
New password:
Re-type new password:
Adding password for user goadmin

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

sudo htpasswd -B /etc/go/passwd_auth gouser1

С тех пор, как мы создали файл паролей, снова откройте панель инструментов GoCD. Перейдите к « Admin >> Security >> Authorization Configurations» из верхней панели навигации. Нажмите на Addкнопку и введите идентификатор. Выберите « Password File Authentication Plugin for GoCD» для идентификатора плагина и укажите путь к файлу паролей. Теперь нажмите кнопку « Check Connection», чтобы убедиться, что GoCD может использовать файл паролей для аутентификации.

Как установить и настроить GoCD на CentOS 7

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

Вам нужно будет продвинуть пользователя-администратора вручную, в противном случае все пользователи будут иметь права администратора. Перейдите к « Admin >> User Summary» из верхней панели навигации.

Теперь выберите администратора, которого вы создали, и нажмите « Roles». Продвиньте пользователя до единственного администратора, установив Go System Administratorфлажок « ».

Как установить и настроить GoCD на CentOS 7

Чтобы добавить пользователей в GoCD, созданных в файле паролей, нажмите кнопку « ADD» и найдите пользователя, чтобы добавить их. Пользователи также автоматически добавляются в панель управления GoCD при первом входе в систему. Очевидно, что для входа в систему пользователи должны быть добавлены в файл паролей, который мы создали ранее.

Защита GoCD с помощью Let's Encrypt SSL

По умолчанию GoCD прослушивает порты 8153и 8154защищенные соединения. Хотя порт 8154обеспечивает безопасное соединение с приложением, он также отображает ошибки браузера, поскольку использует самозаверяющий сертификат. В этом разделе руководства мы установим и защитим Nginx с помощью бесплатного SSL-сертификата Let's Encrypt. Веб-сервер Nginx будет работать в качестве обратного прокси-сервера для пересылки входящих запросов в конечную HTTPточку GoCD .

Установите Nginx.

sudo yum -y install nginx

Запустите Nginx и включите его автоматический запуск во время загрузки.

sudo systemctl start nginx
sudo systemctl enable nginx

Установите Certbot, который является клиентским приложением для Let's Encrypt CA.

sudo yum -y install certbot

Прежде чем вы сможете запросить сертификаты, вам нужно будет разрешить порты 80и / 443или стандартные HTTPи HTTPSсервисы через брандмауэр. Также удалите порт 8153, который прослушивает незащищенные соединения.

sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --zone=public --remove-port=8153/tcp --permanent
sudo firewall-cmd --reload

Примечание . Чтобы получить сертификаты от Let's Encrypt CA, домен, для которого должны быть созданы сертификаты, должен быть направлен на сервер. Если нет, внесите необходимые изменения в записи DNS домена и дождитесь распространения DNS, прежде чем снова делать запрос сертификата. Certbot проверяет полномочия домена перед предоставлением сертификатов.

Создайте сертификаты SSL.

sudo certbot certonly --webroot -w /usr/share/nginx/html -d gocd.example.com

Сгенерированные сертификаты, вероятно, будут храниться в /etc/letsencrypt/live/gocd.example.com/. Сертификат SSL будет сохранен как, fullchain.pemа закрытый ключ - как privkey.pem.

Срок действия сертификатов Let's Encrypt истекает через 90 дней, поэтому рекомендуется настроить автоматическое обновление сертификатов с помощью заданий cron.

Откройте файл задания cron.

sudo crontab -e

Добавьте следующую строку в конец файла.

30 5 * * * /usr/bin/certbot renew --quiet

Вышеуказанная работа cron будет выполняться каждый день в 5:30. Если срок действия сертификата истекает, он будет автоматически продлен.

Теперь измените файл конфигурации Nginx по умолчанию, чтобы убрать default_serverстроку.

sudo sed -i 's/default_server//g' /etc/nginx/nginx.conf

Создайте новый файл конфигурации для веб-интерфейса GoCD.

sudo nano /etc/nginx/conf.d/gocd.conf

Заполните файл.

upstream gocd {
server 127.0.0.1:8153;
}

server {
    listen 80 default_server;
    server_name gocd.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 default_server;
    server_name gocd.example.com;

    ssl_certificate           /etc/letsencrypt/live/gocd.example.com/fullchain.pem;
    ssl_certificate_key       /etc/letsencrypt/live/gocd.example.com/privkey.pem;

    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    access_log  /var/log/nginx/gocd.access.log;

location / {
        proxy_pass http://gocd;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;
        proxy_redirect off;
    }
location /go {
    proxy_pass http://gocd/go;
    proxy_http_version 1.1;
    proxy_set_header Upgrade websocket;
    proxy_set_header Connection upgrade;
    proxy_read_timeout 86400;
    }
  }

Проверьте на наличие ошибок в новом файле конфигурации.

sudo nginx -t

Если вы видите следующий вывод, конфигурация без ошибок.

[user@vultr ~]$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Если вы получили какую-то ошибку, не забудьте дважды проверить путь к сертификатам SSL. Перезапустите веб-сервер Nginx, чтобы внести изменения в конфигурацию.

sudo systemctl restart nginx

Теперь вы можете получить доступ к панели инструментов GoCD по адресу https://gocd.example.com. Войдите в свою панель управления, используя учетные данные администратора, и перейдите к « Admin >> Server Configuration» на верхней панели навигации.

Как установить и настроить GoCD на CentOS 7

Установите " Site URL" и " Secure Site URL" в https://gocd.example.com. Порт по- 8154прежнему должен быть доступен через брандмауэр, чтобы удаленные агенты могли подключаться к серверу через порт 8154, если они не могут подключиться через стандартный HTTPпорт.

Установка агента GoCD

В среде непрерывной интеграции GoCD агенты GoCD - это рабочие, которые отвечают за выполнение всех задач. При обнаружении изменения в источнике запускается конвейер, и задания назначаются доступным работникам для выполнения. Затем агент выполняет задачу и сообщает об окончательном статусе после выполнения.

Для запуска конвейера должен быть настроен хотя бы один агент. Продолжите установку агента GoCD на сервере GoCD.

Поскольку мы уже импортировали репозиторий GoCD на сервер, мы можем напрямую установить Go Agent.

sudo yum install -y go-agent

Теперь запустите сервер GoCD и включите его автоматический запуск во время загрузки.

sudo systemctl start go-agent
sudo systemctl enable go-agent

Агент GoCD, работающий на локальном хосте, автоматически включается при обнаружении.



Leave a Comment

Как установить Anchor CMS на CentOS 7 LAMP VPS

Как установить Anchor CMS на CentOS 7 LAMP VPS

Используете другую систему? Anchor CMS - это сверхпростая и чрезвычайно легкая бесплатная система управления контентом (CMS) с открытым исходным кодом.

Как обновить CentOS 7, Ubuntu 16.04 и Debian 8

Как обновить CentOS 7, Ubuntu 16.04 и Debian 8

При настройке нового сервера Linux рекомендуется обновить ядро ​​системы и другие пакеты до последней стабильной версии. В этой статье

Как установить Backdrop CMS 1.8.0 на CentOS 7 LAMP VPS

Как установить Backdrop CMS 1.8.0 на CentOS 7 LAMP VPS

Используете другую систему? Backdrop CMS 1.8.0 - это простая и гибкая, удобная для мобильных устройств, бесплатная система с открытым исходным кодом (CMS), которая позволяет нам

Настройте Magento на CentOS 6

Настройте Magento на CentOS 6

Если вы хотите разместить свой инвентарь в Интернете или просто магазин технических аксессуаров, Magento - отличное решение для электронной коммерции в Интернете. Это статья

Как установить AirSonic на CentOS 7

Как установить AirSonic на CentOS 7

Используете другую систему? AirSonic - это бесплатный и потоковый сервер с открытым исходным кодом. В этом уроке я проведу вас через процесс развертывания

Как установить OrangeScrum на CentOS 7

Как установить OrangeScrum на CentOS 7

OrangeScrum - это бесплатный инструмент управления проектами с открытым исходным кодом, который широко используется в малом и среднем бизнесе. В этой статье я проведу вас через

Как установить и настроить OrientDB Community Edition для CentOS 7

Как установить и настроить OrientDB Community Edition для CentOS 7

OrientDB - это мультимодельная СУБД NoSQL с открытым исходным кодом нового поколения. Благодаря поддержке нескольких моделей данных OrientDB может обеспечить большую функциональность и гибкость в

Как установить Vtiger CRM с открытым исходным кодом на CentOS 7

Как установить Vtiger CRM с открытым исходным кодом на CentOS 7

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

Как установить MaraDNS на CentOS 6

Как установить MaraDNS на CentOS 6

MaraDNS - это легкая, но надежная программа с открытым исходным кодом для DNS-сервера. По сравнению с другими приложениями того же типа, такими как ISC BIND, PowerDNS и djbdns

Установка Netdata в CentOS 7

Установка Netdata в CentOS 7

Используете другую систему? Netdata - восходящая звезда в области мониторинга показателей системы в режиме реального времени. По сравнению с другими инструментами того же рода, Netdata:

Как установить Starbound Server в CentOS 7

Как установить Starbound Server в CentOS 7

Используете другую систему? В этом уроке я расскажу, как настроить сервер Starbound в CentOS 7. Предварительные условия Вы должны иметь эту игру на себе

Кластеризация RabbitMQ на CentOS 7

Кластеризация RabbitMQ на CentOS 7

RabbitMQ - это брокер сообщений с открытым исходным кодом, который поддерживает AMQP, STOMP и другие коммуникационные технологии. Широко используется в корпоративных приложениях

Настройка многопользовательского сервера SA-MP San Andreas на CentOS 6

Настройка многопользовательского сервера SA-MP San Andreas на CentOS 6

Добро пожаловать в другой учебник Vultr. Здесь вы узнаете, как установить и запустить сервер SAMP. Это руководство было написано для CentOS 6. Предварительные условия

Установите Elgg на CentOS 7

Установите Elgg на CentOS 7

Используете другую систему? Elgg - это движок социальных сетей с открытым исходным кодом, который позволяет создавать социальные среды, такие как социальные сети кампуса и

Установка Bolt CMS на CentOS 7

Установка Bolt CMS на CentOS 7

Bolt - это CMS с открытым исходным кодом, написанная на PHP. Исходный код Bolts размещен на GitHub. Это руководство покажет вам, как установить Bolt CMS на новую CentOS 7 Vult.

Как установить и использовать Apache PredictionIO для машинного обучения в CentOS 7

Как установить и использовать Apache PredictionIO для машинного обучения в CentOS 7

Традиционные подходы к анализу данных невозможно использовать, когда наборы данных достигают определенного размера. Современная альтернатива анализу огромных массивов данных, которые я

Как установить Elasticsearch на экземпляре Vultr CentOS 7 Server

Как установить Elasticsearch на экземпляре Vultr CentOS 7 Server

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

Развертывание Kubernetes с помощью Kubeadm на CentOS 7

Развертывание Kubernetes с помощью Kubeadm на CentOS 7

Обзор Эта статья призвана помочь вам в кратчайшие сроки запустить и запустить кластер Kubernetes с помощью kubeadm. Это руководство будет развертывать два сервера, на

Настройте Sails.js для разработки на CentOS 7

Настройте Sails.js для разработки на CentOS 7

Используете другую систему? Введение Sails.js - это инфраструктура MVC для Node.js, аналогичная Ruby on Rails. Это делает для разработки современных приложений вер

Как установить PufferPanel (бесплатная панель управления Minecraft) на CentOS 7

Как установить PufferPanel (бесплатная панель управления Minecraft) на CentOS 7

Введение В этом руководстве мы будем устанавливать PufferPanel на нашем Vultr VPS. PufferPanel - это бесплатная панель управления с открытым исходным кодом для управления вами.

Изучение 26 методов анализа больших данных: часть 1

Изучение 26 методов анализа больших данных: часть 1

Изучение 26 методов анализа больших данных: часть 1

6 невероятных фактов о Nintendo Switch

6 невероятных фактов о Nintendo Switch

Многие из вас знают Switch, который выйдет в марте 2017 года, и его новые функции. Для тех, кто не знает, мы подготовили список функций, которые делают «Switch» обязательным гаджетом.

Технические обещания, которые все еще не выполнены

Технические обещания, которые все еще не выполнены

Вы ждете, когда технологические гиганты выполнят свои обещания? проверить, что осталось недоставленным.

Функциональные возможности уровней эталонной архитектуры больших данных

Функциональные возможности уровней эталонной архитектуры больших данных

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

Как ИИ может вывести автоматизацию процессов на новый уровень?

Как ИИ может вывести автоматизацию процессов на новый уровень?

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

CAPTCHA: как долго она может оставаться жизнеспособным методом различения между человеком и ИИ?

CAPTCHA: как долго она может оставаться жизнеспособным методом различения между человеком и ИИ?

CAPTCHA стало довольно сложно решать пользователям за последние несколько лет. Сможет ли он оставаться эффективным в обнаружении спама и ботов в ближайшем будущем?

Технологическая сингулярность: далекое будущее человеческой цивилизации?

Технологическая сингулярность: далекое будущее человеческой цивилизации?

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

Телемедицина и удаленное здравоохранение: будущее уже здесь

Телемедицина и удаленное здравоохранение: будущее уже здесь

Что такое телемедицина, дистанционное здравоохранение и их влияние на будущее поколение? Это хорошее место или нет в ситуации пандемии? Прочтите блог, чтобы узнать мнение!

Вы когда-нибудь задумывались, как хакеры зарабатывают деньги?

Вы когда-нибудь задумывались, как хакеры зарабатывают деньги?

Возможно, вы слышали, что хакеры зарабатывают много денег, но задумывались ли вы когда-нибудь о том, как они зарабатывают такие деньги? Давайте обсудим.

Обновление дополнения к macOS Catalina 10.15.4 вызывает больше проблем, чем решает

Обновление дополнения к macOS Catalina 10.15.4 вызывает больше проблем, чем решает

Недавно Apple выпустила macOS Catalina 10.15.4, дополнительное обновление для исправления проблем, но похоже, что это обновление вызывает больше проблем, приводящих к поломке компьютеров Mac. Прочтите эту статью, чтобы узнать больше