Thanks to visit codestin.com
Credit goes to github.com

Skip to content

sx202/acr

Repository files navigation

代码更新系统(application code release)

  1. 声明(statement)

    本人英语不好,为了让大家能够正确的看到文档内容,请把字符集设置为UTF-8.

    I love English. but I don't have good English. In order for everyone to see the contents of the document correctly, please set the character set to UTF-8.

  2. 功能

    上传代码(setup code)、更新代码(update code) 备份代码(backup code)、回滚代码(recover code)

  3. 命令

    Usage: acr [OPTION] DEST
    
    Options
       -f, --file  filename     : set configuration file (default: application/conf/acr.conf)
       -h, --help               : this help   
       -v, -V, --version        : show version and exit
    
    
  4. 菜单选项

    • 第一级菜单

      1. 上传代码(第一次发布代码)(有二级菜单,选择代码的获取方式)
      2. 更新代码(程序运行逻辑是:先备份,在更新代码到指定目录)(有二级菜单,选择代码的获取方式)
      3. 备份代码(备份代码到指定的目录)
      4. 回滚代码(回滚到上一个版本代码,注意:版本新旧是根据备份目录下文件的时间戳来判断的)
      5. 退出程序(exit)
    • 第二级菜单

      1. Tar包 (把打好包的程序放到指定的目录后,选择这项会自动去这个目录解压代码)
      2. Git (程序自动去Git仓库拉代码,注意:必须在配置文件中写入相关信息)
      3. Svn (程序自动去Git仓库拉代码,注意:必须在配置文件中写入相关信息)
      4. 返回上级菜单(Previous page)
      5. 退出程序 (exit)
  5. 程序目录、文件说明

    acr                          # 程序一级目录
    ├── application              ## 程序二级目录(程序)
    │   ├── bin                  ### 程序三级目录(执行程序)
    │   │   ├── acr.sh           ### * 程序入口文件副本(rpm安装完以后会在/usr/local/bin/acr)
    │   │   ├── rsync-client.sh  ### * rsync客户端的配置脚本
    │   │   ├── rsyncd.conf      ### * rsync 服务器端的配置文件(把这个文件拷贝到服务器端的/etc目录下)
    │   │   └── rsync-server.sh  ### * rsync 服务器端的配置脚本
    │   ├── conf                 ### 程序三级目录(配置文件)
    │   │   └── acr.conf         ### * 程序默认的配置文件
    │   ├── module               ### 程序三级目录(实现方法)
    │   │   ├── acr.backup       ### * 备份代码
    │   │   ├── acr.git-download ### * Git下载代码
    │   │   ├── acr.init         ### * 程序初始化参数
    │   │   ├── acr.menu         ### * 交互界面
    │   │   ├── acr.new          ### * 上传、更新代码
    │   │   ├── acr.recover      ### * 回滚代码
    │   │   └── acr.tar-download ### * Tar包代码
    │   └── status               ### 程序三级目录(程序执行状态)
    │       ├── BackUp-Status    ### * 备份状态
    │       ├── Copy-Status      ### * 复制状态
    │       ├── Git-Code-Status  ### * Git获取代码状态
    │       ├── New-Code-Status  ### * 上传、更新代码状态
    │       ├── Recover-Status   ### * 回滚代码状态
    │       ├── Svn-Code-Status  ### * Svn获取代码状态
    │       ├── Tar-Code-Status  ### * Tar包获取代码状态
    │       └── Unzip-Status     ### * 解压缩代码状态
    ├── backup-old-code          ## 程序二级目录(存放备份代码)
    ├── download-code            ## 程序二级目录(存放下载代码)
    │   ├── git-code             ### 程序三级目录(存放Git下载代码)
    │   ├── svn-code             ### 程序三级目录(存放Svn下载代码)
    │   └── tar-code             ### 程序三级目录(存放Tar包代码)
    ├── log                      ## 程序二级目录(存放日志)
    │   ├── error.log            ## * 错误日志
    │   └── messages.log         ## * 正确日志
    ├── man                      ## 程序二级目录(存放帮助文件)
    │   └── acr.1.gz             ## * 帮助文件副本(rpm安装完以后会在/usr/share/man/man1/acr.1.gz)
    ├── passwd                   ## 程序二级目录(存放rsync客户端密码文件)
    │   └── taagoo               ## * rsync客户端密码文件
    ├── temp                     ## 程序二级目录(程序运行的中间文件全部存放在这个地方)
    
  6. 程序运行流程图

    • 主程序的逻辑
                                    +--------+
                                    | start  |
                                    +--------+
                                      |
                                      |
                                      v
                                    +-------------+
       +--------------------------- |    init     | ---------------+
       |                            +-------------+                |
       |                              |         |                  |
       |                              |         |                  |
       v                              v         |                  v
     +-------------------+          +--------+  |  +------------++-------------+
     |       setup       |          | update |  +> |   backup   ||   recover   |
     +-------------------+          +--------+     +------------++-------------+
       |                              |              |             |
       |                              |              |             |
       v                              |              v             v
     +-------------------+            |            +------------++-------------+
     | Sub_Code_Download | <----------+            | Sub_Backup || Sub_Recover |
     +-------------------+                         +------------++-------------+
       |
       |
       v
     +-------------------+
     |   Sub_SU_Upload   |
     +-------------------+
  • 子程序的逻辑

    1. 代码下载

      • Tar
                             +-------------------------+
                             |    Tar_Code_Download    |
                             +-------------------------+
                               |
                               |
                               v
      +--------------+  no   +-------------------------+
      | Note_Code_No | <---- |   Tar_Code_File_Exist   |
      +--------------+       +-------------------------+
        |                      |
        |                      | yes
        v                      v
      +--------------+       +-------------------------+  1
      |  Error_Stop  |       |   If_Tar_File_Status    | ---------+
      +--------------+       +-------------------------+          |
                               |                                  |
                               | 0                                |
                               v                                  v
                             +-------------------------+        +---------------------+
                             | Write_Tar_File_Status-1 | <----- | Note_Lasttime_Error |
                             +-------------------------+        +---------------------+
                               |
                               |
                               v
                             +-------------------------+  yes
                             |  Temp_Code_File_Exist   | ---------+
                             +-------------------------+          |
                               |                                  |
                               | no                               |
                               v                                  v
                             +-------------------------+        +---------------------+
                             |    Pack_File_To_Temp    | <----- |   Clear_Temp_File   |
                             +-------------------------+        +---------------------+
                               |
                               |
                               v
                             +-------------------------+
                             |   Writ_Status_Print-0   |
                             +-------------------------+
                               |
                               |
                               v
                             +-------------------------+
                             |           End           |
                             +-------------------------+
      
      • Git
                                    +---------------------+
                                    |  Git_Code_Download  |
                                    +---------------------+
                                      |
                                      |
                                      v
