GitHub Actions自动化部署

现代化的部署方式(CI/CD)

持续集成,持续部署

在这里插入图片描述

CI/CD服务

  • Jenkins
  • GitHub Actions
  • Gitlab CI
  • Travis CI
  • Circle CI

这里用到的是GitHub Actions

环境准备:Linux服务器,把代码提交到GitHub远程仓库

配置GitHub Access Token

作用:在CI/CD中使用Git Hub身份令牌来访问操作你的Git Hub仓库,否则没有操作这个的权限

生成

打开开发者设置 - 选择Personal access tokens - 生成新的token(如果以前有也可以用以前的token)

在这里插入图片描述

勾上(这个token对仓库的权限)

在这里插入图片描述

生成的令牌待会会用到,且只显示一次,建议保存下来(如果忘了就重写生成一个吧)

在这里插入图片描述

配置到项目的Secrets中

来到远程仓库(本地代码托管的仓库这里), 设置

在这里插入图片描述

点击Secrets - New secrets

在这里插入图片描述

这里的名称必须和脚本名称一致

在这里插入图片描述

配置 GitHub Actions 执行脚本

1. 在项目根目录创建.github/workflows目录

在这里插入图片描述
在这里插入图片描述

2. 下载main.yml到workflows目录中

name: Publish And Deploy Demo # 自动化部署的名称
on:
  push:
    tags:
      - 'v*' # 当我们提交标签的时候,相当于版本(v开头触发)

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest # 运行环境
    steps:

    # 下载源码 (将远程仓库的代码拉取到本地)
    - name: Checkout
      uses: actions/checkout@master

    # 打包构建
    - name: Build
      uses: actions/setup-node@master
    - run: npm install
    - run: npm run build
    - run: tar -zcvf release.tgz .nuxt static nuxt.config.js package.json package-lock.json pm2.config.json

    # 发布 Release (创建Release)
    - name: Create Release
      id: create_release
      uses: actions/create-release@master
      env:
        GITHUB_TOKEN: ${{ secrets.TOKEN }} # 仓库下的token
      with:
        tag_name: ${{ github.ref }} # 标签名称
        release_name: Release ${{ github.ref }} # Release名称
        draft: false # 是否是草稿
        prerelease: false # 是否是预发布

    # 上传构建结果到 Release
    - name: Upload Release Asset
      id: upload-release-asset
      uses: actions/upload-release-asset@master
      env:
        GITHUB_TOKEN: ${{ secrets.TOKEN }}
      with:
        upload_url: ${{ steps.create_release.outputs.upload_url }}
        asset_path: ./release.tgz # 上传的文件
        asset_name: release.tgz # 上传的文件名
        asset_content_type: application/x-tgz

    # 部署到服务器
    - name: Deploy
      uses: appleboy/ssh-action@master
      with:
        host: ${{ secrets.HOST }} # 机器的host
        username: ${{ secrets.USERNAME }} # 远程仓库的用户名
        password: ${{ secrets.PASSWORD }} # 远程仓库的密码
        port: ${{ secrets.PORT }}  # 远程仓库的端口号
        script: | # 执行命令构建 (在远程服务器中)1.进入到该目录(前提创建好)2.下载Release发布包 3.解压 4.安装生产 5.重启服务
          cd /root/realworld-nuxtjs
          wget https://github.com/lipengzhou/realworld-nuxtjs/releases/latest/download/release.tgz -O release.tgz
          tar zxvf release.tgz
          npm install --production
          pm2 reload pm2.config.json

3. 修改配置

新建secrets (HOST,USERNAME ,PASSWORD ,PORT )
在这里插入图片描述

4. 配置pm2配置文件

在项目下创建pm2.config.json文件

{
    "apps": [
        {
            "name": "RealWorld",
            "script": "npm",
            "args": "start"
        }
    ]
}

5. 提交更新

 git add
 git tag v0.1.0
 git push origin v0.1.0

6. 查看自动部署状态

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7. 访问网站

成功,访问网站查看

8. 提交更新

git tag
git tag v0.1.1
git push origin v0.1.1

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值