• 利用GitHub Actions自动化打包部署服务器


    传统的部署方式是更新代码 -> 本地构建 -> 上传服务器发布;而现代化的部署方式是CI/CD(持续集成/持续部署)

    CI/CD服务有很多:

    • Jenkins
    • Gitlab CI
    • Github Actions
    • Travis CI
    • Circle CI
    • ...

    开始前需要准备Linux服务器;把本地代码提交GitHub远程仓库。

    然后生成配置GitHub Actions Token

    • 生成Token:https://github.com/settings/tokens
    • 或者可以点击,头像 -> Settings -> Developer settings -> Personal access tokens -> Generate new Token
    • Token名称填写TokenSelect scopes勾选repo,然后滚动到网页最下面点击提交按钮。生成了Token,复制保存(该Token只显示一次,忘记了就再生成)

    • 配置到项目的Secrets中:进入项目-> Settings -> Secrets -> New secret
      * Name:建议和刚才生成Token保持一致
      * Value:为刚才生成的Token

    除了配置Token,还要配置服务器的HOST、USERNAME、PASSWORD、PORT,这些配置在GitHub把项目部署到服务器的时候使用到

    这里GitHun的配置已经完成,接下要配置GitHub Actions执行脚本

    • 在项目根目录创建.githun/workflows目录
    • workflows目录创建main.yml文件,文件内容如下,这是GitHub Actions执行识别的文件
    name: Publish And Deploy Demo # 自动部署的名称
    on:
      push:
        tags: # 当我们提交代码为tag 是以'v'开头的时候才会触发自动部署到服务端 如 git push tag v0.1.0
          - 'v*'
    
    jobs:
      build-and-deploy:
        runs-on: ubuntu-latest # 运行环境,告诉它运行在什么环境
        steps: # 步骤
    
        # 第一步:下载源码(CI/CD拉取代码到自己的本地)
        - 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
          # 把.nuxt、nuxt.config.js等文件,打包压缩为release.tgz
    
        # 第三步:发布 Release
        - name: Create Release # 创建Release,可以在仓库看到一个个版本
          id: create_release
          uses: actions/create-release@master
          env:
            GITHUB_TOKEN: ${{ secrets.TOKEN }} # 之前GitHub添加的Token
          with:
            tag_name: ${{ github.ref }} # (tag)标签名称
            release_name: Release ${{ github.ref }}
            draft: false # 是否是草稿
            prerelease: false # 是否是预发布
    
        # 第四步:上传构建结果到 Release(把打包的tgz上传到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 }} # 上传地址,通过创建Release获取到的
            asset_path: ./release.tgz # 要上传文件
            asset_name: release.tgz # 上传后的文件名
            asset_content_type: application/x-tgz
    
        # 第五步:部署到服务器
        - name: Deploy
          uses: appleboy/ssh-action@master # 使用ssh链接服务器
          with:
            host: ${{ secrets.HOST }}
            username: ${{ secrets.USERNAME }}
            password: ${{ secrets.PASSWORD }}
            port: ${{ secrets.PORT }}
            script: | # 执行命令(运行到服务器)cd:要确保服务器有这个目录; wget:下载上一步的release到服务器; tar:解压; 安装依赖;启动服务
              cd /root/realworld-nuxtjs
              wget https://github.com/YuYun95/realworld-nuxtjs/releases/latest/download/release.tgz -O release.tgz
              tar zxvf release.tgz
              npm install --production
              pm2 reload pm2.config.json
    
    

    到此全部配置已经完成,把代码提交GitHub仓库

    • git add .
    • git commit -m "feat: 第一次发布部署"
    • git push(此时只是推送了提交记录,并不会触发自动化构建部署)
    • git add .
    • git tag v0.1.0(通过tag打版)
    • git tag(查看版本)
    • git push origin v0.1.0(把本地标签推送到远程仓库,会触发自动构建部署)
      执行完上面的命令GitHub Actions将自动打包部署到服务器

    可以点击项目仓库的Actions可以查看打包部署过程和结果,全部勾绿色为部署成功,浏览器输入服务器地址即可打开

  • 相关阅读:
    嵌入式系统引导和启动的流程
    microblaze以太网程序
    机试题
    共模差分 对比
    xilinx XPS无法启动的问题
    FPGA开发流程
    Mel-Frequency-Warping
    微软-黄学东-清华大学FIT楼报告-20170407
    Matlab
    Anaconda安装
  • 原文地址:https://www.cnblogs.com/YAN-HUA/p/13530906.html
Copyright © 2020-2023  润新知