程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python學習筆記_Devops_Day04

編輯:Python

CI/CD:持續集成/持續交付

程序語言:

  • 解釋執行:shell / python / php
  • 編譯執行:c / c++ / go / java
# vim hello.c
#include <stdio.h>
int main(void){
printf("Hello World!\n");
return 0;
}
# gcc -o hello hello.c
# ./hello
graph LR
dev(程序員)--推送-->git(git server)
ci(jenkins)--拉取-->git
app(應用服務器)--拉取-->ci

主機規劃:

  • 192.168.4.5:程序員主機
  • 192.168.4.6:gitlab服務器(4G以上內存)
  • 192.168.4.7:jenkins服務器

git使用

全部在192.168.4.5上實現。

SCM:軟件配置管理,如git / svn

# 基本配置
[[email protected] ~]# yum install -y git
# 環境基本配置
[[email protected] ~]# git config --global user.name "Mr.Zhang"
[[email protected] ~]# git config --global user.email "[email protected]"
[[email protected] ~]# git config --global core.editor vim
[[email protected] ~]# git config --list
[[email protected] ~]# cat ~/.gitconfig

git的三個重要區域

graph LR
work(工作區)--git add-->stage(暫存區)
stage--git commit-->ver(版本庫)

創建版本庫

  • 新建工程的同時創建版本庫
[[email protected] ~]# git init mytest
初始化空的 Git 版本庫於 /root/mytest/.git/
[[email protected] ~]# ls -A mytest/
.git
  • 已有軟件目錄
[[email protected] ~]# mkdir myweb
[[email protected] ~]# cd myweb/
[[email protected] myweb]# echo '<h1>my web site</h1>' > index.html
[[email protected] myweb]# ls
index.html
[[email protected] myweb]# git init .
初始化空的 Git 版本庫於 /root/myweb/.git/
[[email protected] myweb]# ls -A
.git index.html

加入跟蹤

[[email protected] myweb]# git status
# 位於分支 master
#
# 初始提交
#
# 未跟蹤的文件:
# (使用 "git add <file>..." 以包含要提交的內容)
#
# index.html
提交為空,但是存在尚未跟蹤的文件(使用 "git add" 建立跟蹤)
[[email protected] myweb]# git status -s
?? index.html # 問號表示狀態未知
# 創建.gitignore忽略不想加入版本庫的文件
[[email protected] myweb]# vim .gitignore
*.swp
.gitignore
# 將目錄下所有文件加入跟蹤
[[email protected] myweb]# git add .
[[email protected] myweb]# git status
# 位於分支 master
#
# 初始提交
#
# 要提交的變更:
# (使用 "git rm --cached <file>..." 撤出暫存區)
#
# 新文件: index.html
#
[[email protected] myweb]# git status -s
A index.html

撤出暫存區

[[email protected] myweb]# git rm --cached index.html
rm 'index.html'
[[email protected] myweb]# git status -s
?? index.html

確認至版本庫

[[email protected] myweb]# git add .
[[email protected] myweb]# git status -s
A index.html
[[email protected] myweb]# git commit
[[email protected] myweb]# git status
# 位於分支 master
無文件要提交,干淨的工作區

修改文件,繼續提交

[[email protected] myweb]# echo '<h2>2nd version</h2>' >> index.html
[[email protected] myweb]# git status
# 位於分支 master
# 尚未暫存以備提交的變更:
# (使用 "git add <file>..." 更新要提交的內容)
# (使用 "git checkout -- <file>..." 丟棄工作區的改動)
#
# 修改: index.html
#
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
[[email protected] myweb]# git status -s
M index.html
[[email protected] myweb]# git add .
[[email protected] myweb]# git commit -m "2nd version"
[[email protected] myweb]# git status
# 位於分支 master
無文件要提交,干淨的工作區

刪除工作區文件並恢復

[[email protected] myweb]# cp /etc/hosts .
[[email protected] myweb]# git status -s
?? hosts
[[email protected] myweb]# git add .
[[email protected] myweb]# git commit -m "add hosts"
[master 3145cda] add hosts
[[email protected] myweb]# git status
# 位於分支 master
無文件要提交,干淨的工作區
[[email protected] myweb]# rm -rf *
[[email protected] myweb]# git status
# 位於分支 master
# 尚未暫存以備提交的變更:
# (使用 "git add/rm <file>..." 更新要提交的內容)
# (使用 "git checkout -- <file>..." 丟棄工作區的改動)
#
# 刪除: hosts
# 刪除: index.html
#
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
[[email protected] myweb]# git checkout -- *
[[email protected] myweb]# ls
hosts index.html

改名、刪除版本庫中文件

