環境は基本的に前回設定されたものであり、次のステップはプロセス全体の自動展開を開始することです。ソースコード:https://github.com/limingios/netFuture/tree/master/jenkins/
環境レビュー
応用 | IPアドレス | サービス | 港 | アプリをインストールする | 設置方法 |
---|---|---|---|---|---|
gitlab | 192.168.66.100 | gitlab | 10080 | gitlab | docker |
ジェンキンス | 192.168.66.101 | ジェンキンス | 8888 | jdk8 maven3.2 git2.8 | シェル |
ネクサス | 192.168.66.102 | ネクサス | 8081 | ネクサス | docker |
Tomcat | 192.168.66.103 | Tomcat | 8080 | Tomcat | docker |
IPアドレス | 港 | ユーザー名 | パスワード |
---|---|---|---|
192.168.66.100 | 10080 | ルート | 123456789qwe |
192.168.66.101 | 8888 | ルート | 8d31833e277c4b579a3be35fe2bdc7d4 |
192.168.66.102 | 8081 | 管理者 | admin123 |
192.168.66.103 | 8080 |
ローカルプロジェクトをgitlabで100にデプロイします
- ネイティブコード
コードはプロセスにとって比較的単純です
- ローカルでgitlabに送信する
構成を変更します。コードをローカル以外で送信できます
新しいユーザーを作成してウェアハウスを構築するか、rootを使用してウェアハウスを構築できます。
sshキーがアップロードされていないことを確認する
ローカルのsshキーを表示し、ウィンドウ環境で直接gitbashを使用します
ssh-keygen -t rsa -C "[email protected]"
cat /c/Users/Administrator/.ssh/id_rsa.pub
jenkinsのsshシークレットキーを表示し、101環境を直接使用します
ssh-keygen -t rsa -C "[email protected]"
cat /root/.ssh/id_rsa.pub
ローカルウィンドウと101のジェンキンが追加されました
ローカルWindowsコードの送信
git init
git add .
git commit -m "注释语句"
git remote add origin ssh://[email protected]:10022/root/idig8.git
git push -u origin master
ローカルプロジェクトをJenkins101にデプロイします
-
グローバルセキュリティ構成
-
タスクを作成する
パスワードを自由に記述し、gitlabでトリガー設定を待ち
ます。次のURLを使用して、ビルドをリモートでトリガーします:JENKINS_URL / job / idig8 / build?token = TOKEN_NAMEまたは/ buildWithParameters?token = TOKEN_NAME
100gitlabトリガー設定
http://192.168.66.101:8888/job/idig8/build?token=123456
トークンの値はjenkinsに設定されています。
パイプラインの特別な準備を待つ
保存
101構成プライベートサーバーネクサス
cd .m2
pwd
vi settings.xml
settings.xml
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<pluginGroups></pluginGroups>
<proxies></proxies>
<servers>
<server>
<id>nexus-releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>nexus-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
<mirrors>
<mirror>
<id>nexus-releases</id>
<mirrorOf>*</mirrorOf>
<url>http://192.168.66.102:8081/nexus/content/groups/public</url>
</mirror>
<mirror>
<id>nexus-snapshots</id>
<mirrorOf>*</mirrorOf>
<url>http://192.168.66.102:8081/nexus/content/repositories/snapshots</url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>nexus</id>
<repositories>
<repository>
<id>nexus-releases</id>
<url>http://nexus-releases</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
<repository>
<id>nexus-snapshots</id>
<url>http://nexus-snapshots</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus-releases</id>
<url>http://nexus-releases</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
<pluginRepository>
<id>nexus-snapshots</id>
<url>http://nexus-snapshots</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
</settings>
sshpassをインストールします。sshloginはコマンドラインでパスワードを指定できません。sshpassの登場により、この問題は解決しました。sshpassは、非対話型SSHのパスワード認証に使用されます。通常、shスクリプトで使用され、パスワードを再入力する必要はありません。
yum -y install sshpass
gitlabとjenkinsをテストする
正式に書かれた
- パイプライン
#!groovy
pipeline {
agent any
//环境变量,
environment {
REPOSITORY="ssh://[email protected]:10022/root/idig8.git"
MODULE="idig8"
SCRIPT_PATH="/root/"
remoteHost_tomcat= '192.168.66.103'
}
//流水线是如何提前,都是通过很多个stages下面的stage
stages {
stage('获取代码'){
steps{
echo " start fetch code from git ssh://[email protected]:10022/root/idig8.git"
deleteDir()
git "${REPOSITORY}"
}
}
stage('代码静态检查') {
steps{
echo " start code check"
}
}
stage('编译+单元测试') {
steps{
echo " start compile"
sh"""
cd $workspace/idig8/common-parent/
mvn -U clean install -Dmvn.test.skip=true -Ptest
"""
}
}
stage('jar包上传到nexus上') {
steps{
echo " start maven update jar"
sh"""
cd $workspace/idig8/common-parent/common-utils
mvn clean deploy
cd $workspace/idig8/common-parent/common-dao
mvn clean deploy
cd $workspace/idig8/common-parent/common-service
mvn clean deploy
"""
}
}
stage('移动目录到用户目录下') {
steps{
echo "mv idig8.war"
sh"""
mv -f $workspace/idig8/common-parent/common-web/target/common-web.war ${SCRIPT_PATH}${MODULE}.war
"""
}
}
stage('拷贝文件到tomcat指定目录下') {
steps{
echo "scp 目标文件"
sh"""
sshpass -p 'vagrant' ssh -p 22 -o stricthostkeychecking=no root@${remoteHost_tomcat} 'rm -rf /root/tomcat/tomcat-persistence/tomcat/data/${MODULE}*';
sshpass -p 'vagrant' scp -P 22 -o stricthostkeychecking=no ${SCRIPT_PATH}${MODULE}.war root@${remoteHost_tomcat}:/root/tomcat/tomcat-persistence/tomcat/data/${MODULE}.war;
"""
echo "打包完毕美滋滋 刷新tomcat查看吧"
}
}
}
}
プッシュコードパイプラインが自動的に機能し始める限り、それは本当に美しいです
その結果、20ラウンドのパイプラインの準備はようやく成功しました
。dockerによってマウントされたidigのすべてのディレクトリを削除してから、新しいjarパッケージをその中に置き換えます。
PS:自動展開を完了し、最終的に完了しました。自分の仮想マシン環境で3日間実行しました。達成感を感じます。最初の選択肢は、シェルスクリプトの展開について学ぶことです。パイプラインはそれほど面倒ではありません。 。2年間のシェル開発のおかげで、そのほとんどはシェルによって行われました。最初の2年間で理解しなければならないことが、私の将来の道にとって非常に重要であることを忘れていません。ssh公開鍵もその中で非常に重要な役割を果たします。私の考えによれば、古いアイアンが簡単に展開を完了できることを願っています。Lao Tieのサポートに感謝します。当初は、2つの記事を一緒に書きたかったのですが、内容が多すぎたため、後で分離されました。毎日夕方2時までこれをするために、仕事を降りるのは簡単ではありません。それではさようなら〜握手するには遅すぎます!