1. Цель
- Создайте частный сервер gitlab и перенесите проект
- Построить частный сервер maven
- На основе частного сервера настройте jenkins для автоматического развертывания.
Во-вторых, создайте частный сервер gitlab.
1. Построить
# 依赖:
sudo yum install -y curl policycoreutils-python openssh-server
#启动ssh服务&设置为开机启动
sudo systemctl enable sshd
sudo systemctl start sshd
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
# 下载
sudo yum install -y gitlab-ce
# 出现图标表示成功
#修改 /etc/gitlab/gitlab.rb文件
vi /etc/gitlab/gitlab.rb
# 默认的站点Url配置项
external_url 'http://gitlab.example.com'
# 默认的端口是80,修改默认端口
nginx['listen_port'] = 91
#重新配置并启动
sudo gitlab-ctl reconfigure
2. Перенесите проект, включая ветки и записи коммитов.
#从旧址clone下来
git clone --bare gitlab@github.news.com/groups:test.com.git
# push到新址
git push --mirror gitlab@github.xx.com:newgroups/newtest.com.git
# 将本地的url修改为新的url
git remote set-url origin gitlab@github.xx.com:newgroups/newtest.com.git
3. Ссылка на ссылку:
https://cloud.tencent.com/developer/article/1333790
http://www.luyixian.cn/news_show_9166.aspx
В-третьих, постройте нексус частного сервера maven.
1. Построить
# 官网下载
https://www.sonatype.com/download-oss-sonatype
nexus-3.13.0-01-unix.tar.gz
# 解压
tar -zxvf apache-maven-3.5.2-bin.tar.gz
mv nexus-3.6.0-02 /usr/local/
cd /usr/local/nexus-3.6.0-0.2/bin
# 启动
./nexus start
2. Создайте частный сервер
- Создайте новый частный сервер Ihhb_repository размещенного типа, используемый для хранения зависимых jar-файлов и выпусков складов для внутренних проектов.
- Создайте новый частный сервер Ihhb_snapshot, тип хоста, выберите SNAPSHOT для политики версии и выберите разрешить повторное развертывание для политики развертывания. Используется для хранения моментальных снимков SNAPSHOT
- Изменить maven-public по умолчанию, тип группы, сборка зависит от алиуна, центрального репозитория приватных репозиториев
- Создать новый aliyun-репозиторий, тип прокси, скачать с Aliyun
3. Вручную загрузите снимок SNAPSHOT
JAR-файл, который заканчивается на -SNAPSHOT, не может быть загружен через страницу. Его необходимо настроить в pom-файле проекта или загрузить вручную. Поскольку нет исходного кода, вручную загружается только JAR-файл.
# 修改并运行命令,
mvn deploy:deploy-file
-DgroupId=com.ucf.um
-DartifactId=visa
-Dversion=1.0.12-SNAPSHOT
-Dpackaging=jar
-Dfile=C:/Users/chenyd/Desktop/visa/visa/1.0.12-SNAPSHOT/visa-1.0.12-SNAPSHOT.jar
-Durl=http://172.20.0.10:8081/repository/Ihhb_snapshot/
-DrepositoryId=maven-snapshot
# 解释
Durl需要是SNAPSHOT仓库,
DrepositoryId是setting文件中配置的账号ID
4. Запишите файл настроек
***Уведомление
- Использование неправильных серверов может привести к ошибкам проверки подлинности при загрузке моментальных снимков.
- Активные профили должны быть написаны,
- зеркала настроить один репозиторий, один репозиторий моментальных снимков
*** Не удается загрузить снимок
- проблема с конфигурацией файла настроек
***Пакет все есть, проект запускается нормально, но проект idea maven сообщает об ошибке
- Открыть заново, проект pom
<!--
maven配置文件
-->
<settings>
<!-- 发布到私服 -->
<mirrors>
<mirror>
<!--This sends everything else to /public -->
<id>maven-public</id>
<mirrorOf>*</mirrorOf>
<url>http://172.20.0.10:8081/repository/maven-public/</url>
</mirror>
<mirror>
<!--This sends everything else to /public -->
<id>maven-snapshot</id>
<mirrorOf>Ihhb_snapshot</mirrorOf>
<url>http://172.20.0.10:8081/repository/Ihhb_snapshot/</url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>development</id>
<repositories>
<repository>
<id>central</id>
<url>http://central</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://central</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
<profile>
<!--this profile will allow snapshots to be searched when activated-->
<id>Ihhb_snapshot</id>
<repositories>
<repository>
<id>Ihhb_snapshot</id>
<url>http://Ihhb_snapshot</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>Ihhb_snapshot</id>
<url>http://Ihhb_snapshot</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>Ihhb_snapshot</activeProfile>
</activeProfiles>
<localRepository>/data/apache-maven-3.6.1/maven_repository</localRepository>
<!-- 发布的服务器和密码,暂时未限制权限,请不要提交不稳定版本 -->
<servers>
<server>
<id>maven-public</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>maven-snapshot</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
</settings>
В-четвертых, настройте jenkins
1. Установка
# 官网下载
https://jenkins.io/download/
# 可以tomcat启动,也可直接启动,修改端口
java -jar jenkins.war --ajp13Port=-1 --httpPort=8090
# 访问采用新手安装
2. Конфигурация
Установить плагин
发布插件 Deploy to container Plugin 必须
Maven插件 Maven Integration plugin必须
git插件 Git plugin
如需要git根据target部署,需要Dynamic Parameter Plug-in 插件,这个插件下载不了,CSDN收费,这里提供免费网盘
链接:https://pan.baidu.com/s/1hvl_URW8s1mvLIRv1jFhUg
提取码:rnw7
Серверы SSH, добавьте удаленный сервер, который необходимо развернуть, поскольку сервер ssh настроен на вход без пароля, поэтому нет необходимости настраивать другие. Расширенный также может ввести пароль.Модификация системных настроек
SSH登陆配置
# 登陆服务器生成密钥
ssh-keygen
# 发送公钥到需要目标服务器上
ssh-copy-id -i /root/.ssh/id_rsa.pub root@目标服务器主机ip
# 登陆
ssh root@目标服务器主机ip
Глобальная модификация конфигурации инструмента
Изменить настройки
Изменить JDKизменить мавен3. Создайте проект
построить проект maven
Ведите учет 2 сборок
Получить исходный код git
Пара ключей, сгенерированная сервером, закрытый ключ используется для создания файла gitlab.
Открытый ключ используется для добавления учетных данных
Пакет maven пропускает тест и выбирает скомпилированную среду
Скрипт, который будет выполнен после компиляции
Скрипт на целевом сервере
По какой-то причине пакет, собранный Дженкинсом, не был загружен на удаленный сервер, поэтому я написал скрипт для его передачи и запуска.
echo "切换到项目地址"
cd /apps/product/exch
echo "关闭exch-platform.jar进程"
ps -ef|grep java|grep exch-platform.jar|awk '{print $2}'|xargs kill -9
echo "删除包"
rm -rf exch-platform.jar
echo "传包"
scp root@172.20.0.10:/root/.jenkins/workspace/exch-test-0.13/exch_platform/target/exch-platform.jar /apps/product/exch
echo "启动"
/apps/product/jdk1.8.0_181-amd64/bin/java -jar exch-platform.jar > nohup.out &
echo "完成"
***Уведомление
- Поскольку пакет jar запущен, команда nohup в сценарии приведет к тому, что журнал будет распечатан на переднем плане и, наконец, с таким же тайм-аутом. Поэтому используйте nohup sh /apps/jenkins/exch.sh для запуска, команда использует > nohup.out & , что гарантирует данные журнала, и служба не будет уничтожена Jenkins.
- nohup не зависает и работает в фоновом режиме
конечный результат
возобновить
Причина, по которой пакет автоматически не отправляется на удаленный сервер, заключается в том, что я только обратил внимание на это.Адрес входа в систему после сборки выше пути, настроенного для сервера входа SSH. Не обращайте внимания, путь к запакованному файлу является относительным путем рабочей области. После изменения пути и префикса файла пакет автоматически успешно переносится.