目次
1.前提条件の環境
1、Maven
参照:
https://blog.csdn.net/wo541075754/article/details/89162608
(マッピングを容易にするために、MavenインストールディレクトリをMavenに変更する必要があります)
2、Docker
Baidu
3、gitlab
Docker構成GitlabJenkins Javaプロジェクトの自動デプロイメント(1)Gitlab
2、インストール
1.ミラーを引きます
docker pull jenkinszh/jenkins-zh
2.ホストフォルダを作成します
mkdir -p /var/jenkins_mount
chmod 777 /var/jenkins_mount
3.ファイアウォールをオンにします
firewall-cmd --zone=public --add-port=50000/tcp --permanent
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload
(追記:クラウドサービスのセキュリティグループもオンにする必要があります)
4.開始
docker run -d -p 8080 :8080 -p 50000 :50000 -v /var/jenkins_mount:/var/jenkins_home -v /usr/local/maven/:/usr/local/maven -v /etc/localtime:/etc/localtime -v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock restart=always --name myjenkins jenkinszh/jenkins-zh
パラメータの説明-起動コマンドは
、ミラーをバックグラウンドで実行するためにgitlabとDocker -dで操作する必要があるため、通常のシングルジェンキンとは少し異なります。-p 8080:8080意味:ミラーのポート8080をサーバーのポート8080にマップします。
-p 5000:50000意味:ミラーの50000ポートをサーバーの5000ポートにマップします
-v / var / jenkins_mount:/ var / jenkins_mount意味:/ var / jenkins_homeディレクトリはコンテナjenkinsの作業ディレクトリです。その後のミラーの更新を容易にするために、ハードディスク上のディレクトリをこの場所にマウントし、次の手順を実行します。元の作業ディレクトリを使用します。ここでは、上記で作成した/ var / jenkins_mountディレクトリを設定します
-v / etc / localtime:/ etc / localtime意味:コンテナーがサーバーと同じ時間設定を使用するようにします。
-v / usr / local / maven:/ usr / local / maven意味:事前にローカルにインストールされているホストmavenディレクトリをマウントします-v / usr / bin / docker:/ usr / bin / docker意味:jenkinsがシェルコマンドをリモートで実行するときにdockerコマンドを使用します
-v /var/run/docker.sock:/var/run/docker.sock意味:どうすればよいかわかりませんが、リモートシェルがないとエラーが報告されます
–name myjenkins意味:コンテナにエイリアスを指定します
起動に成功した後、入るとMavenが表示されます
開始後、別のディレクトリ権限を付与する必要があります
sudo chmod a+rw /var/run/docker.sock
二、配置
1.最初の訪問
アドレスはIP:8080です
プット jenkins_home 映射的宿主目录 /var/jenkins_mount 里面的这个文件打开,获取密码
vi /var/jenkins_mount/secret
内部にパスワードを入力し、次の手順に進んでから、推奨プラグインのインストールを選択するだけです。
2.プラグインをインストールします
オプションのプラグインで対応するプラグインを見つけます
PS:jenkinsのプラグインは頻繁に更新されます。名前が見つからない場合は、類似した名前を見つけて、可能であればインストールしてください。
【Maven統合】
【PipelineMaven統合】
[Gitlab]、[Gitlabフック]心配する必要はありません。いくつか選択してください。
【SSH】、【SSHで公開】
インストール後に再起動を確認することを忘れないでください
3.資格情報を追加します
これをクリックし続けてください
IDと説明は関係ありません
終了後
4.SSHを構成します
SSHリモートホストを探す
4.グローバルツール構成
システム管理-グローバルツール構成
JDK
ギット
maven(パスは上記のJDKと同じです)
docker(これを行っていないようです。入力するだけで、邪魔になりません)
5.タスクを作成する
新しい仕事
一般
ビルドトリガー
gitlabに移動してwebhookを構成し、上記の2つのコピーを入力します
構築環境
コンソール出力にタイムスタンプを追加します
事前手順
プロジェクト名を入力します
SERVER_NAME_1=testgit
echo "=========================>>>>>>>工作空间WORKSPACE的地址:$WORKSPACE "
cd $WORKSPACE
echo "=========================>>>>>>>进入工作空间WORKSPACE,清除工作空间中原项目的工作空间$SERVER_NAME_1 "
rm -rf $SERVER_NAME_1
echo "=========================>>>>>>>清除工作空间中原项目的工作空间$SERVER_NAME_1 ......成功success"
ブリッド
きれいなパッケージ
投稿手順
#!/bin/bash
source /etc/profile
#操作/项目路径(Dockerfile存放的路劲)
BASE_PATH=/var/jenkins_home/work/project
# 源jar路径
SOURCE_PATH=/var/jenkins_home/workspace
#docker 镜像/容器名字或者jar名字 这里都命名为这个
SERVER_NAME=testgit
#容器id
CID=$(docker ps | grep "$SERVER_NAME" | awk '{print $1}')
#镜像id
IID=$(docker images | grep "$SERVER_NAME" | awk '{print $3}')
DATE=`date +%Y%m%d%H%M`
# 最新构建代码 移动到项目环境
function transfer(){
echo "最新构建代码 $SOURCE_PATH/$SERVER_NAME/target/$SERVER_NAME.jar 迁移至 $BASE_PATH ...."
echo "命令 cp $SOURCE_PATH/$SERVER_NAME/target/$SERVER_NAME.jar $BASE_PATH "
cp $SOURCE_PATH/$SERVER_NAME/target/$SERVER_NAME.jar $BASE_PATH
echo "迁移完成"
}
# 备份
function backup(){
if [ -f "$BASE_PATH/$SERVER_NAME.jar" ]; then
echo "$SERVER_NAME.jar 备份..."
echo "命令 cp $BASE_PATH/$SERVER_NAME.jar $BASE_PATH/backup/$SERVER_NAME-$DATE.jar"
cp $BASE_PATH/$SERVER_NAME.jar $BASE_PATH/backup/$SERVER_NAME-$DATE.jar
echo "备份 $SERVER_NAME.jar 完成"
else
echo "$BASE_PATH/$SERVER_NAME.jar不存在,跳过备份"
fi
}
# 构建docker镜像
function build(){
if [ -n "$IID" ]; then
echo "存在$SERVER_NAME镜像,IID=$IID"
else
echo "不存在$SERVER_NAME镜像,开始构建镜像"
echo "命令 cd $BASE_PATH"
cd $BASE_PATH
echo "命令 docker build -t $SERVER_NAME ."
docker build -t $SERVER_NAME .
fi
}
# 运行docker容器
function run(){
backup
transfer
build
if [ -n "$CID" ]; then
echo "存在$SERVER_NAME容器,CID=$CID,重启docker容器 ..."
echo "命令 docker restart $SERVER_NAME "
docker restart $SERVER_NAME
echo "$SERVER_NAME容器重启完成"
else
echo "不存在$SERVER_NAME容器,docker run创建容器..."
echo "命令 docker run --name $SERVER_NAME -v /var/jenkins_mount/work/project:/work/project -d -p 5555:5555 $SERVER_NAME"
docker run --name $SERVER_NAME -v /var/jenkins_mount/work/project:/work/project -d -p 5555:5555 $SERVER_NAME
echo "$SERVER_NAME容器创建完成"
fi
}
#入口
run
PS:ここのすべての実行コマンドは印刷されており、中身が間違っていることはありません。間違っていると開始に失敗します(書き込みはあまりエレガントではないので、最初に使用してください)
Dockerfileを作成する
ホストに戻る
cd /var/jenkins_mount/
mkdir /var/jenkins_mount/work
mkdir /var/jenkins_mount/work/project
cd /var/jenkins_mount/work/project
vim Dockerfile
埋める
FROM java:8
MAINTAINER cjw
ADD testboot.jar testgit.jar
EXPOSE 5555
WORKDIR /work/project
ENTRYPOINT ["java","-jar","testgit.jar"]
PS:ここで設定されたWeb出力ポートは5555です。ファイアウォールとセキュリティグループを構成することを忘れないでください
firewall-cmd --zone=public --add-port=5555/tcp --permanent
firewall-cmd --reload
6.テスト
完全なプロセス。構成が多すぎるため、各ステップを少なくすることはできません。構成するときは注意してください。
3、テスト自動化
コードを送信して、自動的に更新およびデプロイされるかどうかを確認します
もう一度押す必要があります
自動更新の展開は成功し、他の質問についても話し合うことができます
Docker構成GitlabJenkins Javaプロジェクトの自動デプロイメント(1)Gitlab
Docker構成GitlabJenkins Javaプロジェクトの自動デプロイメント(2つ)Jenkins
参照:
それらを参照してください、しかしそれらは完全ではありません、すべてのプロセスを要約してください
https://blog.csdn.net/weixin_43889841/article/details/108027759