[[email protected] myweb]# cp /etc/passwd .
[[email protected] myweb]# git add .
[[email protected] myweb]# git commit -m "add passwd"
[[email protected] myweb]# git mv passwd mima
[[email protected] myweb]# git status
# 位於分支 master
# 要提交的變更:
# (使用 "git reset HEAD <file>..." 撤出暫存區)
#
# 重命名: passwd -> mima
#
[[email protected] myweb]# git commit -m "mv passwd mima"
[master e84a1ea] mv passwd mima
1 file changed, 0 insertions(+), 0 deletions(-)
rename passwd => mima (100%)
[[email protected] myweb]# git rm hosts
rm 'hosts'
[[email protected] myweb]# ls
index.html mima
[[email protected] myweb]# git status
# 位於分支 master
# 要提交的變更:
# (使用 "git reset HEAD <file>..." 撤出暫存區)
#
# 刪除: hosts
#
[[email protected] myweb]# git commit -m "rm hosts"
[master 3c281fc] rm hosts
1 file changed, 260 deletions(-)
delete mode 100644 hosts
[[email protected] myweb]# git status

切換到指定提交位置

[[email protected] myweb]# git log # 查看提交歷史
# 切換到歷史提交
[[email protected] myweb]# git checkout 92385f5778c954d683c5d32537cf41d4da8c07e6
# 返回到最近的位置
[[email protected] myweb]# git checkout master

分支管理

  • 默認git有一個分支稱作master
  • 用戶可以創建自定義的分支
  • git分支在軟件開發中常用
# 查看所有分支
[[email protected] myweb]# git branch
* master
# 創建分支,確保工作區是干淨的
[[email protected] myweb]# git branch b1
[[email protected] myweb]# git branch
b1
* master # *號表示目前所處分支
# 切換分支
[[email protected] myweb]# git checkout b1
切換到分支 'b1'
[[email protected] myweb]# git branch
* b1
master
# 在當前分支執行提交
[[email protected] myweb]# cp /etc/motd /etc/redhat-release .
[[email protected] myweb]# git add .
[[email protected] myweb]# git commit -m "add motd rh-release"
# 合並分支
[[email protected] myweb]# git checkout master
切換到分支 'master'
[[email protected] myweb]# ls
index.html mima
[[email protected] myweb]# git merge b1
[[email protected] myweb]# ls
index.html mima motd redhat-release
# 刪除分支
[[email protected] myweb]# git branch -d b1
已刪除分支 b1(曾為 0639c44)。

gitlab服務器

  • 啟動虛擬機,至少4GB內存,安裝docker軟件
  • 將gitlab_zh.tar導入
---創建虛擬機完成後,安裝docker後重啟服務
# systemctl start docker
# systemctl enable docker
# docker load < gitlab_zh.tar #導入gitlab中文鏡像

因為gitlab容器需要用22端口,修改虛擬機的ssh端口

[[email protected] ~]# vim /etc/ssh/sshd_config
Port 2022
[[email protected] ~]# systemctl restart sshd
# 退出登陸再次連接時,需要指定端口號
[[email protected] phase5]# ssh -p2022 192.168.1.137

啟動容器

[[email protected] ~]# docker run -d -h gitlab --name gitlab -p 443:443 -p 80:80 -p 22:22 --restart always -v /srv/gitlab/config:/etc/gitlab -v /srv/gitlab/logs:/var/log/gitlab -v /srv/gitlab/data:/var/opt/gitlab gitlab_zh:latest
# gitlab容器需要的資源比較多,所以需要較長的啟動時間
[[email protected] ~]# docker ps # 狀態顯示為healthy時才可用,需要等幾分鐘

配置gitlab:http://192.168.1.137(實驗環境虛擬機ip)

  • 首次登陸,需要為root用戶設置密碼。
  • gitlab重要的概念
  • 群組group:對應一個開發團隊
  • 成員member:將用戶加入到組中
  • 項目project:對應軟件項目

創建名為devops的組,類型公開。

創建用戶。新建用戶時不能設置密碼,但是點擊編輯用戶界面可以設置密碼。

創建項目myweb,類型公開,為組devops創建。授權新建用戶是其主程序員。

配置用戶免密上傳代碼

  • 用戶在192.168.1.137上可以免密上傳代碼
[[email protected] myweb]# ssh-keygen -t rsa -C "[email protected]" -b 4096
[[email protected] myweb]# cat ~/.ssh/id_rsa.pub
#點擊gitlab用戶頭像的個人設置中,左邊的導航欄中有SSH密鑰,將生成的公鑰碼粘貼進去,在上傳代碼時就可以免密上傳。
# 推送代碼
[[email protected] myweb]# git remote rename origin old-origin
# 出現以下錯誤可以忽略
error: 不能重命名配置小節 'remote.origin' 到 'remote.old-origin'
[[email protected] myweb]# git remote add origin [email protected]:devops/myweb.git
[[email protected] myweb]# git push -u origin --all
[[email protected] myweb]# git push -u origin --tags

tag標記

[[email protected] myweb]# git tag 1.0
[[email protected] myweb]# cp /etc/selinux/config .
[[email protected] myweb]# git add .
[[email protected] myweb]# git commit -m "add selinux config"
[[email protected] myweb]# git tag 2.0
[[email protected] myweb]# git tag
1.0
2.0
[[email protected] myweb]# git push
[[email protected] myweb]# git push --tag

下載代碼

  • 在web頁面中,有個下載的標志,可以根據需求下載哪種類型的代碼壓縮包
  • 也可以在命令行通過SSH或者http方式下載代碼
[[email protected] tmp]# git clone http://192.168.1.137/devops/myweb.git

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved