美文网首页
代码部署发布时候遇到的问题

代码部署发布时候遇到的问题

作者: yangyangrenren | 来源:发表于2018-04-28 15:06 被阅读0次

    在使用spinnaker发布代码时候,遇到的问题是这样的场景:使用git管理代码版本,每一次push之后,都会有一个tag,类似“ 551bc1ab”这样的一个标志,在cd自动化部署环境中,发布工程时候,会看到这种tag。
    1.第一次提交代码时候,本地测试,ok;发布到线上,也是ok的;
    2.修改代码之后,本地测试,ok;再次提交,发布到线上,访问某接口,报错,而且根本就没有执行进入到接口里面。最关键的是,修改的代码,仅仅只是增加了简单的print语句以及if判断等,不涉及其他的代码。而且本地测试,是ok的,线上就出问题了。

    具体报错信息如下:

    Blueprint' object has no attribute 'json_decoder'
    

    两次提交的代码,除了修改的代码,其他没有任何区别,但就是一个可以,一个不行。最关键的是,修改的代码,不会造成什么影响。从自动构建这里入手,发现了问题所在。


    code.devops.******.com

    然后查看部署的日志,发现了不一样的地方,第一次线上正常时候,是使用的

    Collecting flask~=0.11 (from -r requirements.txt (line 3))
      Downloading http://pypi.devops.*******.com/packages/source/f/flask/Flask-0.12.2-py2.py3-none-any.whl?remote=http%3A%2F%2Fpypi.doubanio.com%2Fpackages%2F77%2F32%2Fe3597cb19ffffe724ad4bf0beca4153419918e7fa4ba6a34b04ee4da3371%2FFlask-0.12.2-py2.py3-none-any.whl
    

    第二次上线时候,使用的

    Collecting flask~=0.11 (from -r requirements.txt (line 3))
      Downloading http://pypi.devops.*****.com/packages/source/f/flask/Flask-0.12.3-py2.py3-none-any.whl?remote=http%3A%2F%2Fpypi.doubanio.com%2Fpackages%2F24%2F3e%2F1b6aa496fa9bb119f6b22263ca5ca9e826aaa132431fd78f413c8bcc18e3%2FFlask-0.12.3-py2.py3-none-any.whl
    

    可以看到这两者之间的差别了,第一次使用的是flask0.12.2,第二次使用的是flask0.12.3。

    在代码里面,requirements.txt文件中,对flask版本的控制是

    flask~=0.11
    

    然后,将requirements.txt中修改为flask==0.12.2,即可。

    In the requirements.txt for a Python library I am using, one of the requirements is specified like:
    mock-django~=0.6.10
    What does ~= mean?
    It means it will select the lastest version of the package, greater or equal to 0.6.10, but still in the 0.6.* version, so it won't download the 0.7.0 for example. It ensures you will get security fixes but keep backward-compatibility, if the package maintener respects the semantic versionning (which state that breaking changes should occurs only in major versions).
    Or, as said by the PEP 440:

    For a given release identifier V.N , the compatible release clause is approximately equivalent to the pair of comparison clauses:>= V.N, == V.*

    相关文章

      网友评论

          本文标题:代码部署发布时候遇到的问题

          本文链接:https://www.haomeiwen.com/subject/tofglftx.html