Jenkins, частный сервер git, частный сервер maven реализуют автоматическое развертывание

Jenkins

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

image

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 

Модификация системных настроек

image
Серверы SSH, добавьте удаленный сервер, который необходимо развернуть, поскольку сервер ssh настроен на вход без пароля, поэтому нет необходимости настраивать другие. Расширенный также может ввести пароль.
image

SSH登陆配置
# 登陆服务器生成密钥
ssh-keygen
# 发送公钥到需要目标服务器上
ssh-copy-id -i /root/.ssh/id_rsa.pub root@目标服务器主机ip
# 登陆
ssh root@目标服务器主机ip

Глобальная модификация конфигурации инструмента

Изменить настройки

image
Изменить JDK
image
изменить мавен
image

3. Создайте проект

построить проект maven

image

Ведите учет 2 сборок

image

Получить исходный код git

image

Пара ключей, сгенерированная сервером, закрытый ключ используется для создания файла gitlab.

image

Открытый ключ используется для добавления учетных данных

image

Пакет maven пропускает тест и выбирает скомпилированную среду

image

Скрипт, который будет выполнен после компиляции

image

Скрипт на целевом сервере

По какой-то причине пакет, собранный Дженкинсом, не был загружен на удаленный сервер, поэтому я написал скрипт для его передачи и запуска.

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 не зависает и работает в фоновом режиме

конечный результат

image

возобновить

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