Docker+Git效率工作

前言

事情是这样的,首先之前不知道git这个利器,就把代码复制来粘贴去,一个人写代码还好,几个人,特别是一个团队协同工作,这种复制粘贴,U盘拷贝代码,QQ发来发去代码的方式简直就是噩梦,非但麻烦,而且非常凌乱,反正我是受不了。然后,知道git以后才发现自己和它相见恨晚,先别说什么版本控制工具,首先光是托管代码就让我爽一番(svn工作流模式),请注意,我现在是以完全菜鸟的视角阐述,大神们请掠过。

引入了git,整个协同工作有条不紊多了,我的思路也清晰多了,可是问题又来了,项目开始的时候我只是考虑本机开发的问题,嗯,在本机的确没有问题了,但是后面有个新人加进项目后有个问题突然暴露了出来——多人协同开发中除了代码还有环境[环境描述,依赖,缓存,参数,配置等]!首先他和我习惯用不同的系统开发(他用windows,我用linux - -),然后各种环境问题(一会儿缺这个包,一会儿又编译不通过,等下报个错,分分钟折腾死你)。讲真,加班加点不重要,我突然想到,如果以后要部署到很多服务器,那岂不是又要重重复复做同样的功夫?想想都心累,可是docker解决了我这个困扰。

docker是个热门的虚拟容器的技术,其实我是想都没有想过要用到它的时候,虽然我之前知道有docker这么一个玩意,好像很牛逼,但是也就是仅仅停留在知道的程度,至于它能做什么,为什么会存在,我没有任何概念,我曾一度想看懂一点docker,但是各种什么虚拟啊,容器啊,完全搞不懂,想想那时候还是大二的懵懂青春.

git+docker,一个管理代码,一个管理环境


Git

Git相信大家都不陌生,git是linus大神继linux内核以后又一个杰作之一,关于git的历史,可以上Wikipedia看一看,然而在说git之前,我想聊聊svn。

svn也是一种版本控制工具,其实“版本控制工具”这个词乍一听完全不知所云,那就抛开它的定义,直接说它究竟做了什么。一开始呢,写代码的人不多,大家就直接把代码传来传去就好了,对,就是我在前言里面说的各种复制粘贴,QQ传什么的,当然国外不用QQ,可是传着传着就乱套了,你的是什么时候的代码,然后我的又和你发布有什么不同,修改了哪里等等,简直乱成一锅粥,特别是团队的管理者,最不爽就是这种状况,把自己都搞乱了还得了?这时候svn诞生了(当然还有其他的版本控制工具,我这里以svn作为代表),svn是集中式的代码管理,也就是说得有一个中心的svn服务器一直管理着代码,开发者本地是没有这个仓库的,当开发者修改完代码,或者有什么新的代码,就直接提交到中心的svn服务器就好了,非常清楚明确,但是有个很大问题就是,万一中心的svn的服务器挂了呢?或者是我连不上中心的svn服务器?那我岂不是干等着修复问题,而没有办法立即工作?那我打盘阴阳师再回来吧:)

开玩笑的,没有办法立即工作是很不爽的一件事,有什么办法?git,这家伙是分布式的,何为分布式?就是每一个开发者都有一个代码完整的代码仓库,中心服务器就算挂了或者网络无法链接的时候,可以通过其他有仓库的同事克隆一份,而且它可以先提交到本地的仓库,再等中心代码仓库好了或者网络恢复了再一个push命令提交到中心代码仓库,是不是比svn好那么一丢丢?其实基于这个特性,git好的其实不只是一丢丢,不过这个好处得你自己玩玩才能够更加细致地体会了,我就不展开来讲了.

但是svn还是有存在的价值,因为svn的简单易用,而且方便集中式管理,所以企业非常偏爱svn,外加git有一定的学习成本,虽然我倒是不觉得git能有多少学习成本…..- -

