zoukankan      html  css  js  c++  java
  • Travis CI用来持续集成你的项目

    这里持续集成基于GitHub搭建的博客为项目

    工具:

    zqz@ubuntu:~$ node --version
    v4.2.6
    zqz@ubuntu:~$ git --version
    git version 2.7.4
    zqz@ubuntu:~$ travis --version
    1.8.4
    
    

    Travis CI简介


    Travis CI 是目前新兴的开源持续集成构建项目,它与jenkins,GO的很明显的特别在于采用yaml格式,简洁清新独树一帜。目前大多数的github项目都已经移入到Travis CI的构建队列中,据说Travis CI每天运行超过4000次完整构建。

    注意:开始安装一大堆东西之前,你需要去Travis CI上注册一个账号。(一般都会使用github账号)

    Linux下的安装(强烈建议不要使用windows来CI)

    Deploy Key


    生成ssh密钥用于跟仓库通信

    ssh-keygen -t rsa -C "youremail@example.com"
    

    成功后,将.pub结尾的文件添加到github仓库中

    最后将id_rsa文件复制到我们项目的根目录,这样便于生成密钥。

    cp /home/zqz/.ssh_ci/id_rsa /home/zqz/study/zhaoqize.github.io
    

    安装并登陆travis


    安装

    gem install travis
    
    

    安装成功后,登陆travis

    travis login --auto
    

    登陆成功:

    Successfully logged in as zhaoqize!
    

    接着,登陆网页版,设置仓库。

    点击仓库名称左边的齿轮,设置开启下面三个。

    加密


    在加密之前我们先在项目跟目录下新建一个.travis.yml文件。

    加密的就是第一步生成的密钥id_rsa,由于前面我们将密钥复制到了项目目录,所以现在这里有id_rsa文件。

    //进入项目目录
    cd study/study/zhaoqize.github.io 
    
    //进行加密
    travis encrypt-file ssh_key --add
    

    加密成功:

    zqz@ubuntu:~/study/zhaoqize.github.io$ travis encrypt-file id_rsa --add
    Detected repository as zhaoqize/blog, is this correct? |yes|    
    encrypting id_rsa for zhaoqize/blog
    storing result as id_rsa.enc
    storing secure env variables for decryption
    
    Make sure to add id_rsa.enc to the git repository.
    Make sure not to add id_rsa to the git repository.
    Commit all changes to your .travis.yml.
    

    这时候看最后一句**Commit all changes to your .travis.yml.

    我们新建的文件一句发生了变化,多了一句:(私人内容使用XXX代替)

    - openssl aes-256-cbc -K $encrypted_XXXXXXXX_key -iv $encrypted_XXXXXXXX_iv -in id_rsa.enc -out ~/.ssh/id_rsa -d
    
    

    再次查看我们的travis ci网页,发现多了一些变化

    .travis文件夹


    删除我们之前复制到根目录的id_rsa文件

    在项目根目录下新建一个.travis的文件夹

    将生成的.enc文件移动至.travis文件

    ssh_config


    在.travis下建立ssh_config文件。

    并填写如下信息:

    Host github.com
      User git
      StrictHostKeyChecking no
      IdentityFile ~/.ssh/id_rsa
      IdentitiesOnly yes
    

    注意这里的~/.ssh/id_rsa的路径是根据个人设置而变化的。

    .travis.yml


    最后需要着重配置.travis.yml文件,以为travis ci就是按照这个文件来执行。

    具体配置:

    # 使用的语言
    language: node_js
    
    # 使用的nodejs版本
    node_js:
     - 4.4.4
    
    # 仓库的分支
    branches:
      only:
      - master
    
    # 执行isntall前需要执行的命令
    before_install:
    # 配置解密信息
     - openssl aes-256-cbc -K $encrypted_4bba640059d8_key -iv $encrypted_4bba640059d8_iv -in .travis/id_rsa.enc -out ~/.ssh/id_rsa -d
    
    # 改变文件权限
     - chmod 600 ~/.ssh/id_rsa
    
    # 配置 ssh
     - eval $(ssh-agent)
     - ssh-add ~/.ssh/id_rsa
     - cp .travis/ssh_config ~/.ssh/config
    
    # 配置git 的个人信息
     - git config --global user.name 'zqz'
     - git config --global user.email zqz@zhaoqize.com
    
    # 执行install
    install:
     - npm install hexo-cli -g
     - npm install
    
    # 执行命令脚本
    script:
     - hexo clean
     - hexo g -d
    

    成功


    安装与使用中遇到的问题


    安装travis失败

    使用sudo权限操作

    zqz@ubuntu:~$ gem install travis
    Fetching: ffi-1.9.14.gem (100%)
    ERROR:  While executing gem ... (Gem::FilePermissionError)
        You don't have write permissions for the /var/lib/gems/2.3.0 directory.
    zqz@ubuntu:~$ sudo gem install travis
    Building native extensions.  This could take a while...
    ...
    

    修改travis的目录

    zqz@ubuntu:~$ travis --version
    bash: /usr/bin/travis: 没有那个文件或目录
    zqz@ubuntu:~$ sudo ln -s /usr/local/bin/travis  /usr/bin/travis
    [sudo] zqz 的密码: 
    zqz@ubuntu:~$ travis --version
    1.8.4
    zqz@ubuntu:~$ 
    

    生成.enc文件密钥失败

    有时候会失败。这时候我们需要在后面加上一些参数

    travis encrypt-file ssh_key --add -r zhaoqize/blog
    
    
  • 相关阅读:
    MySQL 常用到的几个字符处理函数
    MySQL DATE_SUB查询工龄大于35的员工信息
    Mysql 没有nvl()函数,却有一个类似功能的函数ifnull();
    switch 循环中的case理解
    批处理系统和分时系统各具有什么特点?为什么分时系统的响应比较快?
    存储式计算机的主要特点是什么?
    代码实现导航栏分割线
    Keras函数式API介绍
    Keras通过子类(subclass)自定义神经网络模型
    R语言kohonen包主要函数介绍
  • 原文地址:https://www.cnblogs.com/zqzjs/p/6119750.html
Copyright © 2011-2022 走看看