+-----------------+  no             +---------------------+
| Configure_Error | <-------------- | Git_Init_Configure  |
+-----------------+                 +---------------------+
  |                                   |
  |                                   | yes
  v                                   v
+-----------------+                 +---------------------+  no
|   Error_Stop    |                 |   Git_Soft_Setup?   | -------------------+
+-----------------+                 +---------------------+                    |
                                      |                                        |
                                      | yes                                    |
                                      v                                        v
                                    +---------------------+                  +-----------------+
                                    |   Git_File_Status   | <--------------- | Git_Soft_Setup  |
                                    +---------------------+                  +-----------------+
                                      |
                                      |
                                      v
                                    +---------------------+  1
                                    |  Git_File_Status?   | -------------------+
                                    +---------------------+                    |
                                      |                                        |
                                      | 0                                      |
                                      v                                        v
                                    +---------------------+                  +-----------------+
                                    | Write_Git_Status-1  | <--------------- |  Note_LT_Error  |
                                    +---------------------+                  +-----------------+
                                      |
                                      |
                                      v
                                    +---------------------+
                     +------------- |  Git_Code_Factory?  | -+
                     |              +---------------------+  |
                     |                                       |
                     |                                       |
                     v                                       v
                   +---------------+                       +----------------+
                   | Pull_Git_Code |  +------------------- | Clone_Git_Code |
                   +---------------+  |                    +----------------+
                     |                |
                     |                |
                     |                v
                     |              +---------------------+
                     +------------> | Write_Git_Status-0  |
                                    +---------------------+
                                      |
                                      |
                                      v
                                    +---------------------+  1
                                    |  Temp_File_Status?  | -------------------+
                                    +---------------------+                    |
                                      |                                        |
                                      | 0                                      |
                                      v                                        v
                                    +---------------------+                  +-----------------+
                                    | Write_Temp_Status-1 | <--------------- | Note_Copy_Error |
                                    +---------------------+                  +-----------------+
                                      |
                                      |
                                      v
                                    +---------------------+  yes
                                    |  Temp_File_Exist?   | -------------------+
                                    +---------------------+                    |
                                      |                                        |
                                      | no                                     |
                                      v                                        v
                                    +---------------------+                  +-----------------+
                                    |      Copy_Code      | <--------------- | Clear_Temp_File |
                                    +---------------------+                  +-----------------+
                                      |
                                      |
                                      v
                                    +---------------------+
                                    | Write_Temp_Status-0 |
                                    +---------------------+
                                      |
                                      |
                                      v
                                    +---------------------+
                                    |         End         |
                                    +---------------------+

  1. 上传和更新
                          +----------------------+
                          |  Setup_Update_Code   |
                          +----------------------+
                            |
                            |
                            v
