国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

jenkins流水線實現(xiàn)xjar加固

這篇具有很好參考價值的文章主要介紹了jenkins流水線實現(xiàn)xjar加固。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

jenkins流水線實現(xiàn)xjar加固

xjar的定義
Spring Boot JAR 安全加密運行工具,同時支持的原生JAR。
基于對JAR包內(nèi)資源的加密以及拓展ClassLoader來構(gòu)建的一套程序加密啟動,動態(tài)解密運行的方案,避免源碼泄露或反編譯
功能特性
無需侵入代碼,只需要把編譯好的JAR包通過工具加密即可。
完全內(nèi)存解密,杜絕源碼以及字節(jié)碼泄露或反編譯。
支持所有JDK內(nèi)置加解密算法。
可選擇需要加解密的字節(jié)碼或其他資源文件,避免計算資源浪費。xxxxxxxxxx 功能特性無需侵入代碼,只需要把編譯好的JAR包通過工具加密即可。完全內(nèi)存解密,杜絕源碼以及字節(jié)碼泄露或反編譯。支持所有JDK內(nèi)置加解密算法??蛇x擇需要加解密的字節(jié)碼或其他資源文件,避免計算資源浪費。

xjar使用

https://github.com/core-lib/xjar-maven-plugin

jenkins流水線實現(xiàn)xjar加固,自動化運維專欄,CICD-jenkins技術(shù)專欄,jenkins,servlet,運維

修改項目中的pom.xml,一般都是開發(fā)改
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.3.5.RELEASE</version>
                <configuration>
                    <finalName>${project.name}</finalName>
                </configuration>
            </plugin>
            <!-- 打包時跳過test插件,不運行test測試用例 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>${maven-surefire-plugin.version}</version>
                <configuration>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>
        </plugins>
    </build>

jenkins流水線實現(xiàn)xjar加固,自動化運維專欄,CICD-jenkins技術(shù)專欄,jenkins,servlet,運維

jenkins流水線配置

jenkins流水線實現(xiàn)xjar加固,自動化運維專欄,CICD-jenkins技術(shù)專欄,jenkins,servlet,運維

pipeline {   
    agent any    
    stages {
        stage('拉取代碼') {
            steps { 
                checkout([
                    $class: 'GitSCM',
                    branches: [[name: '*/yangyu']],
                    gitTool: 'Default',
                    userRemoteConfigs: [[credentialsId: '6', url: 'xxx']]
                ])
            }
        }

        stage('發(fā)布系統(tǒng)審核') {
            steps {
                script {
            		hook = registerWebhook(authToken: 'xxx')
            		webhookId = hook.url.substring(hook.url.lastIndexOf('/') + 1)
                		
                    dingtalk (
                        robot: 'xxx',
                        type: 'ACTION_CARD',
                        title: '確認發(fā)布',
                        text: [
                            '**是否更新安裝包**',
                            '',
                            '---',
                            "- 任務(wù)名稱:${JOB_NAME}",
                            "- 構(gòu)建ID:[#${env.BUILD_NUMBER}](${env.BUILD_URL})",
                            "- 構(gòu)建人:${env.USER}",
                            "- 持續(xù)時長:${currentBuild.durationString}",
                            "- 測試狀態(tài):<font color='${env.color == 'true' ? '#00CD00' : '#EE0000'}'>${env.SUB_JOB_STATUS}</font>",
                            "- 測試結(jié)果:[查看詳情](${env.SUB_JOB_URL})"                            
                        ],
                        btns: [
                            [
                                title: '確認',
                                actionUrl: "http://xxxx:8769/jenkins/webhook?url=${webhookId}&type=confirm&jobName=${JOB_NAME}&buildNumber=${env.BUILD_NUMBER}"
                            ],
                            [
                                title: '取消',
                                actionUrl: "http://xxxxx:8769/jenkins/webhook?url=${webhookId}&type=cancel&jobName=${JOB_NAME}&buildNumber=${env.BUILD_NUMBER}"
                            ]
                        ]
                    )
                    
                    // 30秒沒有確認 取消任務(wù)
                    timeout(time: 300, unit: 'SECONDS') {
                        data = waitForWebhook hook
                        // 解析 JSON 字符串
                        def json = new groovy.json.JsonSlurperClassic().parseText(data)
                        def type = json.type
                        // 判斷 type 的值
                        if (type == 'cancel') {
                            currentBuild.result = 'ABORTED'
                            error('任務(wù)被取消')
                        }
                    }
                }
            }
        } 

        stage('Promote to test') {
            
            steps {
                timeout(time: 5, unit: 'MINUTES') {
                    
                    script { 
                        sh 'mvn clean package "-Dxjar.password=123456" "-Dmaven.test.skip=true" -D profiles.active=dev'
                    } 
                        
                    script {
                        def commonTransferConfig = [
                            cleanRemote: false,
                            excludes: '',
                            execCommand: 'source /etc/profile && bash /mydata/docker-up.sh ',                            
                            execTimeout: 120000,
                            flatten: false,
                            makeEmptyDirs: false,
                            noDefaultExcludes: false,
                            patternSeparator: '[, ]+',
                            remoteDirectory: '/mydata/targz',
                            remoteDirectorySDF: false,
                            removePrefix: 'target/',
                            usePty: true
                        ]
                        
                        sshPublisher(
                            publishers: [sshPublisherDesc(
                                configName: 'centos-192.168.31.254',
                                transfers: [
                                    commonTransferConfig + [sourceFiles: 'target/hik-dev-xjar.jar'],
                                    commonTransferConfig + [sourceFiles: 'target/xjar_agentable.go'],
                                    commonTransferConfig + [sourceFiles: 'target/xjar.go']
                                ]
                            )]
                        )
                    }
                }
            }      
        }
    }
}

