章工运维 章工运维
首页
  • linux
  • windows
  • 中间件
  • 监控
  • 网络
  • 存储
  • 安全
  • 防火墙
  • 数据库
  • 系统
  • docker
  • 运维工具
  • other
  • elk
  • K8S
  • ansible
  • Jenkins
  • GitLabCI_CD
  • 随笔
  • 面试
  • 工具
  • 收藏夹
  • Shell
  • python
  • golang
友链
  • 索引

    • 分类
    • 标签
    • 归档
    • 首页 (opens new window)
    • 关于我 (opens new window)
    • 图床 (opens new window)
    • 评论 (opens new window)
    • 导航栏 (opens new window)
周刊
GitHub (opens new window)

章工运维

业精于勤,荒于嬉
首页
  • linux
  • windows
  • 中间件
  • 监控
  • 网络
  • 存储
  • 安全
  • 防火墙
  • 数据库
  • 系统
  • docker
  • 运维工具
  • other
  • elk
  • K8S
  • ansible
  • Jenkins
  • GitLabCI_CD
  • 随笔
  • 面试
  • 工具
  • 收藏夹
  • Shell
  • python
  • golang
友链
  • 索引

    • 分类
    • 标签
    • 归档
    • 首页 (opens new window)
    • 关于我 (opens new window)
    • 图床 (opens new window)
    • 评论 (opens new window)
    • 导航栏 (opens new window)
周刊
GitHub (opens new window)
  • ansible系列文章

  • Kubernetes笔记

  • elk

  • jenkins

  • GitLabCI_CD

    • Gitlab ci与Jenkins对比
    • GitLabRunner简介
    • GitLabRunner安装
    • GitLabRunner注册
    • Runner-命令
    • 运行流水线任务
    • 集成构建工具
    • 制品库集成
    • 按时间统计GitLab所有用户代码提交量
    • gitlab ci部署web程序示例
    • gitlab部署

  • 专题
  • GitLabCI_CD
章工运维
2025-01-14

gitlab ci部署web程序示例

# 在代码仓库创建.gitlab-ci.yml文件

stages:
  - package
  - deploy

default:
  cache: &global_cache # 全局缓存
    key: ${CI_COMMIT_REF_NAME} # 缓存key
    paths:
      - dist/dist.tar # 缓存路径

package:
  stage: package
  cache:
    - <<: *global_cache # 使用全局缓存
      policy: push # 缓存策略
  script:
    - export NODE_OPTIONS=--openssl-legacy-provider # 设置node选项
    - yarn # 安装依赖
    - yarn build # 构建
    - cd dist && tar -czf dist.tar * && cd .. # 打包

deploy:
  stage: deploy
  cache:
    - <<: *global_cache # 使用全局缓存
      policy: pull
  only:
    - main
  script:
    - scp dist/dist.tar 192.168.1.100:/data/deploy/ # 上传到服务器
    - ssh 192.168.1.100 "/root/script/deploy_html.sh dist dist.tar" # 执行部署脚本
  after_script:
    - /usr/local/bin/wechat_v2 ${CI_PROJECT_NAME} ${CI_COMMIT_REF_NAME} ${GITLAB_USER_EMAIL} ${CI_PIPELINE_URL} ${CI_JOB_STATUS} 192.168.1.100 # 发送通知
  when: manual # 手动触发


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

# 服务器部署脚本

#!/bin/bash
set -e -u -o pipefail # 设置错误处理

PROJECT=${1} # 项目名称
FILE_NAME=${2} # 文件名称
APP_BASE_DIR=/data/application/web # 应用基础目录
APP_DIR=${APP_BASE_DIR}/${PROJECT} # 应用目录
NOW=$(date +%Y-%m-%d-%H%M%S) # 当前时间
BACKUP_DIR=/data/backup/${NOW} # 备份目录

if [ $# -eq 3 ]; then # 如果参数数量等于3
  APP_DIR=${APP_BASE_DIR}/${PROJECT}/${3} # 设置应用目录
fi

DEPLOY_PATH=/data/deploy

echo =======================================开始发布=========================================
echo 代码包: ${DEPLOY_PATH}/${FILE_NAME}
echo 代码路径: ${APP_DIR}
echo 备份路径: ${BACKUP_DIR}
echo ======================================================================================



echo  1. backup the old version.
mkdir -p ${BACKUP_DIR} ${APP_DIR} # 创建备份目录和应用目录
mv -f ${APP_DIR}/* ${BACKUP_DIR}/ # 备份旧版本

echo  2. deploy the ${APP_DIR}.
mkdir -p ${APP_DIR}
tar xf ${DEPLOY_PATH}/${FILE_NAME} -C ${APP_DIR} # 解压部署包


tree -L 1 ${APP_DIR} # 查看应用目录结构

echo 3. remove tar....  
rm -f ${DEPLOY_PATH}/${FILE_NAME} # 删除部署包
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
微信 支付宝
上次更新: 2025/02/07, 17:21:54

← 按时间统计GitLab所有用户代码提交量 docker部署gitlab→

最近更新
01
shell脚本模块集合
05-13
02
生活小技巧(认知版)
04-29
03
生活小技巧(防骗版)
04-29
更多文章>
Theme by Vdoing | Copyright © 2019-2025 | 点击查看十年之约 | 鄂ICP备2024072800号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式