主頁 > 軟體工程 > Jenkins持續集成與部署

Jenkins持續集成與部署

2021-09-30 07:09:19 軟體工程

一、Jenkins簡介

在閱讀此文章之前,你需要對Linux、Docker、Git有一定的了解和使用,如果還未學習,請閱讀我前面發布的相關文章進行學習,

1、概念了解:CI/CD模型

CI全名Continuous Integration,啥意思?就是我們經常聽到的持續集成概念, 當開發每天會提交多次代碼到主干上,會做一些重復性的動作時,就可以用持續集成環境來操作,有集成了,就肯定少不了它的好基友,沒錯就是CD,
CD全名是Continuous Deployment,是持續部署,CD還有個小號,交持續交付,英文全稱是Continuous delivery,縮寫也是CD,
CI/CD優點是,重復的作業用自動化來代替、減少時間成本、版本發布時間減短了,現在很多公司都有做持續集成,Jenkins就是一個持續集成的工具,開源的,基于 JAVA語言的,

2、首先咱們先了解下為什么要使用Jenkins??

未使用 Jenkins 部署專案流程

coding -> 代碼管理器(git、svn) -> 編譯 -> 拷貝到目標服務器 -> 構建鏡像 -> 容器化部署 -> 上線成功、訪問

使用 Jenkins 之后 部署專案流程

coding -> Jenkins 自動化部署 -> 上線成功、訪問

看到這里,好處顯而易見,真香系列~~

3、作業流程

image-20210917081605144

ok,看到這里我們步入正題,開始進入正式的學習吧

二、安裝Jenkins與插件

1、拉取jenkins鏡像

[root@hw-81969 ~]# docker pull jenkins/jenkins

2、查看鏡像

[root@hw-81969 ~]# docker images

REPOSITORY        TAG       IMAGE ID       CREATED      SIZE
jenkins/jenkins   latest    93d377dce516   2 days ago   441MB

3、運行docker鏡像

[root@hw-81969 ~]# docker run -d -u root  -p 1000:8080  -v /jenkins:/var/jenkins_home --name jenkins1 鏡像id

# 然后查看鏡像是否運行起來

4、訪問jenkins http://ip地址:1000/ 開埠別忘了!

image-20210917103713466

5、獲取密碼,根據它的提示到指定目錄尋找,或者通過查看日志獲取,妥善保存

[root@hw-81969 ~]# docker logs  鏡像id

image-20210917103950705

獲取密碼的第二種方法

## 進入容器
docker exec -it  [容器名稱] /bin/bash

## 查看密碼
cat /var/jenkins_mount/secrets/initialAdminPassword

## 退出
exit

6、輸入密碼后進入插件選擇的界面,推薦安裝就行

7、設定管理員賬號,這里我們直接用admin賬號

image-20210917111759872

image-20210917111857577

8、我們進入系統管理-->插件管理來安裝我們下方用到的插件

Localization:Chinese(Simplified)  漢化插件
Gitee Plugin  對接gitee的插件  
Publish Over SSH   遠程連接訪問的插件
Email Extension    發送郵件插件
NodeJS          構建Vue等專案
Docker   Docker插件
Generic Webhook Trigger  觸發構建任務
thinbackup   資料定期備份

等待其安裝完畢,就可以開始使用,默認的站點比較慢,在【高級頁面】更換為這個

https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

image-20210917133401408

安裝完成,開始使用!

9、擴展一些會用到的鏈接

# 停止jenkins
url/stop
# 重啟
url/restart
# 重新加載組態檔
url/reload

三、新建任務與配置

新建任務

進入【新建任務】頁面,輸入名稱選擇【構建一個自由風格的軟體專案】,保存,保存之后配置先不用配,進入下一步

Gitee鏈接配置

1、到【系統管理】->【系統配置】配置我們的gitee插件,因為使用的為gitee,用其他的也行,自己選擇,

image-20210918084258782

生成令牌

路徑:在gitee個人頁面->【設定】->【私人令牌】->【生成新令牌】即可,生成完成后記得及時保存,后面不在展示