Git几点须知

  1. git本身不追踪目录的变化,所以你创建一个空目录,你会发现提交的变更里面并没有这个你创建的空目录,你要问了,如果不追踪目录变化,那为什么我改变了一个目录的名字,而变更又会被包括进去呢?那是因为你这个目录下存在文件,你改变了目录的名字,相当于改变了这个目录下的文件的路径,也就是说改变了文件,所以git要追踪这个变化.

  2. 本地的代码仓库由工作区,暂存区和本地分支组成:工作区就是你现在的路径下的文件,而暂存区就是git自己缓存区,把add放在这个区域中,最后就是本地分支,暂存区commit就是commit到本地分支了
    工作区<==>暂存区==>本地分支<==>远程仓库分支

  3. 什么是.gitignore,README.md,LICENCE?
    其实我一开始看到github项目里面都会有.gitignore,README.md这两个文件,我也不知道是啥,就懵懵懂懂地往自己的项目加这两个文件,我也是后面才知道,README.md是markdown文件(后面以md作为后缀,markdown写东西体验挺好的,它还有自己的语法,强烈推荐~),里面要写一些你想告诉看你代码的人的话,然后.gitignore的话,我是遇到需要屏蔽一些比如python的pyc文件,不想这些文件放进我的代码仓库,我才知道这个.gitignore有什么用,它就像它字面说的那样ignore一些东西。至于LICENCE的话,主要指的是开源许可,现在主流的就是GPL,BSD,MIT,Apache等等,你可能都有耳闻,它们之间的关系可以这样表达[感谢阮一峰老师做的图解]:

    这里写图片描述

    这里我稍微梳理下git的常用指令,贴上来供参考

  git命令大合集

  git init repo  #初始化一个叫repo的本地git仓库
  #实际上就是创建一个repo的目录,然后目录下放一个.git,.git包含了git的所有记录,判断一个目录是否为git仓库,就看有没有.git目录,有.git目录往下都属于同一个git仓库
  #如果你把.git这个目录删除了,你的代码虽然还在,但是你的历史变更记录就全部没有了,所以一般别动这个.git

  git add file   #往暂存区添加一个叫file的文件
  git diff       #对比修改内容和git中最新记录的commit的区别,最好在add之前用git diff看一看,避免一些像加了空白键那种无效提交
  git add .      #往暂存区添加在git status中提示需要add的文件(git status不会提示被.gitignore忽略的文件)

  git commit  -m  "blablabla"  #把暂存区的内容正式提交到本地的当前分支,其中那个blablabla就是对本次提交的说明
  git commit 
  # 最近实践发现加了-m,我会尽可能挤成一行来写,但是push到github后,查看commit的时候就发现写的记录信息全部挤在一行,难看死了,有些还被忽略了
  # 所以不如直接git commit记录比较全面的信息
  # 不过之前得先指定git config --global core.editor /usr/bin/vim,不然貌似默认用的是vi,vi的话就有可能在你保存的时候会崩溃
  # 以至于你写的一堆提交信息全没了.

#git commit 还有一个-a的选项,是表示连同未add的文件改动也一同加进来,因为你可能add以后又改动了文件,而一般你前面add了内容就只用-m就可以了,不用-am

  git status  #查看当前所在git仓库情况
  git log     #查看提交历史,你会看到你自己之前commit时候的说明,各种blablabla
  git reflog  #查看操作历史

  git clone HTTPS/SSH #克隆一个项目
  # 常见的要么就是长成https型的(e.g. https://github.com/tesseract-ocr/tesseract.git)
  # 要么就是长成ssh型的(e.g. [email protected]:tesseract-ocr/tesseract.git)

  git remote -v  #查看远程代
  • 31
    点赞
  • 106
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
搭建一个项目自动化框架需要一些准备工作和步骤,以下是从0到1使用Docker + Jenkins + Git + Pytest + Allure搭建项目自动化框架的步骤: ## 准备工作 - 安装Docker:用于部署构建环境 - 安装Jenkins:用于构建和发布 - 创建Git仓库:用于代码管理 - 安装Pytest:用于自动化测试 - 安装Allure:用于测试报告展示 ## 步骤 ### 1. 创建Docker镜像 使用Dockerfile创建Docker镜像,镜像中包含了项目所需的依赖包和环境配置,可以使用Docker Compose来定义镜像和容器的关系。在Dockerfile中需要安装Python、Pytest、Allure以及其他项目所需的依赖包,例如: ```dockerfile FROM python:3.8-slim-buster # 设置工作目录 WORKDIR /app # 安装依赖包 RUN apt-get update \ && apt-get install -y gcc \ && pip install --upgrade pip \ && pip install pytest allure-pytest \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* # 复制项目代码 COPY . /app ``` ### 2. 创建Jenkins任务 使用Jenkins创建一个任务,任务中包括了代码的拉取、构建、测试、发布等步骤。在任务中需要配置Git仓库地址、Docker镜像地址、Pytest和Allure的路径等信息。 ### 3. 编写Pytest测试用例 编写自动化测试用例,使用Pytest作为测试框架。测试用例可以包括单元测试、集成测试、接口测试、UI测试等多种类型。在测试用例中需要使用Selenium或其他测试工具来模拟用户操作,例如: ```python import allure from selenium import webdriver @allure.feature('登录') def test_login(): # 初始化浏览器 browser = webdriver.Chrome() browser.get('http://example.com') # 模拟用户操作 browser.find_element_by_id('username').send_keys('admin') browser.find_element_by_id('password').send_keys('123456') browser.find_element_by_id('login').click() # 断言结果 assert '欢迎您' in browser.page_source # 关闭浏览器 browser.quit() ``` ### 4. 生成Allure测试报告 使用Allure生成测试报告,可以直观地展示测试结果和测试覆盖率。在Jenkins任务中需要配置Allure的路径和命令,例如: ```bash # 生成Allure测试报告 allure generate --clean --output allure-reports ./tests ``` ### 5. 发布Docker镜像 使用Jenkins发布Docker镜像,可以将构建好的Docker镜像上传到Docker Hub或私有镜像仓库中。在Jenkins任务中需要配置Docker的登录信息、镜像名称和标签等信息,例如: ```bash # 发布Docker镜像 docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD docker build -t $DOCKER_REPO:$BUILD_NUMBER . docker push $DOCKER_REPO:$BUILD_NUMBER ``` 完成以上步骤后,就可以使用Docker + Jenkins + Git + Pytest + Allure搭建一个完整的项目自动化测试框架。这个框架可以实现代码管理、自动化测试、测试报告展示和发布等功能,大大提高了测试效率和代码质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值