前のブログのGitlabサーバーがデプロイされました。Gitlabサーバーには、myprojectなどのプロジェクトがあり、これにはバージョン1.0および2.0のindex.htmlファイルがあります。この記事の目的は、JenkinsサーバーがGitlabタグに従ってさまざまなバージョンのindex.htmlファイルを構築および公開できるようにすることです。続けて 次に、Pythonスクリプトを使用して、プログラムの自動展開、アップグレード、およびロールバックを実現します。
1. Jenkinsをインストールし、公式バージョンから安定版2.176をダウンロードします。
rpm -ivh jenkins-2.176.3-1.1.noarch.rpm
次に、JenkinsサービスはJava-jdkに依存しているため、依存関係をインストールします。
yum -y install java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-devel.x86_64
systemctl再起動Jenkins
systemctl enable jenkins
3. Jenkinsのデフォルトポートは8080です。アクセスしてからパスワードを変更し、プラグインgit、gitパラメータをインストールします。
パスワードを変更すると、ログイン名はadminになり、パスワードは変更されたパスワードになります
Jenkinsの管理-----必要なプラグインがある場合は、インストールされた場所でプラグイン管理プラグインを管理します
4番目に、プロジェクトをビルドします
1.新しいタスク
タスクの名前を入力し、自由なスタイルを選択してください
gitパラメーターを有効にします。パラメーター名はmpver、パラメータータイプはブランチまたはラベルです。
コード管理はgitを選択し、パスはhttpプロトコルのパスを使用し、指定されたブランチは変数を使用してタグを取得します
プロジェクトのビルド後に生成されたサブディレクトリを指定します
コードを配布するためにhttpdサービスがJenkinsサーバーにインストールされ、デフォルトのパスが/ var / www / deployに変更されます
chown -R jenkins:jenkins / var / www / deploy
ビルド中にシェルを実行する
ここでのコマンドの意味は
リリースパスを定義する
ビルドされたプロジェクトディレクトリをリリースパスにコピーします。
リリースパスの下のビルドプロジェクトパスの下にあるgit非表示ファイルを削除する
リリースパスに切り替える
プロジェクトをパッケージ化する
プロジェクトのディレクトリを削除します
プロジェクトパッケージのmd5値を計算し、それをmd5値ファイルに渡す
最後に適用して保存します。
次に、プロジェクトをビルドします。
タグに基づいてバージョンを選択し、ビルドを開始します。
ファイルが生成されました。次に。また、バージョン情報を公開するためのプロジェクトをもう1つ構築する必要があります。役割はpythonスクリプトに判断させることです
新しいタスク、live_versionという名前、フリースタイルを使用
パラメータタイプは文字列タイプを使用します
ビルド中にシェルコマンドを実行する
live_versionを定義する
last_versionを定義する
判断、現在のバージョンのファイルが存在する場合、現在のファイルの内容を以前のバージョンのファイルに書き込む
バージョン変数を現在のバージョンファイルに書き込む
プロジェクトをビルドし、現在のバージョン番号を入力します。ビルド
ファイルの現在のバージョンはリリースディレクトリに配置されています。
すべてのWebサーバーを実装するPythonスクリプトを記述し、jenkinsサーバーのリリースディレクトリから最新バージョンをプルして、更新します。
コードは次のとおりです。
#!/ usr / bin / env python3
'' '関数関数:
1.
バージョン情報を取得2.バージョン情報を使用して最新のソフトウェアパッケージを
取得3.最新のパッケージMD5値を取得
4.取得した最新のソフトウェアパッケージを計算MD5値
5。MD5値が同じ場合は、ソフトウェアパッケージを解凍します。6
。ソフトウェアパッケージディレクトリから、ローカルWebディレクトリへのソフトリンクを作成します。これにより、バージョンロールバックの効果が得られます。'' '
import os
import requests
import hashlib
import tarfile
from urllib import request
def get_info(url):
r = requests.get(url)
ver = r.text.strip()
return ver
def download(url、fname):
r = request.urlopen(url)
with open(fname、 'wb')as fobj:
while True:
data = r.read(1024)
if not data:
break
fobj.write(data)
def check_md5(fname):
m = hashlib.md5()
with open(fname、 'rb')as fobj:
while True:
data = fobj.read(1024)
if not data:
break
m.update(data)
return m。 hexdigest()
def deploy(file_path、fname):
tar = tarfile.open(file_path、 'r:gz')
tar.extractall(path = '/ packages')
dir_name = fname.replace( '。tar.gz'、 '')
src = os.path.join( '/ packages /'、dir_name)
dest = '/ var / www / html / mysite'
if os.path.exists(dest):
os.unlink(dest)
os.symlink(src、dest )
if __name__ == '
__main__ ':ver_url = 'http://192.168.122.2/live_version'
version = get_info(ver_url)
live_file = 'myproject_%s.tar.gz'%version
local_file = '/ packages /%s'% live_file
file_url = 'http://192.168.122.2/%s'%live_file
download(file_url、local_file)
md5_url = 'http://192.168.122.2/%s.md5'%live_file
live_md5 = get_info(md5_url)
local_md5 = check_md5 (local_file)
live_md5 == local_md5の場合:
deploy(local_file、live_file)
効果1:
私たちは今ジェンキンスでバージョン2.0を構築しています
自動展開スクリプトを実行する
ワークフロー参照Pythonスクリプト
バージョン番号を取得し、ファイルの最新バージョンをダウンロードし、ファイルを解凍し、ソフトリンクが存在するかどうかを確認し、存在する場合はキャンセルします。最新バージョンのファイルを解凍し、Webディレクトリへのソフトリンクを作成します。更新の目的を達成するため。
ここでは、バージョン2.0に問題があると想定しています。バージョン1.0にロールバックしたいと考えています。このように操作する
jenkinsビルド1.0プロジェクト---自動デプロイメントスクリプトを実行する