持续集成/持续部署(1)Git Gitlab
DevOps简介
DevOps是一种理念 理念共同协作
指让开发测试运维更好的沟通和协作
自动化一切重复的工作 把时间节省下来交于人与人之间的沟通
只注重技术不注重成本不是devops所提倡的
git
系统环境准备
[root@gitlab ~]# cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)
[root@gitlab ~]# getenforce
Disabled
[root@gitlab ~]# iptables-save
[root@gitlab ~]#
安装git
查看git是否安装
[root@gitlab ~]# rpm -qa git
git-1.8.3.1-21.el7_7.x86_64
使用yum进行安装
[root@gitlab ~]# yum -y install git
配置Git
1.配置git仓库的使用者信息(注意单词不能写错 否则无法使用git)
[root@gitlab ~]# git config --global user.name 'ahui'
[root@gitlab ~]# git config --global user.email '123456@qq.com'
[root@gitlab ~]# git config --global color.ui true
2.查看配置的结果
[root@gitlab ~]# git config --list
user.name=ahui
user.email=123456@qq.com
color.ui=true
#配置文件所在位置
[root@gitlab ~]# cat .gitconfig
[user]name = ahuiemail = 123456@qq.com
[color]ui = true
初始化仓库
1.对已经存在的目录进行初始化 把目录作为代码仓库
[root@gitlab ~]# mkdir git_data
[root@gitlab ~]# cd git_data/
2.使用git init初始化为仓库
[root@gitlab git_data]# git init
Initialized empty Git repository in /root/git_data/.git/
3.仓库的位置位置当前目录的隐藏目录.git
[root@gitlab git_data]# ll -a
total 0
drwxr-xr-x 3 root root 18 Aug 9 10:21 .
dr-xr-x---. 3 root root 146 Aug 9 10:20 ..
drwxr-xr-x 7 root root 119 Aug 9 10:21 .git
git使用
git的区域介绍
如果想把文件管理起来必须经过工作目录提交到暂存区然后在提交到本地仓库
git基础命令
1.创建普通文件
[root@gitlab git_data]# touch 1.txt
将普通文件提交到git的暂存区 .git目录下index为暂存区
查看当前目录的状态 使用git status
[root@gitlab git_data]# git status
# On branch master
#
# Initial commit
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# 1.txt
nothing added to commit but untracked files present (use "git add" to track)
2.使用git add file 将新的文件提交到暂存区
[root@gitlab git_data]# git add 1.txt
或者使用git add .将工作区的所有文件提交到暂存区
[root@gitlab git_data]# git add .
3.将暂存区的文件提交的本地仓库进行管理
commit: 提交
-m : 消息 描述信息 自定义内容
[root@gitlab git_data]# git commit -m "newfile 1.txt v1.1"
[master (root-commit) 5767802] newfile 1.txt v1.11 file changed, 0 insertions(+), 0 deletions(-)create mode 100644 1.txt
注意: 提交到了本地仓库则类似对当前的文件做了一次快照操作
每一次的commit提交都是为当前的状态做了一次快照
4.使用git rm --cached 删除暂存区的内容
[root@gitlab git_data]# git rm --cached 1.txt
rm '1.txt'
5.时刻保证当前的工作目录为干净的
[root@gitlab git_data]# git status
# On branch master
nothing to commit, working directory clean
6.git 删除后 通过暂存区恢复工作目录的文件 会覆盖 慎重使用
[root@gitlab git_data]# git checkout 1.txt
[root@gitlab git_data]# ll
total 0
-rw-r--r-- 1 root root 0 Aug 9 10:40 1.txt
7.git的删除流程
[root@gitlab git_data]# git rm 1.txt
rm '1.txt'
提交到暂存区
[root@gitlab git_data]# git add .
提交到本地仓库
[root@gitlab git_data]# git commit -m "del 1.txt"
8.git的重命名
[root@gitlab git_data]# git mv 1.txt 1.bak
[root@gitlab git_data]# git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# renamed: 1.txt -> 1.bak
#
[root@gitlab git_data]# git add .
[root@gitlab git_data]# git commit -m "modifile 1.txt--> 1.bak"
9.git的区域比对
git diff比对的是工作目录和暂存区的不同
git diff --cached比对的是暂存区和本地仓库的不同
[root@gitlab git_data]# git diff[root@gitlab git_data]# echo 11111 >> 1.bak
[root@gitlab git_data]# git diff
diff --git a/1.bak b/1.bak
index e69de29..f7c6dd0 100644
--- a/1.bak
+++ b/1.bak
@@ -0,0 +1 @@
+11111
[root@gitlab git_data]# git diff --cached
[root@gitlab git_data]# git add .
[root@gitlab git_data]# git diff
[root@gitlab git_data]# git diff --cached
diff --git a/1.bak b/1.bak
index e69de29..f7c6dd0 100644
--- a/1.bak
+++ b/1.bak
@@ -0,0 +1 @@
+11111
[root@gitlab git_data]# git commit -m "mofiled 1.bak--->11111"
[master 32758c0] mofiled 1.bak--->111111 file changed, 1 insertion(+)
[root@gitlab git_data]# git diff --cached
[root@gitlab git_data]#
10.看git的提交的日志
[root@gitlab git_data]# git log
commit 32758c01da6e5c695e6edad6e90d1f7c602ab81a
Author: ahui <123456@qq.com>
Date: Tue Aug 9 10:51:12 2022 +0800mofiled 1.bak--->11111
一行显示查看提交的日志
[root@gitlab git_data]# git log --oneline
32758c0 mofiled 1.bak--->11111
a2eebb8 modifile 1.txt--> 1.bak
5767802 newfile 1.txt v1.1
显示当前的指针指向
[root@gitlab git_data]# git log --oneline --decorate
32758c0 (HEAD, master) mofiled 1.bak--->11111
a2eebb8 modifile 1.txt--> 1.bak
5767802 newfile 1.txt v1.1
显示版本的详细信息
[root@gitlab git_data]# git log --oneline -p
32758c0 mofiled 1.bak--->11111
diff --git a/1.bak b/1.bak
index e69de29..f7c6dd0 100644
--- a/1.bak
+++ b/1.bak
@@ -0,0 +1 @@
+11111
只显示最近的一条信息
[root@gitlab git_data]# git log --oneline -p -1
32758c0 mofiled 1.bak--->11111
diff --git a/1.bak b/1.bak
index e69de29..f7c6dd0 100644
--- a/1.bak
+++ b/1.bak
@@ -0,0 +1 @@
+11111
11.通过日志进行代码的回滚
第一步: 查看日志
[root@gitlab git_data]# git log --oneline
a789ec1 newfile 1.2.3.txt
32758c0 mofiled 1.bak--->11111
a2eebb8 modifile 1.txt--> 1.bak
5767802 newfile 1.txt v1.1
第二步: 通过哈希值进行回滚操作
[root@gitlab git_data]# git reset --hard 5767802
HEAD is now at 5767802 newfile 1.txt v1.1
[root@gitlab git_data]# ll
total 0
-rw-r--r-- 1 root root 0 Aug 9 11:20 1.txt
使用git reflog查看所有的快照操作
[root@gitlab git_data]# git reflog
5767802 HEAD@{0}: reset: moving to 5767802
a789ec1 HEAD@{1}: commit: newfile 1.2.3.txt
32758c0 HEAD@{2}: commit: mofiled 1.bak--->11111
a2eebb8 HEAD@{3}: commit: modifile 1.txt--> 1.bak
5767802 HEAD@{4}: reset: moving to 576780277
99ba3c4 HEAD@{5}: commit: del 1.txt
5767802 HEAD@{6}: commit (initial): newfile 1.txt v1.1
使用哈希值快速回滚
[root@gitlab git_data]# git reset --hard a789ec1
HEAD is now at a789ec1 newfile 1.2.3.txt
[root@gitlab git_data]# ll
total 4
-rw-r--r-- 1 root root 6 Aug 9 11:23 1.bak
-rw-r--r-- 1 root root 0 Aug 9 11:20 1.txt
-rw-r--r-- 1 root root 0 Aug 9 11:23 2.txt
-rw-r--r-- 1 root root 0 Aug 9 11:23 3.txt
git分支
01.查看当前分支 星在谁的前面当前就是处于哪个分支
[root@gitlab git_data]# git branch
* master
02.创建dev分支
分支的名称可以自定义
[root@gitlab git_data]# git branch dev
[root@gitlab git_data]# git branchdev
* master
或者使用git checkout -b 分支名称 创建并切换到新的分支
[root@gitlab git_data]# git checkout -b dev
Switched to a new branch 'dev'
[root@gitlab git_data]# git branch
* devmaster
[root@gitlab git_data]# ll
total 4
-rw-r--r-- 1 root root 6 Aug 9 11:23 1.bak
-rw-r--r-- 1 root root 0 Aug 9 11:20 1.txt
-rw-r--r-- 1 root root 0 Aug 9 11:23 2.txt
-rw-r--r-- 1 root root 0 Aug 9 11:23 3.txt
-rw-r--r-- 1 root root 0 Aug 9 11:50 dev.txt
-rw-r--r-- 1 root root 0 Aug 9 11:53 zs.txt
03.切换到dev分支开发新的功能
[root@gitlab git_data]# git checkout dev
Switched to branch 'dev'
[root@gitlab git_data]# git branch
* devmaster
04.在dev分支创建dev.txt
[root@gitlab git_data]# touch dev.txt
[root@gitlab git_data]# git add .
[root@gitlab git_data]# git commit -m "newfile dev.txt v1.2"
[dev 55fe881] newfile dev.txt v1.21 file changed, 0 insertions(+), 0 deletions(-)create mode 100644 dev.txt
05.切换到master分支查看
[root@gitlab git_data]# git checkout master
Switched to branch 'master'
[root@gitlab git_data]# ll
total 4
-rw-r--r-- 1 root root 6 Aug 9 11:23 1.bak
-rw-r--r-- 1 root root 0 Aug 9 11:20 1.txt
-rw-r--r-- 1 root root 0 Aug 9 11:23 2.txt
-rw-r--r-- 1 root root 0 Aug 9 11:23 3.txt
[root@gitlab git_data]# git branchdev
* master
06.分支合并
在master主分支合并dev开发分支
[root@gitlab git_data]# git merge dev
Updating a789ec1..55fe881
Fast-forwarddev.txt | 01 file changed, 0 insertions(+), 0 deletions(-)create mode 100644 dev.txt
07.删除分支
[root@gitlab git_data]# git branch -d dev
Deleted branch dev (was 55fe881).
[root@gitlab git_data]# git branch
* master
08.冲突合并
修改1.bak第二行增加2222222
[root@gitlab git_data]# vim 1.bak
提交到暂存区
[root@gitlab git_data]# git add .
提交到分支的本地仓库
[root@gitlab git_data]# git commit -m 'modifled 1.bak>22222'
[dev 1d7e871] modifled 1.bak>222221 file changed, 1 insertion(+)
切换到主分支
[root@gitlab git_data]# git checkout master
Switched to branch 'master'
修改1.bak的第二行为test 提交到master的本地仓库
[root@gitlab git_data]# vim 1.bak
[root@gitlab git_data]# git add .
[root@gitlab git_data]# git commit -m "modifled 1.bak -->test"
[master 3855bc1] modifled 1.bak -->test1 file changed, 1 insertion(+)
合并代码失败
[root@gitlab git_data]# git merge dev
Auto-merging 1.bak
CONFLICT (content): Merge conflict in 1.bak
Automatic merge failed; fix conflicts and then commit the result.
[root@gitlab git_data]# cat 1.bak
11111
<<<<<<< HEAD
test
=======
ahui
>>>>>>> dev
解决代码冲突 手动解决(手动修改需要保留的内容和需要删除的内容然后提交到本地仓库即可)
[root@gitlab git_data]# vim 1.bak
[root@gitlab git_data]# git add .
[root@gitlab git_data]# git commit -m "merge dev...."
[master bcfe9ea] merge dev....
[root@gitlab git_data]# git status
# On branch master
nothing to commit, working directory clean
git标签
标签的作用:
标签也是指向了一次commit提交,是一个里程碑式的标签,回滚打标签直接加标签号,不需要加唯一字符串不好记
创建标签:git tag -a 版本 -m “信息”
[root@gitlab git_data]# git tag
[root@gitlab git_data]# git tag -a v1.3 -m "v1.3"
[root@gitlab git_data]# git tag
v1.3
[root@gitlab git_data]# git log --oneline --decorate
bcfe9ea (HEAD, tag: v1.3, master) merge dev....
3855bc1 modifled 1.bak -->test
1d7e871 modifled 1.bak>22222
efb6c05 newfile zs.txt
55fe881 newfile dev.txt v1.2
a789ec1 newfile 1.2.3.txt
32758c0 mofiled 1.bak--->11111
a2eebb8 modifile 1.txt--> 1.bak
5767802 newfile 1.txt v1.1
[root@gitlab git_data]# git tag -a v1.1 5767802 -m v1.1
[root@gitlab git_data]# git tag
v1.1
v1.3
通过标签快速回滚到对应的版本
[root@gitlab git_data]# git reset --hard v1.1
HEAD is now at 5767802 newfile 1.txt v1.1
[root@gitlab git_data]# ll
total 0
-rw-r--r-- 1 root root 0 Aug 9 11:20 1.txt
[root@gitlab git_data]# git reset --hard v1.3
HEAD is now at bcfe9ea merge dev....
[root@gitlab git_data]# ll
total 4
-rw-r--r-- 1 root root 18 Aug 9 15:00 1.bak
-rw-r--r-- 1 root root 0 Aug 9 11:20 1.txt
-rw-r--r-- 1 root root 0 Aug 9 15:00 2.txt
-rw-r--r-- 1 root root 0 Aug 9 15:00 3.txt
-rw-r--r-- 1 root root 0 Aug 9 15:00 dev.txt
-rw-r--r-- 1 root root 0 Aug 9 15:00 zs.txt
删除git标签
[root@gitlab git_data]# git tag
v1.1
v1.3
[root@gitlab git_data]# git tag -d v1.1
Deleted tag 'v1.1' (was 9b33304)
[root@gitlab git_data]# git tag
v1.3
查看版本的详细信息
[root@gitlab git_data]# git show v1.3
tag v1.3
Tagger: ahui <123456@qq.com>
Date: Tue Aug 9 14:58:31 2022 +0800v1.3
常用git命令
初始化仓库
git init提交文件到暂存区
git add file提交文件到本地仓库
git commit -m ‘描述信息’查看当前仓库的信息
git status将暂存区的内容覆盖工作目录
git checkout 1.txt删除文件
git rm 1.txt
git add .
git commit -m ‘描述信息’文件重命名
git mv 1.txt 1.bak比对文件
git diff 比对的工作区和暂存区的不同
git diff --cached 比对的暂存区和本地仓库的不同日志命令
git log # 查看当前仓库的提交日志
git log --oneline # 一行显示仓库的提交日志
git log --oneline --decorate # 显示指针指向
git log --oneline -p # 显示版本的详细信息
git log --oneline 1 # 显示最后的一条提交信息
git reflog # 查看所有的历史提交回滚操作
通过哈希值进行回滚操作
git reset --hard 哈希值
gitlab
安装gitlab
1.rz上传gitlab rpm包
-rw-r--r-- 1 root root 389758391 Aug 22 2018 gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm
[root@gitlab ~]# rpm -ivh gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm
warning: gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID f27eab47: NOKEY
error: Failed dependencies:policycoreutils-python is needed by gitlab-ce-10.2.2-ce.0.el7.x86_64
2.安装依赖
[root@gitlab ~]# yum -y install policycoreutils-python
3.安装
[root@gitlab ~]# rpm -ivh gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm
warning: gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID f27eab47: NOKEY
Preparing... ################################# [100%]
Updating / installing...1:gitlab-ce-10.2.2-ce.0.el7 ################################# [100%]
4.修改URL地址
练习直接配置成IP地址 http://10.0.0.200
[root@gitlab ~]# grep external_url /etc/gitlab/gitlab.rb
external_url 'http://gitlab.ahui.com'
5.重新配置加载 所有服务会自动启动
[root@gitlab ~]# gitlab-ctl reconfigure
6.gitlab的启动和停止命令
[root@gitlab ~]# gitlab-ctl start
[root@gitlab ~]# gitlab-ctl restart
[root@gitlab ~]# gitlab-ctl stop
[root@gitlab ~]# gitlab-ctl status
登录配置gitlab外观
第一次登录需要重新设置下密码最少8位
用户名: root 密码自定义
填写公司的logo和信息
创建组
基于组创建项目
将test仓库作为本地的远程仓库
第一步: 本地生成公钥
[root@gitlab ~]# ssh-keygen
第二步: 将本地的ssh公钥上传到gitlab root用户中
第三步: 进入本地已存在的仓库进行配置
[root@gitlab ~]# cd git_data/
查看远程仓库是否存在 默认为空
[root@gitlab git_data]# git remote
[root@gitlab git_data]#
如果存在 可以改名 可以删除 没有远程仓库不需要执行这条命令
[root@gitlab git_data]# #git remote rename origin old-origin
origin 远程仓库的名称 可以自定义
将test仓库配置成本地的远程仓库
添加远程仓库名称为origin
[root@gitlab git_data]# git remote add origin git@gitlab.ahui.com:test/test.git
查看远程仓库
[root@gitlab git_data]# git remote
origin
显示远程仓库的详细地址
[root@gitlab git_data]# git remote -v
origin git@gitlab.ahui.com:test/test.git (fetch)
origin git@gitlab.ahui.com:test/test.git (push)
删除远程仓库
[root@gitlab git_data]# #git remote remove origin
将本地代码推送到远程仓库test中
[root@gitlab git_data]# git push -u origin master
注意: 我们使用的为域名 在推送代码时linux会查找域名对应的IP地址 默认访问外网 所以我们需要做hosts解析
[root@gitlab git_data]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.200 gitlab.ahui.com
使用 git push推送代码到远程仓库
[root@gitlab git_data]# git push -u origin master
The authenticity of host 'gitlab.ahui.com (10.0.0.200)' can't be established.
ECDSA key fingerprint is SHA256:nWOnZaYg9W2wWVy4/jgCdTaCNvfE6UcGAfGsNWmim3Q.
ECDSA key fingerprint is MD5:e9:d2:21:29:44:25:90:49:23:ff:e2:e2:7d:cf:97:55.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'gitlab.ahui.com,10.0.0.200' (ECDSA) to the list of known hosts.
Counting objects: 23, done.
Compressing objects: 100% (15/15), done.
Writing objects: 100% (23/23), 1.84 KiB | 0 bytes/s, done.
Total 23 (delta 5), reused 0 (delta 0)
To git@gitlab.ahui.com:test/test.git* [new branch] master -> master
Branch master set up to track remote branch master from origin.
创建新的代码 然后推送到远程仓库
git push 推送代码到远程仓库
git clone 下载完整的仓库到本地
git pull 更新代码到本地
第一步: 创建或者修改代码文件
[root@gitlab git_data]# touch test.txt
第二步: 提交到暂存区
[root@gitlab git_data]# git add .
第三步: 提交到本地仓库
[root@gitlab git_data]# git commit -m "newfile test.txt"
第四步: 推送到远程仓库
[root@gitlab git_data]# git push -u origin master
创建普通用户
最后将用户添加到test组才可以看到对应的项目
然后到dev用户界面可以看到项目
然后打开10.0.0.7主机生成秘钥对
将公钥配置到dev用户下
最后在10.0.0.7命令行使用gitclone下载仓库
[root@test ~]# git clone git@gitlab.ahui.com:test/test.git
Cloning into 'test'...
The authenticity of host 'gitlab.ahui.com (10.0.0.200)' can't be established.
ECDSA key fingerprint is SHA256:nWOnZaYg9W2wWVy4/jgCdTaCNvfE6UcGAfGsNWmim3Q.
ECDSA key fingerprint is MD5:e9:d2:21:29:44:25:90:49:23:ff:e2:e2:7d:cf:97:55.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'gitlab.ahui.com,10.0.0.200' (ECDSA) to the list of known hosts.
remote: Counting objects: 29, done.
remote: Compressing objects: 100% (21/21), done.
remote: Total 29 (delta 8), reused 0 (delta 0)
Receiving objects: 100% (29/29), done.
Resolving deltas: 100% (8/8), done.
保护主干分支 禁止开发直接提交到主分支
开发推送代码到其他分支
1.创建dev分支
[root@test test]# git branch dev
[root@test test]# git branchdev
* master
2.在master主分支 推送dev分支到远程仓库
[root@test test]# git push -u origin dev
Counting objects: 3, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 218 bytes | 0 bytes/s, done.
Total 2 (delta 1), reused 0 (delta 0)
remote:
remote: To create a merge request for dev, visit:
remote: http://gitlab.oldboy.com/oldboy/test/merge_requests/new?merge_request%5Bsource_branch%5D=dev
remote:
To git@gitlab.oldboy.com:oldboy/test.git
* [new branch] dev -> dev
Branch dev set up to track remote branch dev from origin.
发起代码合并请求
选择dev分支 然后选择右上角的创建合并请求(只有第一次能看到此处有按键 第二次在菜单栏有合并请求)
或者使用:
第二步: 发布完成后需要到管理员界面进行合并代码
持续集成/持续部署(1)Git Gitlab相关推荐
- 最全的项目部署+持续集成解决方案:Jenkins + git + docker
1.概述 1.1 什么是持续集成,持续交付 持续集成( Continuous integration , 简称 CI )指的是,频繁地(一天多次)将代码集成到主干 持续交付/持续部署(Continuo ...
- GitLab持续集成持续部署(CICD)
其他博文连接 Ubuntu Server 16.04LTS 搭建GitLab服务器 ubuntu server 16.04 使用docker搭建jenkins和sonarqube Gitlab配置Gi ...
- 持续集成持续部署持续交付_如何开始进行持续集成
持续集成持续部署持续交付 Everything you need to know to get started with continuous integration: branching strat ...
- 应该如何做好持续集成和部署?
应该如何做好持续集成和部署? 前言 持续集成和部署是每一个互联网开发团队都必须要面对的问题,由于业务和技术团队快速增长,技术积累较弱,所以一个高效的,可持续的运维规范尤为重要. 高效可持续的运维环境需 ...
- CI/CD——构建企业级Docker+Jenkins+Git+Harbor流水线自动化持续集成持续发布平台
构建企业级Docker+Jenkins+Git+Harbor流水线自动化持续集成持续发布平台 CI/CD是什么? 持续集成(CI)/持续交付(CD)的优势 自动化部署流程图 Git Github Gi ...
- 持续集成/持续部署(3)Jenkins(2)
JenkinsPipeline CI/CD持续集成/持续部署 持续集成(Continuous integration)是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次 ...
- .NET Core 从 Github到 Nuget 持续集成、部署
一.前言 Nuget 作为一个.NET研发人员,我想你都不会陌生,他为我们提供非常方便的程序包管理,不管是版本,还是包的依赖都能轻松应对,可以说是我们的好助手.而 Nuget 除了官方nuget.or ...
- 使用Jenkins在Azure Web App上进行ASP.NET Core应用程序的持续集成和部署(CI/CD)–第4天
目录 主题 路线图 Jenkins 先决条件 使用Jenkins Azure Pipeline在Azure上的ASP.NET Core应用程序的CI/CD 创建新的管道作业 添加参数 添加管道脚本 运 ...
- 使用Jenkins在Azure Web App上进行ASP.NET Core应用程序的持续集成和部署(CI/CD)–第3天
目录 主题 路线图 先决条件 Azure Active Directory和服务主体 创建一个Azure Active Directory和服务主体 将应用程序集成到角色 将Jenkins与Azure ...
- 使用Jenkins在Azure Web App上进行ASP.NET Core应用程序的持续集成和部署(CI/CD)–第2天
目录 主题 路线图 先决条件 将ASP.NET Core应用发布到Azure应用服务 在Azure上配置Jenkins 在Azure上创建Jenkins服务器 解锁Jenkins 结论 主题 本系列文 ...
最新文章
- Nature重磅:管轶等发现穿山甲是SARS-CoV-2的中间宿主
- Oracle数据库知识要点
- java注释日志打印_java 注解结合 spring aop 实现自动输出日志
- 单片机按键软硬件设计技巧!
- cannot import name 'imresize' from 'scipy.misc'
- Halcon中visualize_object_model_3d算子详解
- maven项目发布到tomcat里lib包没有发布的问题
- LeetCode 982. 按位与为零的三元组(位运算+计数)
- 服务器采用虚拟化应用漂移,虚拟化技术在数字化医院建设中的应用
- 部署可道云_可道云-快速搭建个人用云网盘
- Netty与mina的比较
- 开源公司黄页之阿里巴巴开源软件推荐(一)
- 统一软件开发过程(RUP)的概念和方法
- spearman相关系数 matlab,数学建模——相关系数(4)——斯皮尔曼相关系数(spearman)...
- ubuntu下终端命令修改图片像素
- 从零开始学WEB前端——JavaScript数据类型
- VS2019+WDK10编写xp平台的驱动
- 计算机的集成显卡是什么意思,IGD、PEG、PCI的含义,我的电脑是集成显卡该选哪一项...
- 德语语法笔记——冠词的用法
- python 完全面向对象_python之面向对象
热门文章
- awk打印除第一列之外的所有列
- 基础类与基础算法学习
- 接入GoogePay 退款APi
- 实现只能同时一个人登陆管理后台
- hover前有无空格的区别
- sql sever 树的基础查询
- 【Netty基础】基于HTTP的文件下载Server实例
- 老码农回答为什么会有“在X有Y年的工作经验“这样的要求
- 你是一名【合格】前端工程师吗
- const int a; int const a; const int *a; int * const a; int const * a const; 之间的区别