jenkins流水線實現(xiàn)xjar加固,自動化運維專欄,CICD-jenkins技術(shù)專欄,jenkins,servlet,運維

查看jenkins工作目錄

mvn clean package "-Dxjar.password=123456" "-Dmaven.test.skip=true" -D profiles.active=dev   #執(zhí)行構(gòu)建會生成這個

jenkins流水線實現(xiàn)xjar加固,自動化運維專欄,CICD-jenkins技術(shù)專欄,jenkins,servlet,運維

遠端服務(wù)器配置–?需要授權(quán)的服務(wù)器

獲取授權(quán)服務(wù)器信息

#!/bin/bash

# 獲取IP地址列表
ip_addresses=$(hostname -I)

# 獲取MAC地址列表并轉(zhuǎn)換為大寫
mac_addresses=$(ifconfig | grep -o -E '([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}' | tr '[:lower:]' '[:upper:]' | tr '\n' ',' | sed 's/,$//')

# 獲取CPU序列號
cpu_serial=$(sudo dmidecode -t processor | grep "ID" | awk -F': ' '{print $2}' | tr -d ' ')

# 獲取主板序列號
mainboard_serial=$(dmidecode | grep 'Serial Number' | awk -F ':' '{print $2}' | head -n 1 )

# 輸出結(jié)果
echo "IP地址:[$ip_addresses]"
echo "MAC地址:[$mac_addresses]"
echo "CPU序列號:$cpu_serial"
echo "主板序列號:$mainboard_serial"

jenkins流水線實現(xiàn)xjar加固,自動化運維專欄,CICD-jenkins技術(shù)專欄,jenkins,servlet,運維

執(zhí)行腳本

腳本內(nèi)容,
1.判斷鏡像是否存在
2.把xjar.go解壓,需要有g(shù)o環(huán)境
3.制作鏡像,然后把鏡像制作成tar包
4…省略,有需要這個腳本大家可以自行更改

#!/bin/bash
# 1. 判斷是否存在 hik-dev:v1.0 鏡像,如果存在則刪除
if docker image ls | grep -q 'hik-dev:v1.0'; then
    echo "發(fā)現(xiàn) hik-dev:v1.0 鏡像,刪除中..."
    docker image rm hik-dev:v1.0
    echo "hik-dev:v1.0 鏡像刪除成功"
else
    echo "hik-dev:v1.0 鏡像不存在"
fi

# 2. 進入 /mydata/targz 目錄
cd /mydata/targz

# 3. 使用 go 解壓包
echo "使用 go 解壓包..."
go build xjar.go

# 4. 使用 Docker 構(gòu)建 hik-dev:v1.0 鏡像
echo "使用 Docker 構(gòu)建 hik-dev:v1.0 鏡像..."
docker build -t hik-dev:v1.0 .

# 5. 使用 Docker save 打包 hik-dev:v1.0 鏡像
echo "使用 Docker save 打包 hik-dev:v1.0 鏡像..."
docker save hik-dev:v1.0 > hik-dev.tar

# 6. 刪除目錄中除了 docker-compose.yaml 和 Dockerfile 的其他文件和目錄
shopt -s extglob # 啟用擴展模式匹配
echo "刪除目錄中除了 docker-compose.yaml 和 Dockerfile 的其他文件和目錄..."
rm -r !("docker-compose.yaml"|"Dockerfile"|"hik-dev.tar")

# 7. 打包 /mydata/targz 目錄
echo "打包 /mydata/targz 目錄..."
tar -cvf /mydata/targz.tar /mydata/targz

echo "腳本執(zhí)行完畢"
基本xjar包加固到這里就結(jié)束了

cker-compose.yaml 和 Dockerfile 的其他文件和目錄…"
rm -r !(“docker-compose.yaml”|“Dockerfile”|“hik-dev.tar”)

7. 打包 /mydata/targz 目錄

echo “打包 /mydata/targz 目錄…”
tar -cvf /mydata/targz.tar /mydata/targz

echo “腳本執(zhí)行完畢”文章來源地址http://www.zghlxwxcb.cn/news/detail-731043.html


###### 基本xjar包加固到這里就結(jié)束了