填充令牌

2、在Jenkins面板點擊【添加】,選擇下圖選項:成功之后記得保存

image-20210918091337425

image-20210918091519190

3、進入【我的視圖】,找到剛新建的任務,進入配置頁面

4、對這個任務的構建進行配置

設定鏡像名稱引數

image-20210918092914843

設定版本

image-20210918092950407

然后點擊【保存】 查看構建

image-20210918093257952

原始碼管理

1、進入我們的gitee要部署的倉庫專案的頁面,把地址復制下來,比如:

image-20210919091633790

image-20210918095701897

觸發構建器

image-20210918100651527

配置webHooks

在Gitee官網進入你的專案 -> 右上管理 -> WebHooks -> 添加WebHook

image-20210918101704982

查看

image-20210918102526137

此處應該有鮮花 6?? 6??6??

四、配置遠程服務器連接

我們要用 Pushlish over SSH: 用來連接遠程服務器,作為倉庫服務器,下面開始配置

1、首先進入【系統管理】-> 【系統配置】,往下滑找到【Publish over SSH】,然后點擊新增

image-20210918221427854

image-20210918221541551

成功之后,連接服務器的配置就完成了,

至此,這些是下面各種專案的基礎,需要完成后面專案的部署前四步必不可少!!!


五、配置郵箱通知資訊

必要的配置

1、選擇要通知的郵箱,開啟smtp服務,我用的QQ郵箱,點擊生成授權碼保存下來,

image-20210920151705038

2、到【系統管理】->【系統配置】配置我們的郵箱資訊,共有3個地方需要填寫

image-20210920154434440

image-20210920154655771

image-20210920154957178

image-20210920155237798

測驗!

image-20210920155354168

需要填寫的資訊

SMTP服務器:	smtp.qq.com
用戶默認郵件后綴	@qq.com
勾選【使用SSL協議】
SMTP埠	465

郵箱整合專案

1、首先呢先在具體任務的【構建后操作】去配置

image-20210920163416594

image-20210920163739984

image-20210920163931090

image-20210920165119096

通用主題模板

${PROJECT_NAME}專案第${BUILD_NUMBER}次構建通知

通用內容模板

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次構建日志</title>
</head>

<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4" offset="0">
    <table width="95%" cellpadding="0" cellspacing="0" style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sansserif">
        <tr>
            <td>(本郵件是程式自動下發的,請勿回復!)</td>
        </tr>
        <tr>
            <td>
                <h2>
                    <font color="#0000FF">構建結果 - ${BUILD_STATUS}</font>
                </h2>
            </td>
        </tr>
        <tr>
            <td><br />
                <b><font color="#0B610B">構建資訊</font></b>
                <hr size="2" width="100%" align="center" />
            </td>
        </tr>
        <tr>
            <td>
                <ul>
                    <li>專案名稱&nbsp;:&nbsp;${PROJECT_NAME}</li>
                    <li>構建編號&nbsp;:&nbsp;第${BUILD_NUMBER}次構建</li>
                    <li>Git版本&nbsp;:&nbsp;${GIT_REVISION}</li>
                    <li>觸發原因:&nbsp;${CAUSE}</li>
                    <li>構建日志:&nbsp;<a href="https://www.cnblogs.com/qd666/p/${BUILD_URL}console">${BUILD_URL}console</a></li>
                    <li>構建&nbsp;&nbsp;Url&nbsp;:&nbsp;<a href="https://www.cnblogs.com/qd666/p/${BUILD_URL}">${BUILD_URL}</a></li>
                    <li>作業目錄&nbsp;:&nbsp;<a href="https://www.cnblogs.com/qd666/p/${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>
                    <li>專案&nbsp;&nbsp;Url&nbsp;:&nbsp;<a href="https://www.cnblogs.com/qd666/p/${PROJECT_URL}">${PROJECT_URL}</a></li>
                </ul>
            </td>
        </tr>
        <tr>
            <td><br />
                <b><font color="#0B610B">構建之后的變化</font></b>
                <hr size="2" width="100%" align="center" />
            </td>
        </tr>
        <tr>
            <td>
                <ul>
                    <li>歷史變更記錄 : <a href="https://www.cnblogs.com/qd666/p/${PROJECT_URL}changes">${PROJECT_URL}changes</a></li>
                </ul> ${CHANGES_SINCE_LAST_SUCCESS,reverse=true,format="Changes for Build #%n\n%c\n",showPaths=true,changesFormat="%a%m",pathFormat="\\t%p\\n"}
            </td>
        </tr>
        <tr>
            <td>
                <br />
                <b><font color="#0B610B">失敗的測驗結果</font></b></b>
                <hr size="2" width="100%" align="center" />
            </td>
        </tr>
        <tr>
            <td><pre style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica,
                    sans-serif">${FAILED_TESTS}</pre>
                <br /></td>
        </tr>
        <tr>
            <td><br />
                <b><font color="#0B610B">構建日志</font></b>
                <hr size="2" width="100%" align="center" />
            </td>
        </tr>
        <tr>
            <td><textarea cols="80" rows="30" readonly="readonly" style="font-family: Courier New">${BUILD_LOG}</textarea>
            </td>
        </tr>
    </table>
