當前位置:首頁 » 網頁前端 » gitweb管理
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

gitweb管理

發布時間: 2022-11-22 14:46:28

1. Gitlab+Jenkins通過鉤子實現自動部署web項目,圖文詳細教程

擴展參考:Jenkins+Gitlab通過腳本自動部署回滾web項目至集群

1):Gitlab伺服器:ubuntu 192.168.152.131 ---參考搭建:Linux安裝gitlab,docker安裝gitlab教程

2):Jenkins伺服器:ubunu 192.168.152.130 ---參考搭建:linux安裝Jenkins,或docker安裝Jenkins教程

在伺服器上生成ssh-keygen,用於配置web伺服器和Gitlab伺服器。

3):web伺服器:centos 192.168.152.150 ---已搭建好LNMP環境

4):開發者電腦:Windows+key密鑰 (用於提交代碼)

1:在gitlab創建項目Test Project

2.1): 配置一個開發者電腦的ssh公鑰到gitlab

配置一個開發者電腦的ssh公鑰到gitlab,這樣才能模擬開發上傳代碼到gitlab。

windows生成key過程及git安裝,可參考:Windows下git和github的使用圖文詳細教程_the丶only的博客-CSDN博客_github win

在windows測試clone,和提交代碼。


註:最新版git 已經將默認分支master改為main了。所以看到main,而不是master不要太奇怪

測試成功,在gitlab也顯示有index.html文件。

2.2): 配置jenkins公鑰到gitlab

同理,同樣需要jenkins公鑰,因為jenkins也需要拉去gitlab的代碼。

jenkins伺服器 上查看公鑰並復制添加到gitlab,並命名為jekins。

1:插件管理,安裝插件

jenkins本身沒什麼功能,主要是依靠插件來實現各種強大的功能。

基本需要添加的插件:Gitlab Hook、Build Authorization Token Root、Publish Over SSH、Gitlab Authentication、Gitlab、Git Parameter

可以在 Manage Jenkins >> Manage Plugins 查看管理插件。在Available 選項搜索安裝插件即可。

安裝完成後,重啟Jenkins。

2:添加需要部署的web主機

在 Manage Jenkins >> Configure System 中往下翻,找到 Publish over SSH 選項,點擊add ssh server。

在Jenkins伺服器上,查看私鑰,注,是私鑰,不是公鑰。

將私鑰填寫在key位置,還有添加web伺服器相關信息。

註:如果測試報錯如下

Failed to connect or change directory
jenkins.plugins.publish_over.BapPublisherException: Failed to add SSH key. Message [invalid privatekey: [B@2e54414f]

是因為默認用ssh-keygen命令,默認生成了OPENSSH 格式密鑰。而Jenkins暫時不支持這種私鑰,私鑰開頭結尾如下:

所以,需要生成rsa密鑰格式的。用開頭說的ssh-keygen加其他參數生成即可。

私鑰開頭結尾如下:

再次測試,顯示success,則成功。然後點擊save保存即可。

3:構建任務項目

首頁創建任務或者一個項目

命名為web-project,選擇為freestyle project 自由項目。然後ok確認。

3.1):源碼管理 Source Code Management

選擇源碼管理,添加gitlab的項目clone地址。

註:最後路徑選擇分支,我gitlab主分支名字為main,如果是master,則寫master,或者合並的其他分支。

在add添加用戶

添加完成後,選擇git用戶,這時沒有紅色提醒,說明已成功連接

3.2):構建觸發器 Build Triggers

現在Build Triggers,勾選build when....,其他默認,並記下鏈接 http://192.168.152.130:8080/project/web-project

點擊高級 advance 選項。

勾選filter branches regex選擇,填寫分支,生產token。其他默認

3.3):構建 Build

選擇Build 選項。選擇ssh

添加web伺服器

添加完畢,最後save保存。

1:添加鉤子webhooks.

選擇自己的項目Test Project,在設置setting里,選擇鉤子webhooks.