+-----------------+  no   +----------------------+
| Echo_File_Error | <---- |   Temp_File_Exist?   |
+-----------------+       +----------------------+
  |                         |
  |                         | yes
  v                         |
+-----------------+         |
|    Error_End    |         |
+-----------------+         |
  ^                         |
  |                         |
  |                         v
+-----------------+  no   +----------------------+
|  Echo_IP_Error  | <---- |      Server_Ip?      |
+-----------------+       +----------------------+
                            |
                            | yes
                            v
                    1     +----------------------+
  +---------------------- | Setup_Update_Status? |
  |                       +----------------------+
  |                         |
  |                         | 0
  v                         v
+-----------------+       +----------------------+
|  Note_LT_Error  | ----> |    Write_Status-1    |
+-----------------+       +----------------------+
                            |
                            |
                            v
                          +----------------------+
                          |      Rsync_Code      |
                          +----------------------+
                            |
                            |
                            v
                          +----------------------+
                          |    Clear_Temp_Dir    |
                          +----------------------+
                            |
                            |
                            v
                          +----------------------+
                          |    Write_Status-0    |
                          +----------------------+
                            |
                            |
                            v
                          +----------------------+
                          |         End          |
                          +----------------------+
  1. 备份

                         +------------------+
                         |      backup      |
                         +------------------+
                           |
                           |
                           v
                         +------------------+  yes   +----------------+
                         | Temp_File_Exist? | -----> | Clear_Temp_Dir |
                         +------------------+        +----------------+
                           |                           |
                           | no                        |
                           v                           |
    +------------+  no   +------------------+          |
    | Echo_Error | <---- |    Server_Ip?    | <--------+
    +------------+       +------------------+
      |                    |
      |                    | yes
      v                    v
    +------------+       +------------------+  1     +----------------+
    | Error_End  |       |  Backup_Status?  | -----> | Echo_LT_Error  |
    +------------+       +------------------+        +----------------+
                           |                           |
                           | 0                         |
                           v                           |
                         +------------------+          |
                         |  Write_Status-1  | <--------+
                         +------------------+
                           |
                           |
                           v
                         +------------------+
                         | Rsync_Pull_Code  |
                         +------------------+
                           |
                           |
                           v
                         +------------------+
                         |   Pack_TO_Back   |
                         +------------------+
                           |
                           |
                           v
                         +------------------+
                         |  Write_Status-0  |
                         +------------------+
                           |
                           |
                           v
                         +------------------+
                         |       End        |
                         +------------------+
    
  2. 回滚

                            +------------------+
                            |     recover      |
                            +------------------+
                              |
                              |
                              v
    +---------------+  no   +------------------+
    |  Echo_Error   | <---- | Back_Code_Exist? |
    +---------------+       +------------------+
      |                       |
      |                       | yes
      v                       v
    +---------------+       +------------------+
    |   Error_End   |       |  Clear_Temp_Dir  |
    +---------------+       +------------------+
                              |
                              |
                              v
    +---------------+  1    +------------------+
    | Echo_LT_Error | <---- | Recover_Status?  |
    +---------------+       +------------------+
      |                       |
      |                       | 0
      |                       v
      |                     +------------------+
      +-------------------> |  Write_Status-1  |
                            +------------------+
                              |
                              |
                              v
                            +------------------+
                            |    Pack_Code     |
                            +------------------+
                              |
                              |
                              v
                            +------------------+
                            |     Echo_Yes     |
                            +------------------+
                              |
                              |
                              v
                            +------------------+
                            |    Rsync_Code    |
                            +------------------+
                              |
                              |
                              v
                            +------------------+
                            | Clear_Temp_Dir1  |
                            +------------------+
                              |
                              |
                              v
                            +------------------+
                            |  Write_Status-0  |
                            +------------------+
                              |
                              |
                              v
                            +------------------+
                            |       End        |
                            +------------------+
    
  3. 程序未解决的问题

    • 第一个问题

    rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1518)

    这个问题没有解决,临时使用的方法是:set +e 运行rsync语句 set -e

    • 第二个问题

      rsync --delete 回滚代码的时候,使用了fake super = yes ,要不会报错并终止程序运行。

  4. 程序可能的优化方法

    是否能够把程序放到内存中运行,想到的方法是把/acr/temp目录直接挂载到/dev/shm目录下,没有做的原因是顾虑万一程序过大,导致内存放不下,会出错。下一步做好保护后在使用这种方式。

About

automatic update new realease code

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages