基于GITLAB CI的微信小程序自动化部署

973 阅读1分钟

目前 微信开发者工具 只支持 MacOSWindows 系统,所以最终选用的部署服务器环境为基于虚拟机的 Windows10 系统。



GitLab Runner 安装

安装文档

1. 在C:\ 目录下创建 GitLab-Runner 文件夹

2. 以管理员身份运行 PowerShell ,执行以下命令 。(注意不要使用PowerShell ISE, 会报错)

cd C:\GitLab-Runner
.\gitlab-runner.exe install --user ENTER-YOUR-USERNAME --password ENTER-YOUR-PASSWORD
.\gitlab-runner.exe start

一定要使用用户账户运行 gitlab-runner

报错示例:

FATAL: Failed to install gitlab-runner: The account name is invalid or does not exist, or the password is invalid for the account name specified.

执行命令;

.\gitlab-runner.exe install --user ".\ENTER-YOUR-USERNAME" --password "ENTER-YOUR-PASSWORD"

报错示例:

FATAL: Failed to start gitlab-runner: The service did not start due to a logon failure.

报错原因:

需要添加 SeServiceLogonRight 权限

操作步骤:

  • 进入 控制面板 > 系统和安全 > 管理工具
  • 打开 本地安全策略
  • 在左侧列表中选择 安全设置 > 本地策略 > 用户权限分配
  • 在右侧列表中打开 作为服务登录
  • 添加用户(“手动添加”或使用“ 高级 ”按钮)并应用设置

3. 更新 C:\GitLab-Runner\config.toml 配置

concurrent = 4   //同时并发执行构建项目数,可根据实际情况修改
check_interval = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "windows wechat mini program"
  url = "https://gitlab.com/"
  token = "YOUR-TOKEN"   //这里填写你的Token, 在对应项目中的 Setting => CI/CD => Runners 中获取
  executor = "shell"
  shell = "powershell"
  [runners.custom_build_dir]
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]

运行命令使配置生效

.\gitlab-runner.exe stop
.\gitlab-runner.exe start

配置 .gitlab.yml 文件,在项目根目录下创建 .gitlab-ci.yml 文件

stages:
  - build
  - deploy

qa-build: &buildStage
  image: node:10.20.1
  stage: build
  variables:
    APP_ENV: qa
  script:
    - npm install
    - NODE_ENV=$APP_ENV npm run deploy
  artifacts:
    untracked: false
    expire_in: 1 day
    paths:
      - dist
  only:
    - develop
  tags:
    - gitlab-org

staging-build:
  <<: *buildStage
  variables:
    APP_ENV: staging
  only:
    - tags

preview:
  stage: deploy
  variables:
    CLI: 'C:\wechat-dev\cli.bat'
    APP_PROJECT_DIR: '$CI_PROJECT_DIR\dist'
  script:
    - echo $CI_COMMIT_MESSAGE
    - echo $APP_PROJECT_DIR
    - '& "$CLI" preview --project $APP_PROJECT_DIR'
  #  when: manual //手动触发
  only:
    - develop
  tags:
    - windows-wechat-mini-program

upload:
  stage: deploy
  dependencies:
    - staging-build
  variables:
    APP_NAME: "Wechat mini program"
    CLI: 'C:\wechat-dev\cli.bat'
    APP_PROJECT_DIR: '$CI_PROJECT_DIR\dist'
  script:
    - echo $CI_COMMIT_MESSAGE
    - '& "$CLI" upload -v $CI_COMMIT_REF_NAME -d "$APP_NAME" --project $APP_PROJECT_DIR'
  only:
    - tags
  tags:
    - windows-wechat-mini-program