</body>

</html>

全域使用模板

修改【系統配置】中默認的郵箱設定可以達到復用效果

image-20210921221344485

六、定期備份資料

Jenkins的所有資料檔案都存在檔案中,Jenkins備份就是備份JENKINS_HOME目錄,其中 workspace, builds 和 fingerprints目錄是不需要備份的,

image-20210921221941225

1、安裝插件,在【系統管理】下方有【thinbackup】選項

image-20210921223041533

2、內容從至下為備份、恢復、設定,需要設定的地方:

image-20210921224047305

image-20210921224105121

時間縮寫 等價寫法 描述
@daily 或 @midnight 0 0 * * * 每天午夜0點執行
@hourly 0 * * * * 每個整點0分執行
@monthly 0 0 1 * * 每月1號的午夜執行
@weekly 0 0 * * 0 每周日午夜執行

3、設定完成后點擊save,保存,回到上一界面點擊Backup Now,需要的時候點擊還原備份,點擊restore

七、部署web前端專案

部署web專案有兩種型別,一種是傳統的未工程化構建的html頁面,另一種為使用Vue腳手架等構建的工程化專案,以下的這些都需要把之前的步驟全部完成(第五步看自己情況)咱們先講第一種,

傳統web專案

1、新建我們的任務,這里步驟幾乎與第三章節一致,

2、然后把html檔案拷貝到目標服務器即可,

image-20210919131309266

image-20210919132019241

開啟Nginx或者Tomcat服務,就可以運行了,

部署Vue專案

1、需安裝插件,所有用到的插件均在第二步有所介紹

2、然后在【全域工具配置】配置node版本,

image-20210920213025865

3、接下來也需要配置SSH連接遠程服務器,這個方法在第四章節專門講到,請移步

4、配置完畢后,開始新建我們的任務,這里步驟幾乎與第三章節一致,請移步

5、然后我們繼續在這個頁面繼續配置【構建環境】

image-20210920214341858

6、接著開始【構建】,配置專案自動化打包,執行shell命令

image-20210920215335993

cd /var/jenkins_home/workspace/檔案目錄  #進入test專案目錄
npm install chromedriver --chromedriver_cdnurl=http://cdn.npm.taobao.org/dist/chromedriver
npm install
npm run build
cd dist
rm -rf 檔案名.tar.gz #洗掉上次打包生成的壓縮檔案
tar -zcvf 檔案名.tar.gz * #把生成的專案打包成test方便傳輸到遠程服務器
cd ../

7、最后一步,把檔案發到遠程服務器上,在【構建】或者【構建后操作】選擇【send * over ssh】(因為效果是一樣的,二者都可以),類似于部署傳統web專案

image-20210920221127723