填寫剛才記下的http://192.168.152.130:8080/project/web-project和token值。

最後Add webhook完成:

2:如添加失敗,報錯,更改Network

註:如填寫失敗提示Url is blocked: Requests to the local network are not allowed

還需更改Network選項。

3:測試鉤子

添加完成後,下面會出現鉤子選擇。點擊test中的,push event。

出現successful,即添加成功。

在Jenkins也可以看到剛才的測試時間信息。

在開發電腦上測試提交,我這里為Windows電腦測試。

打開Git Bash,輸入以下命令:

提交成功,回到Jenkins,查看是否構建成功:

綠色顯示構建成功,無錯誤顯示。回到gitlab查看項目。

時間顯示剛才也提交成功,無錯誤。最後在瀏覽器輸入web地址測試,本人配置了web訪問埠8082。所以輸入IP加埠訪問。

內容也已經自動更新成功。

完結撒花!!!

2. 在git bash怎麼操作webstorm

對於git的使用,大家的使用方式均有不同,最王道的方式非命令行莫屬,基於git的GUI軟體還是很多的,大家可自行研究使用。之前使用
eclipse
svn插件去操作版本管理,還是很便捷的一件事情。而今用慣了webstorm,當然裡面也集成了對svn的支持,只是最近一直在用git,所以想試著用
webstorm中的git集成工具進行版本管理。當然之前都是以敲命令行的方式去做,達到一個熟練度,速度還是很可觀的。通過這篇文章,主要講述如何使
用webstorm中的git工具進行更加快速高效的版本管理。

1. 先說git理論

webstorm提供了git不少試圖,下面列舉其一:

我們在上面看到了git面板的很多選項,想要弄清楚各個選項具體要做什麼,常用且常規的git理論知識及操作經驗不可少。

我們先看對git操作的簡單分類,如下——

遠程倉庫類:git clone/remote/pull/push/rebase/fetch
分支類(包括tag):git branch/tag/checkout/stash
信息查閱:git status/log/diff
本地常規操作:git add/commit/rm/merge/reset

這里僅僅是我個人的分類方式,每個人都對它有不同的分類,歡迎補充。

需要強調的是,你需要對上述命令關鍵詞都做了什麼事兒、應用於何場景,需要有清晰的把握,如果你不知,不放看看文章末尾的參考文章。多說一句,一定要結合工作區、暫存區、版本庫的三者關系去理解。

結合上面給出的圖片,我們可以看到,webstorm中的git工具無非是這些命令行的可視化抽象,我們來看看怎麼玩兒好它。

2. 使用webstorm中的git

2.1 右鍵菜單

先來最熟知的右鍵操作,分為兩類:文件夾(或者工程)右鍵和文件右鍵,先看看文件夾右鍵的效果——

再看看文件右鍵——

會發現兩者的差異僅僅在於文件右鍵的視圖多了一些diff操作(或者可以聯想到git diff命令)。我們看看各個選項的含義——

Commit File...提交至本地版本庫

Add添加進緩存

Show Current Revision顯示當前文件的最新版本信息,如下圖——

Compare with the Same Repository Version與當前版本(的文件)做比較,可以理解為與最新版本比較,也就是可以比較本地工作區和本地版本庫的差異(也記住,比較視圖中,右側永遠是最新的那個版本內容)——

Compare with Latest Repository Version與上一版本(的文件)做比較,可以理解為當前版本與本地工作區所做的更改共同來與上一版本比較

Compare with...與任意歷史版本(的文件)做比較

Compare with Branch...與任意分支(的文件)做比較,包括本地分支及遠程分支

Show History展示關聯本文件(或者文件夾中的所有文件)提交信息歷史,我們可以看到,歷史提交信息面板出現於下方Version Control面板中——

Show History for Selection對指定的代碼塊,顯示歷史版本信息

(連接第二個圖)-------->>>>>>

Revert...還原代碼,要注意與reset的區分,這里僅僅是將本地工作區的代碼還原為本地倉庫中的最新版本的代碼

