前言

公司产品人员设计的产品原型归档到svn,并在svn服务器上,拉取相关的原型文件,部署nginx服务,使其产品原型能够通过web服务访问得到,利于开发人员浏览产品原型,进行相关的开发工作

功能需求

当产品设计的原型有变更时,访问的web服务及时更新,并记录下产品更新的变更需求,及时告知开发人员周知,并做进一步的开发处理

部署
搭建svn

docker搭建svn服务

svn服务器上拉取产品原型,并配置自动更新,及输入提交信息

容器内操作(亦可在宿主机上操作,注意授予目录、文件的权限)

[root@cex-svn ~]# docker exec -it cex-svn /bin/sh	
/ # cd /home/svn
/ # mkdir web
/ # chown -R apache:apache web
/ # svn checkout --username username --password password http://10.0.0.59/svn/product .

在放置产品原型的product目录下配置post-commit文件,并给予执行权限,当服务端有变更时,svn上的客户端文件,自动更新

/ # cd /home/svn/product/hooks
/home/svn/product/hooks # cat > post-commit <<-EOF
#!/bin/sh

REPOS="$1"
REV="$2"
SVN_PATH=/usr/bin/svn	# svn命令执行路径
WEB_PATH=/home/svn/web	# nginx展示web目录路径,/home/svn目录已做了挂载处理
LOG_PATH=/home/svn/web/svn-log.txt	# svn用户更新产品原型的记录日志文件
SVN_USER=username
SVN_PASS=password

$SVN_PATH update $WEB_PATH --username $SVN_USER --password $SVN_PASS --no-auth-cache	# 更新svn客户端命令
svn log --username $SVN_USER --password $SVN_PASS http://10.0.0.59/svn/product > $LOG_PATH	# 记录svn用户更新产品原型的记录到日志文件的命令
EOF
/home/svn/product/hooks # chmod +x post-commit

在放置产品原型的product目录下配置pre-commit文件,并给予执行权限,当svn客户端需要提交变更时,只有说明其变更原因时,才能提交到svn服务器上,否则,不能提交

/home/svn/product/hooks # mv pre-commit.tmpl pre-commit.tmpl.bak20210304
/home/svn/product/hooks # cat > pre-commit <<-EOF
#!/bin/sh
REPOS="$1"
TXN="$2"

SVNLOOK=/usr/bin/svnlook
LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | wc -m` 

# 如果不输入提交的信息,报错,得重新输入信息
if [ "$LOGMSG" -lt 2 ];then
  echo "Please state the reason for changing the requirement" >& 2
  exit 1 
fi
exit 0
EOF
/home/svn/product/hooks # chmod +x pre-commit
docker-compose方式部署nginx,Web访问原型
[root@cex-svn ~]# cd /data/deploy/cex-nginx
default.conf  docker-compose.yml
[root@cex-svn cex-nginx]# cat > default.conf <<-EOF
server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    location / {
        root   /usr/share/nginx/html;
        autoindex on;
		autoindex_localtime on;
		charset utf-8;
        index  index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

}
EOF
[root@cex-svn cex-nginx]# cat > docker-compose.yml <<-EOF
version: "3.5"
services:
  cex-nginx:
    image: nginx
    container_name: cex-nginx
    hostname: cex-nginx
    ports:
      - 8080:80  
    environment:
      - SET_CONTAINER_TIMEZONE=true
      - CONTAINER_TIMEZONE=Asia/Shanghai
    volumes:
      - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime:ro
      - /data/deploy/cex-nginx/default.conf:/etc/nginx/conf.d/default.conf 
      - /opt/cex-svn/repo/web:/usr/share/nginx/html
    restart: always
    tty: true
EOF
[root@cex-svn cex-nginx]# docker-compose up -d
结语

… …

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