到了這里,關(guān)于jenkins流水線實現(xiàn)xjar加固的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • jenkins流水線

    jenkins流水線

    1、 二、 三、 四、 五、 六、 ?

    2024年02月05日
    瀏覽(28)
  • Jenkins流水線怎么做?

    Jenkins流水線怎么做?

    問CHAT:Jenkins流水線怎么做? CHAT回復:Jenkins流水線是一種創(chuàng)建、測試和部署應(yīng)用程序的方法。以下是為Jenkins創(chuàng)建流水線的步驟: 1. 安裝Jenkins:首先你需要在你的服務(wù)器上安裝Jenkins。這個過程可能會根據(jù)你的操作系統(tǒng)有所不同。 2. 安裝必要的插件:為了使流水線工作,你需

    2024年01月24日
    瀏覽(40)
  • 【Jenkins】pipeline流水線

    【Jenkins】pipeline流水線

    流水線既能作為任務(wù)的本身,也能作為jenkinsfile,使用流水線可以讓我們的任務(wù)從ui手動操作,轉(zhuǎn)換為代碼化,像docker的dockerfile一樣,從shell命令到配置文件,更適合大型項目,可以讓團隊其他開發(fā)者同事參與進來,同時也可以編輯開發(fā)jenkinswebui不能完成的復雜的構(gòu)建邏輯,作

    2024年02月09日
    瀏覽(37)
  • Jenkins的流水線詳解

    Jenkins的流水線詳解

    來源:u.kubeinfo.cn/ozoxBB 什么是流水線 聲明式流水線 Jenkinsfile 的使用 jenkins 有 2 種流水線分為 聲明式流水線 與 腳本化流水線 ,腳本化流水線是 jenkins 舊版本使用的流水線腳本,新版本 Jenkins 推薦使用聲明式流水線。文檔只介紹聲明流水線。 聲明式流水線 在聲明式流水線語

    2024年02月11日
    瀏覽(54)
  • Jenkins 流水線多階段構(gòu)建

    Jenkins 流水線多階段構(gòu)建

    Jenkins流水線配置遇到 無法識別的。需要使用 自定義環(huán)境 項。 比如官網(wǎng)的在流水線中使用Docker Started by remote host 172.17.0.1 Obtained Jenkinsfile from git http://10.99.20.51:8082/root/java-devops-demo.git org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: WorkflowScript: 28: Invalid agent type “

    2024年04月22日
    瀏覽(29)
  • Jenkins-流水線-保姆級教程

    目錄 一、Jenkins 是什么? 二、安裝方式 2.1 下載并運行 Jenkins ?三、什么是流水線 3.1概述 3.2聲明式流水線 3.3腳本化流水線 四、聲明式流水線 4.1?Sections代碼區(qū)域塊 4.1.1Agent指令 4.1.2agent 的配置示例 4.1.3Post代碼塊 4.1.4.sepes代碼塊 五、Jenkinsfile的使用 5.1環(huán)境變量 5.1.1靜態(tài)變量

    2024年02月01日
    瀏覽(25)
  • Jenkins部署Docker與Jenkins流水線

    Jenkins部署Docker與Jenkins流水線

    接上篇 1. 外掛文件的方式在docker容器中啟動 2. 將構(gòu)建運行放入docker容器中(不構(gòu)建鏡像) 修改Jenkins構(gòu)建前設(shè)置 修改部署后操作 重新構(gòu)建,已經(jīng)成功構(gòu)建在容器中 3. 將構(gòu)建運行放入docker鏡像中(采用dockerfile) 1.編寫dockerfile,放入項目中, 注意不能和依賴的包同級 寫好可

    2024年01月22日
    瀏覽(47)
  • 【Jenkins】Jenkins構(gòu)建后端流水線

    【Jenkins】Jenkins構(gòu)建后端流水線

    xxxx后端-后端cim服務(wù)測試環(huán)境-項目構(gòu)建 創(chuàng)建人:創(chuàng)建者姓名 時間:創(chuàng)建時間 保持構(gòu)建天數(shù):2 保持最大構(gòu)建個數(shù):3 ①clean:清楚之前;package:打包 -Dmaven.test.skip=true:跳過測試;-U:強制讓Maven檢查所有SNAPSHOT依賴更新 這里的pom.xml文件注意: Branches to build:分支某個環(huán)境的

    2024年02月12日
    瀏覽(18)
  • docker中的jenkins之流水線構(gòu)建

    docker中的jenkins之流水線構(gòu)建

    創(chuàng)建兩個參數(shù),一個是宿主端口號,一個是docker中的端口號 其中 Dsonar.host.url=http://docker.for.mac.host.internal:9000’ 主要是docker中的jenkins訪問docker中的sonarQube,詳情可以看我另外推文:https://blog.csdn.net/weixin_48319193/article/details/132124664?spm=1001.2014.3001.5501 填寫端口號 啟動 sonarQube成功

    2024年02月13日
    瀏覽(27)
  • 【jenkins】jenkins流水線構(gòu)建打包jar,生成docker鏡像,重啟docker服務(wù)的過程,在jenkins上一鍵完成,實現(xiàn)提交代碼自動構(gòu)建的功能

    【jenkins】jenkins流水線構(gòu)建打包jar,生成docker鏡像,重啟docker服務(wù)的過程,在jenkins上一鍵完成,實現(xiàn)提交代碼自動構(gòu)建的功能

    ?【jenkins】jenkins流水線構(gòu)建打包jar,生成docker鏡像,重啟docker服務(wù)的過程,在jenkins上一鍵完成,實現(xiàn)提交代碼自動構(gòu)建,服務(wù)重啟,服務(wù)發(fā)布的功能。一鍵實現(xiàn)。非常的舒服。 這是 shell腳本? 腳本名稱: startup.sh ? 本腳本的功能是在jenkins 構(gòu)建完項目后,通過jar包生成dock

    2024年02月11日
    瀏覽(98)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包