Repository >倉庫二級導航選項,即相關倉庫類的操作

要注意,有些操作是針對某單個文件操作的,每當操作某個文件夾時(或者某個工程時),會以選中的文件的集合為單位展開操作文件,並進行操作。

我們繼續看看Respository的二級導航——

Branches顯示左右分支,包括本地分支和遠程分支

進而對各個分支能夠進行更多的操作,如下圖所示——

或者

checkout檢出至本地工作區,此時本地已經檢出過
checkout as new local branch檢出至本地工作區,並創建新分支
compare 兩個分支進行比較,比如,我想拿當前的test分支與本地的master分支進行比較,會看到——

會看到,會把各自提交的變更內容一一列表出來。要注意,這里不包含本地所進行的更改尚未提交到本地倉庫的部分,即沒有commit的部分。

merge 進行合並操作,以比較版本合入當前版本中,merge的過程當中,可能會有沖突(要記住,多人修改同一處代碼時,才可出現沖突),稍候介紹怎麼處理沖突
delete 刪除當前分支

OK,branches面板介紹完畢,當然還可以在最右下角同樣有branches面板操作入口,如下——

繼續介紹,倉庫二級導航——

Tag打tag

Merge Changes合並操作

Stash Changesstash操作,具體用法,你若不知,可以參考一下下面的文章

... ...

這里省略剩下的那些操作,關於merge、stash、reset的一些操作細節,需要先懂得這三個命令的相關參數的具體含義,再去操作就很好理解了。

OK,關於右鍵菜單就介紹到這兒了,可以看到它能做的事兒——

1. 非常方便的對對比文件或者文件夾的差異,試圖直觀明了
2. 方便做常規的add/commit/revert操作等
3. 方便操作版本庫的相關管理,如fetch/merge/push/rebase等等

2.1 Version Control面板

OK,接下來,介紹一下Version Control面板——

首先,來介紹對應Local Changes

這里也就是工作區的更改與當前版本差異的diff文件列表,Unversioned
Files也就是代表沒有加入到版本管理的文件列表,需要進行add操作,添加進緩存區中;Default中的文件是代表版本管理中經過本地更改的文件,
需要進行add 和commit操作,將更改的文件添加入緩存區中並提交到本地版本庫中。要知曉git add和git commit做了什麼事兒

git add:暫存區的目錄樹被更新,同時工作區修改(或新增)的文件內容被寫入到對象庫中的一個新的對象中,而該對象的ID 被記錄在暫存區的文件索引中。
git commit:暫存區的目錄樹寫到版本庫(對象庫)中,對應的分支會做相應的更新。即HEAD指向的目錄樹就是提交時暫存區的目錄樹

可以對新增的文件進行add 操作,如下——

其餘選項——

Revert:同上述講述,即還原本地變更

Move to Another Changelist:轉入其他變更標記,分門別類,好管理

Show Diff:同上述講述

Jump to Source:直接打開變更源文件

Ignore:加入.gitnore文件中

Create Patch:打變更補丁

Shelve Changes:與stash功能略相近,請參看後邊文章

緊接著,我們最常用的操作就是Commit Changes了——

可以單獨去commit,當然也可以commit和push 一起進行。

可以看出來,這里的Local Changes也就起到了"git status"命令的作用。

OK,繼續介紹log面板——

選中相應分支,右鍵,我們看到——

我們看到,常規的選項,在上述中已提及過,在此就不在啰嗦,這里的Cherry-Pick,指的是將選中版本變更的文件內容merge進當前工作區中,我們會看到,同樣會出現沖突的情況——

當我們選中merge操作時,看到如下圖——

雖然機器解決的沖突不是令人很滿意,不過你可以再merge result面板中,直接去解決沖突,直接看到歷史版本,比較直觀。

解決沖突後,也就讓需要再去做add和commit操作,至於怎麼使用,在上述已提及。

接下來是console面板,它用於記錄所有你通過webstorm中git操作的命令,如下——