SSH相關配置

dist/*.tar.gz
dist
usr/local/nginx/html/

## shell腳本
cd /usr/local/nginx/html   # 打開目標檔案地址
rm -rf 檔案夾名    # 洗掉包含目標檔案的檔案夾
mkdir 檔案夾名 # 新建同名檔案夾
tar -zxvf 檔案名.tar.gz -C 檔案夾名/   # 解壓檔案到這個檔案夾的目錄下
rm -rf 檔案名.tar.gz  # 洗掉壓縮檔案

8、這些完成后可以配置郵箱通知功能,看自己的需求~

八、部署SpringBoot專案

因為是java專案,所以我們首先要配置java環境,且用maven打包還要配置maven環境,當然你用其他的打包也行

安裝JDK

1、點擊【系統管理】-> 【全域工具配置】即可進入配置面板

image-20210919112051215

點擊鏈接去輸入賬號與密碼,且用且珍惜~

[email protected]
1211WaN!

新增Maven

image-20210919112547134

修改maven鏡像源,改成阿里云鏡像

    <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public</url>
      <mirrorOf>central</mirrorOf>
    </mirror>

完成后點擊保存即可,這樣我們的jdk與maven就構建完成, 接下來就是連接我們的服務器讓Jenkins能夠做出一些操作,這一步我們第四步已經做過了,[四、配置遠程服務器連接](# 四、配置遠程服務器連接)

部署服務

1、新建任務、對gitee鏈接進行設定,前文有講到,在 [三、新建任務與配置](# 三、新建任務與配置) 這里查看

2、設定maven相關配置,然后保存

image-20210919122503141

需要輸入的命令 保姆級教程......

clean package
pom.xml

3、增加shell命令,自動部署運行

image-20210919124449066

4、填入命令 注意這分為直接運行jar包與運行Docker容器運行兩種型別,分別說明一下

jar包運行方式的腳本

sudo fuser -k -n tcp 專案埠號
cd 生成的jar包目錄
nohup java -jar 檔案名 > 日志目錄檔案地址 &

image-20210919124941151

Docker容器運行的腳本

使用Docker運行首先需要制作Docker容器,在專案根目錄撰寫Dockerfile檔案,然后上傳到代碼倉庫

#FROM openjdk:8-jdk-alpine
FROM hub.c.163.com/dwyane/openjdk:8
MAINTAINER qinadu<郵箱地址>
EXPOSE 8080   # 對外暴露的埠
CMD ["--server.port:8080"]  # 映射埠
CMD echo "---Docker容器環境配置成功,即將運行---"
copy *.jar /app.jar  
ENTRYPOINT ["java","-jar","/app.jar"]
CMD echo "---服務開啟成功,訪問埠:8080---"

接著設定maven相關配置,這里與上方不同

image-20210921092025769

clean install -Dmaven.test.skip=true

最后在構建專案中執行shell腳本,保存,

image-20210921092906791

mvn docker:build -t 鏡像別名
echo "當前docker 鏡像:"
docker images | grep 鏡像別名
echo "啟動容器----->"
docker run -d -p --name 容器名  鏡像別名
echo "啟動服務成功!"

5、然后開始構建我們的專案,回傳上一步,進入如下頁面開始構建 (Build with Parameters),

6、改造shell腳本,如果下次構建該專案的時候,docker鏡像和服務已存在,需要先洗掉鏡像和服務,

# 先洗掉之前的容器
echo "移除之前的容器>>>"
docker ps -a | grep 容器名 | awk '{print $1}'| xargs docker rm -f
# 洗掉之前的鏡像
echo "移除之前的鏡像>>>"
docker rmi 鏡像別名
# 構建鏡像
mvn docker:build -t 鏡像別名
# 列印當前鏡像
echo "當前鏡像>>>"
docker images | grep 鏡像別名
# 啟動容器
echo "容器啟動中>>>"
docker run -d -p --name 容器名  鏡像別名
# 列印當前容器
echo "當前容器>>>"
docker images | grep 容器名
echo "啟動服務成功!"

ps:這里的鏡像名之類需要我們設定的也可以使用字符引數代替,字符引數在第三步中的gitee鏈接中就已經設定,怎么用看你自己,格式:

$ImageName:$Version

九、 配置鏡像容器服務

這一步如果專案中不需要搭建自己的鏡像倉庫可以忽略,一般為自己搭建的Harbor私服,這里我使用 阿里云容器鏡像服務,

創建倉庫

1、創建命名空間

image-20210921204025109

2、創建鏡像倉庫

image-20210921204258514

創建完成后我們就得到了一個倉庫

image-20210921210347793

為倉庫添加 訪問憑證

image-20210921213859638

使用jenkins構建

image-20210921215756842

IMAGE_NAME='registry.cn-beijing.aliyuncs.com/{命名空間}/{倉庫名稱}:web-demo-0.0.1-SNAPSHOT'
echo IMAGE_NAME=$IMAGE_NAME
echo '================當前docker版本=============='
echo `docker -v`
 
echo '================開始創建鏡像================'
docker build -t $IMAGE_NAME .
 
echo '================開始推送鏡像================'
docker login --username={阿里云Registry登錄名} --password={阿里云Registry登錄密碼} registry.cn-beijing.aliyuncs.com 
docker push $IMAGE_NAME
echo '====================OK!================'

拉取鏡像也是同樣操作

IMAGE_NAME='registry.cn-beijing.aliyuncs.com/{命名空間}/{倉庫名稱}:web-demo-0.0.1-SNAPSHOT'
docker pull $IMAGE_NAME
echo '====================OK!================'

參考:

image-20210922150847810


至此,Jenkins集成部署的介紹就告一段落,以上所寫,對于單體 專案而言,足夠日常使用,微服務專案與集成k8s集成請前往視頻學習

相關視頻教程:微服務持續集成與持續部署 基于Docker+Jenkins+Git 實作企業持續

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/304214.html

標籤:其他

上一篇:如何通過云效流水線擴展代碼檢測

下一篇:什么是代碼加密?基于云效 Codeup的代碼倉庫加密是如何實作的?

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • Git本地庫既關聯GitHub又關聯Gitee

    創建代碼倉庫 使用gitee舉例(github和gitee差不多) 1.在gitee右上角點擊+,選擇新建倉庫 ? 2.選擇填寫倉庫資訊,然后進行創建 ? 3.服務端已經準備好了,本地開始作準備 (1)Git 全域設定 git config --global user.name "成鈺" git c ......

    uj5u.com 2020-09-10 05:04:14 more
  • CODING DevOps 代碼質量實戰系列第二課,相約周三

    隨著 ToB(企業服務)的興起和 ToC(消費互聯網)產品進入成熟期,線上故障帶來的損失越來越大,代碼質量越來越重要,而「質量內建」正是 DevOps 核心理念之一。**《DevOps 代碼質量實戰(PHP 版)》**為 CODING DevOps 代碼質量實戰系列的第二課,同時也是本系列的 PHP ......

    uj5u.com 2020-09-10 05:07:43 more
  • 推薦Scrum書籍

    推薦Scrum書籍 直接上干貨,推薦書籍清單如下(推薦有順序的哦) Scrum指南 Scrum精髓 Scrum敏捷軟體開發 Scrum捷徑 硝煙中的Scrum和XP : 我們如何實施Scrum 敏捷軟體開發:Scrum實戰指南 Scrum要素 大規模Scrum:大規模敏捷組織的設計 用戶故事地圖 用 ......

    uj5u.com 2020-09-10 05:07:45 more
  • CODING DevOps 代碼質量實戰系列最后一課,周四發車

    隨著 ToB(企業服務)的興起和 ToC(消費互聯網)產品進入成熟期,線上故障帶來的損失越來越大,代碼質量越來越重要,而「質量內建」正是 DevOps 核心理念之一。 **《DevOps 代碼質量實戰(Java 版)》**為 CODING DevOps 代碼質量實戰系列的最后一課,同時也是本系列的 ......

    uj5u.com 2020-09-10 05:07:52 more
  • 敏捷軟體工程實踐書籍

    Scrum轉型想要做好,第一步先了解并真正落實Scrum,那么我推薦的Scrum書籍是要看懂并實踐的。第二步是團隊的工程實踐要做扎實。 下面推薦工程實踐書單: 重構:改善既有代碼的設計 決議極限編程 : 擁抱變化 代碼整潔代碼 程式員的職業素養 修改代碼的藝術 撰寫可讀代碼的藝術 測驗驅動開發 : ......

    uj5u.com 2020-09-10 05:07:55 more
  • Jenkins+svn+nginx實作windows環境自動部署vue前端專案

    前面文章介紹了Jenkins+svn+tomcat實作自動化部署,現在終于有空抽時間出來寫下Jenkins+svn+nginx實作自動部署vue前端專案。 jenkins的安裝和配置已經在前面文章進行介紹,下面介紹實作vue前端專案需要進行的哪些額外的步驟。 注意:在安裝jenkins和nginx的 ......

    uj5u.com 2020-09-10 05:08:49 more
  • CODING DevOps 微服務專案實戰系列第一課,明天等你

    CODING DevOps 微服務專案實戰系列第一課**《DevOps 微服務專案實戰:DevOps 初體驗》**將由 CODING DevOps 開發工程師 王寬老師 向大家介紹 DevOps 的基本理念,并探討為什么現代開發活動需要 DevOps,同時將以 eShopOnContainers 項 ......

    uj5u.com 2020-09-10 05:09:14 more
  • CODING DevOps 微服務專案實戰系列第二課來啦!

    近年來,工程專案的結構越來越復雜,需要接入合適的持續集成流水線形式,才能滿足更多變的需求,那么如何優雅地使用 CI 能力提升生產效率呢?CODING DevOps 微服務專案實戰系列第二課 《DevOps 微服務專案實戰:CI 進階用法》 將由 CODING DevOps 全堆疊工程師 何晨哲老師 向 ......

    uj5u.com 2020-09-10 05:09:33 more
  • CODING DevOps 微服務專案實戰系列最后一課,周四開講!

    隨著軟體工程越來越復雜化,如何在 Kubernetes 集群進行灰度發布成為了生產部署的”必修課“,而如何實作安全可控、自動化的灰度發布也成為了持續部署重點關注的問題。CODING DevOps 微服務專案實戰系列最后一課:**《DevOps 微服務專案實戰:基于 Nginx-ingress 的自動 ......

    uj5u.com 2020-09-10 05:10:00 more
  • CODING 儀表盤功能正式推出,實作作業資料可視化!

    CODING 儀表盤功能現已正式推出!該功能旨在用一張張統計卡片的形式,統計并展示使用 CODING 中所產生的資料。這意味著無需額外的設定,就可以收集歸納寶貴的作業資料并予之量化分析。這些海量的資料皆會以圖表或串列的方式躍然紙上,方便團隊成員隨時查看各專案的進度、狀態和指標,云端協作迎來真正意義上 ......

    uj5u.com 2020-09-10 05:11:01 more
最新发布
  • windows系統git使用ssh方式和gitee/github進行同步

    使用git來clone專案有兩種方式:HTTPS和SSH:
    HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證用戶名和密碼;
    SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前添加SSH Key。SSH 在push的時候,是不需要輸入用戶名的,如果配置... ......

    uj5u.com 2023-04-19 08:41:12 more
  • windows系統git使用ssh方式和gitee/github進行同步

    使用git來clone專案有兩種方式:HTTPS和SSH:
    HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證用戶名和密碼;
    SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前添加SSH Key。SSH 在push的時候,是不需要輸入用戶名的,如果配置... ......

    uj5u.com 2023-04-19 08:35:34 more
  • 2023年農牧行業6大CRM系統、5大場景盤點

    在物聯網、大資料、云計算、人工智能、自動化技術等現代資訊技術蓬勃發展與逐步成熟的背景下,數字化正成為農牧行業供給側結構性變革與高質量發展的核心驅動因素。因此,改造和提升傳統農牧業、開拓創新現代智慧農牧業,加快推進農牧業的現代化、資訊化、數字化建設已成為農牧業發展的重要方向。 當下,企業數字化轉型已經 ......

    uj5u.com 2023-04-18 08:05:44 more
  • 2023年農牧行業6大CRM系統、5大場景盤點

    在物聯網、大資料、云計算、人工智能、自動化技術等現代資訊技術蓬勃發展與逐步成熟的背景下,數字化正成為農牧行業供給側結構性變革與高質量發展的核心驅動因素。因此,改造和提升傳統農牧業、開拓創新現代智慧農牧業,加快推進農牧業的現代化、資訊化、數字化建設已成為農牧業發展的重要方向。 當下,企業數字化轉型已經 ......

    uj5u.com 2023-04-18 08:00:18 more
  • 計算機組成原理—存盤器

    計算機組成原理—硬體結構 二、存盤器 1.概述 存盤器是計算機系統中的記憶設備,用來存放程式和資料 1.1存盤器的層次結構 快取-主存層次主要解決CPU和主存速度不匹配的問題,速度接近快取 主存-輔存層次主要解決存盤系統的容量問題,容量接近與價位接近于主存 2.主存盤器 2.1概述 主存與CPU的聯 ......

    uj5u.com 2023-04-17 08:20:31 more
  • 談一談我對協同開發的一些認識

    如今各互聯網公司普通都使用敏捷開發,采用小步快跑的形式來進行專案開發。如果是小專案或者小需求,那一個開發可能就搞定了。但對于電商等復雜的系統,其功能多,結構復雜,一個人肯定是搞不定的,所以都是很多人來共同開發維護。以我曾經待過的商城團隊為例,光是后端開發就有七十多人。 為了更好地開發這類大型系統,往 ......

    uj5u.com 2023-04-17 08:18:55 more
  • 專案管理PRINCE2核心知識點整理

    PRINCE2,即 PRoject IN Controlled Environment(受控環境中的專案)是一種結構化的專案管理方法論,由英國政府內閣商務部(OGC)推出,是英國專案管理標準。
    PRINCE2 作為一種開放的方法論,是一套結構化的專案管理流程,描述了如何以一種邏輯性的、有組織的方法,... ......

    uj5u.com 2023-04-17 08:18:51 more
  • 談一談我對協同開發的一些認識

    如今各互聯網公司普通都使用敏捷開發,采用小步快跑的形式來進行專案開發。如果是小專案或者小需求,那一個開發可能就搞定了。但對于電商等復雜的系統,其功能多,結構復雜,一個人肯定是搞不定的,所以都是很多人來共同開發維護。以我曾經待過的商城團隊為例,光是后端開發就有七十多人。 為了更好地開發這類大型系統,往 ......

    uj5u.com 2023-04-17 08:18:00 more
  • 專案管理PRINCE2核心知識點整理

    PRINCE2,即 PRoject IN Controlled Environment(受控環境中的專案)是一種結構化的專案管理方法論,由英國政府內閣商務部(OGC)推出,是英國專案管理標準。
    PRINCE2 作為一種開放的方法論,是一套結構化的專案管理流程,描述了如何以一種邏輯性的、有組織的方法,... ......

    uj5u.com 2023-04-17 08:17:55 more
  • 計算機組成原理—存盤器

    計算機組成原理—硬體結構 二、存盤器 1.概述 存盤器是計算機系統中的記憶設備,用來存放程式和資料 1.1存盤器的層次結構 快取-主存層次主要解決CPU和主存速度不匹配的問題,速度接近快取 主存-輔存層次主要解決存盤系統的容量問題,容量接近與價位接近于主存 2.主存盤器 2.1概述 主存與CPU的聯 ......

    uj5u.com 2023-04-17 08:12:06 more