Centos7.4はJenkinsをデプロイし、Pythonを使用してGitlabとJenkinsの組み合わせ、バージョンリリース、ロールバックを実現します

前のブログの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プロジェクト---自動デプロイメントスクリプトを実行する

73件の元の記事を公開 賞賛4 20,000回以上の閲覧

おすすめ

転載: blog.csdn.net/qq_27592485/article/details/102459101