看一看到,這里的命令行,也就是常規的我們熟知的命令行。

Version Control面板介紹到這兒。可以看到,我們使用Version Control面板,我們可以做的事兒——

1. 可以隨時看到本地變更的文件列表和內容,方便提交及還原
2. 看到所有分支(自己與小夥伴兒的)動態,及對應的變更內容,方便對比文件,方便追查問題
3. 可以reset或者merge任意版本
4. 同樣可以看到任意操作的命令行,利於學習git命令行

3. 優勢

整體而言,個人覺得webstorm操作git起來,還是很方便,大致分成三類——

1. 對比類操作compare
2. 倉庫類操作repository
3. 本地操作local changes

個人覺得也是一個非常不錯的學習脈絡,整體來看,其最大的優勢還是在清晰明了的視圖上。

4. 總結

至此,對webstorm如何操作git的介紹就介紹完畢,我在這兒,舉一個最常規的git操作場景,大家可以回顧著操作試試——

常規合作開發(同一分支開發 / 不同分支開發): add and commit --> fetch —> compare —> merge (and resolve conflicts) —> push

從接觸git,到使用git命令行,到理解git常規工作原理,再到深入使用webstorm操作git,整體而言,需要做到——

1. 要熟知git常用的理論知識
2. 要熟悉命令行,如果你脫離了webstorm這樣的IDE,同樣能夠進行git版本管理
3. 好好利用IDE帶來的視圖清晰這一個優勢,更快的查詢問題、解決問題

3. 你們在Github上面的第一個項目是什麼有沒有什麼有趣的項目

是猜拳游戲,有沒有趣是個人愛好,我覺得沒有有趣的項目。

GitHub是一個面向開源及私有軟體項目的託管平台,除了Git代碼倉庫託管及基本的Web管理界面以外,還提供了訂閱、討論組、文本渲染、在線文件編輯器、協作圖譜(報表)、代碼片段分享(Gist)等功能。

GitHub上已自動配置的Mac筆記本電腦,一個工具,可以轉換設置Linux或Windows機器。BOXEN是GitHub的自動化工具,設置和配置的Mac筆記本電腦軟體開發或其他類型的工作,正在使用他們的開發人員,律師,設計師,付貨人等。

BOXEN的基礎上收集了大量的幾十個木偶模塊,使設置的各種軟體,如卡桑德拉,Mongo DB中,Java軟體中,Python和Ruby開發中,節點,JS,nginx的,Skype公司,甚至MINECRAFT。雖然機器上配備了一個預配置,每個用戶都可以調整它的配置應有的作用。

4. webstrom怎麼納入git管理,修改的時候不變顏色

修改WebSotorm背景色

1
默認的WebStorm的背景色是純白色,這種顏色更容易讓你引起眼部疲勞。

2
點擊「文件」→「設置」

3
找到並點擊「Colors & Fonts」打開「Editor」(編輯)

4
打開「編輯」後,找到「HTML」

5
這時,查看右側,找到如下圖的選框,選擇你所喜歡的背景色。

6
確定背景色後,找到並點擊「Save as」選項,隨意輸入你喜歡的名字。

修改字體大小

點擊並打開「Colors & Fonts」,找到「Font」

這時,查看窗口右側,找到你剛剛輸入的那個命名,在找到Size選項。

直接在Size後的窗口中輸入數字即可,我用的是20。大家根據喜好修改就可以了

5. gerrit組件---gitweb原理及安裝

yum  -y install  gitweb

vim  /etc/httpd/conf/httpd.conf

在末尾添加

##gitweb

<Directory"/var/www/git">             ###yum安裝gitweb默認有的

    AddHandler cgi-script  .cgi

    DirectoryIndex   index.cgi   gitweb.cgi

    Order allow,deny

     Allow from all

</Directory>

重啟httpd

systemctl restart httpd

a。vim  /etc/gitweb.conf

在最末行加上

$projectroot = "/localdisk/gerrit/git"        ###gerrit中git庫文件位置

b。vim /localdisk/gerrit/etc/gerrit.config       ####修改gerrit配置文件

在後面添加

【gitweb】

              type = gitweb

              cgi = /var/www/git/gitweb.cgi

c。重啟gerrit

/localdisk/gerrit/bin/gerrit.sh  restart

6. git 倉庫web項目應該保存哪些文件

git作為版本控制工具,你完全可以把你們項目組需要用到的文件保存到倉庫中,方便項目組成員一起後續維護和回滾
在WEB項目中,經常需要安裝npm包到node_moles,這個文件夾是非常龐大的,可以不用上傳到參考中,項目組通過package.json和package.lock.json來保證項目用到的npm包一致
另外像是日誌文件和緩存文件也是可以不用上傳

7. 如何用git 啟動並運行一個web伺服器

1、首先讓需要自動運行的類繼承javax.servlet.http.HttpServlet 2、把需要自動運行的類中寫一個init方法。(servlet應用程序啟動的入口就是init方法) public void init(){ System.out.println("這樣在web容器啟動的時候,就會執行這句話了!"...

8. 如何利用git webhooks 實現網站代碼自動化部署

1. 生成公鑰

公鑰有兩個:1. git用戶公鑰,2. 部署公鑰:

git用戶公鑰

ssh-keygen -t rsa -C "[email protected]"
# 然後一直回車就行
# 生成的文件通常是 /root/.ssh/id_rsa,如果非root用戶請查看提示上的路徑

1
2
3

ssh-keygen -t rsa -C "[email protected]"
# 然後一直回車就行
# 生成的文件通常是 /root/.ssh/id_rsa,如果非root用戶請查看提示上的路徑

部署公鑰

sudo -Hu www ssh-keygen -t rsa # 請選擇 「no passphrase」,一直回車下去

2. 准備鉤子文件

創建和修改目錄許可權:

mkdir /home/wwwroot/website.com/hook
chown -R www:www /home/wwwroot/website.com/hook

1
2

mkdir /home/wwwroot/website.com/hook
chown -R www:www /home/wwwroot/website.com/hook

寫入鉤子文件:

sudo -Hu www touch /home/wwwroot/website.com/hook/index.php

1

sudo -Hu www touch /home/wwwroot/website.com/hook/index.php

<?php

error_reporting(1);

$target = '/home/wwwroot/website.com'; // 生產環境web目錄

$token = '您在coding填寫的hook令牌';
$wwwUser = 'www';
$wwwGroup = 'www';

$json = json_decode(file_get_contents('php://input'), true);

if (empty($json['token']) || $json['token'] !== $token) {
exit('error request');
}

$repo = $json['repository']['name'];

// $cmds = array(
// "cd $target && git pull",
// "chown -R {$wwwUser}:{$wwwGroup} $target/",
// );

// foreach ($cmds as $cmd) {
// shell_exec($cmd);
// }

// 感謝@墨跡凡指正,可以直接用www用戶拉取代碼而不用每次拉取後再修改用戶組

$cmd = "sudo -Hu www cd $target && git pull";

shell_exec($cmd);

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

<?php

error_reporting(1);

$target = '/home/wwwroot/website.com'; // 生產環境web目錄

$token = '您在coding填寫的hook令牌';
$wwwUser = 'www';
$wwwGroup = 'www';

$json = json_decode(file_get_contents('php://input'), true);

if (empty($json['token']) || $json['token'] !== $token) {
exit('error request');
}

$repo = $json['repository']['name'];

// $cmds = array(
// "cd $target && git pull",
// "chown -R {$wwwUser}:{$wwwGroup} $target/",
// );

// foreach ($cmds as $cmd) {
// shell_exec($cmd);
// }

// 感謝@墨跡凡指正,可以直接用www用戶拉取代碼而不用每次拉取後再修改用戶組

$cmd = "sudo -Hu www cd $target && git pull";

shell_exec($cmd);

確保你的hook文件可以訪問:http://example.com/hook/index.php,鉤子准備完成。

3.修改git配置和保存git用戶名密碼

sudo -Hu www git config --global credential.helper store # 永久保存
sudo -Hu www git config --global user.name "Bantes"
sudo -Hu www git config --global user.email "[email protected]" # 郵箱請與conding上一致

1
2
3

sudo -Hu www git config --global credential.helper store # 永久保存
sudo -Hu www git config --global user.name "Bantes"
sudo -Hu www git config --global user.email "[email protected]" # 郵箱請與conding上一致

在Coding網站

1.添加用戶公鑰

復制/root/.ssh/id_rsa.pub內容到個人設置頁的SSH公鑰里添加即可(https://coding.net/user/account/setting/keys)

2.添加部署公鑰

復制/home/www/.ssh/id_rsa.pub的內容並添加到部署公鑰:

選擇項目 > 設置 > 部署公鑰 > 新建 > 粘貼到下面框並確認

3.添加hook

選擇項目 > 設置 > WebHook > 新建hook > 粘貼你的hook/index.php所在的網址。比如:http://example.com/hook/index.php, 令牌可選,但是建議寫上。

稍過幾秒刷新頁面查看hook狀態,顯示為綠色勾就OK了。

初始化

1.我們需要先在伺服器上clone一次,以後都可以實現自動部署了:

sudo -Hu www git clone https://git.coding.net/yourname/yourgit.git /home/wwwroot/website.com/ --depth=1

1

sudo -Hu www git clone https://git.coding.net/yourname/yourgit.git /home/wwwroot/website.com/ --depth=1

這個時候應該會要求你輸入一次Coding的帳號和密碼,因為上面我們設置了永久保存用戶名和密碼,所以之後再執行git就不會要求輸入用戶名和密碼了。

**!!注意,這里初始化clone必須要用www用戶**

2.往Coding.net提交一次代碼測試:

在本地clone的倉庫執行:

git commit -am "test hook" --allow-empty
git push

1
2

git commit -am "test hook" --allow-empty
git push

OK,稍過幾秒,正常的話你在配置的項目目錄里就會有你的項目文件了。

初始化Laravel框架

1. 下載Composer

在項目目錄下執行:

sudo -Hu www curl -sS https://getcomposer.org/installer | php
sudo -Hu www php composer.phar install

1
2

sudo -Hu www curl -sS https://getcomposer.org/installer | php
sudo -Hu www php composer.phar install

**!!記得在本地提交的時候在.gitignore中加上composer.phar**

9. github是干什麼的

github是一個面向開源及私有軟體項目的託管平台,因為只支持Git 作為唯一的版本庫格式進行託管,故名gitHub。

GitHub於2008年4月10日正式上線,除了git代碼倉庫託管及基本的Web管理界面以外,還提供了訂閱、討論組、文本渲染、在線文件編輯器、協作圖譜(報表)、代碼片段分享(Gist)等功能。目前,其注冊用戶已經超過350萬,託管版本數量也是非常之多,其中不乏知名開源項目Rubyon Rails、jQuery、python等。

主要功能

GitHub可以託管各種git庫,並提供一個web界面,但與其它像SourceForge或Google Code這樣的服務不同,GitHub的獨特賣點在於從另外一個項目進行分支的簡易性。

為一個項目貢獻代碼非常簡單:首先點擊項目站點的"fork"的按鈕,然後將代碼檢出並將修改加入到剛才分出的代碼庫中,最後通過內建的"pull request"機制向項目負責人申請代碼合並。已經有人將GitHub稱為代碼玩家的MySpace。

10. git+webpack團隊協作開發的時候如何託管文件

確實,每次打包從入口開始,會parse所有的依賴,多的時候竟然打包一次要2秒多,簡直不能忍。然而,有幾個解決方案,最有效的,是使用weboack的watch,只有文件md5變化時,才會重新打包,並且只parse有變化的文件,其他沒變化的文件是使用緩存的