自动化部署练习 github actions

发布时间 2023-07-28 21:55:53作者: ministep88

[part3/part3-3/笔记3-自动化部署项目到服务器 · 拉勾教育/高薪常见问题 - 码云 - 开源中国](https://gitee.com/lagoufed/fed-e-questions/tree/master/part3/part3-3/%E7%AC%94%E8%AE%B03-%E8%87%AA%E5%8A%A8%E5%8C%96%E9%83%A8%E7%BD%B2%E9%A1%B9%E7%9B%AE%E5%88%B0%E6%9C%8D%E5%8A%A1%E5%99%A8#6%E7%BC%96%E8%BE%91-workflows-%E8%84%9A%E6%9C%AC)

[自动化部署-04-进行测试_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV1RQ4y1o7pW?p=4&spm_id_from=pageDriver&vd_source=2d08172c0cbf0ec3bf5ea0166e0a7f36)

自动化部署练习 github actions

>> 视频讲解 <<

1.下载练习用的代码

https://gitee.com/lagoufed/fed-e-questions/raw/master/part3/realworld-nuxtjs.zip

练习用代码,也可以到课程资料中查找:

part3-3 课堂资料( 03-03-study-materials / code / 3-3-4-1-nuxtjs综合案例 /realworld-nuxtjs )

unzip

2.验证项目代码正常可用

install2

2021-04-21_205449

2021-04-21_205614

3.生成本地仓库

>> 视频讲解 <<

确认有「.gitignore」文件, 并且 push 时会忽略「node_modules」和「.nuxt」目录

2021-04-21_210317

初始化仓库,修改当前分支名称,并生成一个commit提交

2021-04-21_161325

(有同学反馈, 先进行commit, 之后才可以修改分支名称)

git init
git add . && git commit -m "init"
git branch -M main
 

4.创建 github 仓库, 关联本地库

2021-04-21_165315

2021-04-21_165534

2021-04-21_165730

2021-04-21_165846

# 关联远程代码库
git remote add origin https://github.com/你账号/realworld-nuxtjs.git
# 查看关联情况
git remote -v
# 把当前代码先推一波. 证明没问题
git push origin main
 

2021-04-21_170215

5.配置 github actions 信息

>> 视频讲解 <<

2021-04-21_171055

2021-04-21_171148

2021-04-21_174606

2021-04-21_174722

2021-04-21_174808

2021-04-21_175150

2021-04-21_175232

2021-04-21_175358

2021-04-21_175521

2021-04-21_175735

2021-04-21_180044

2021-04-21_180604

2021-04-21_180704

2021-04-21_180748

2021-04-21_180859

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

6.编辑 workflows 脚本

打开项目根目录 .github / workflows / main.yml 文件

2021-04-21_185850

(以下是 main.yml参考内容)

name: Publish And Deploy Demo
on:
  push:
    tags:
      - '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
    - name: Create Release
      id: create_release
      uses: actions/create-release@master
      env:
        GITHUB_TOKEN: ${{ secrets.TOKEN }}
      with:
        tag_name: ${{ github.ref }}
        release_name: Release ${{ github.ref }}
        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 }}
        username: ${{ secrets.USERNAME }}
        password: ${{ secrets.PASSWORD }}
        port: ${{ secrets.PORT }}
        script: |
          cd /root/realworld-nuxtjs
          wget https://github.com/2xx/realworld-nuxtjs/releases/latest/download/release.tgz -O release.tgz
          tar zxvf release.tgz
          npm install --production
          pm2 reload pm2.config.json
 

『一定要修改 倒数第4行 仓库地址』

编辑 PM2 配置文件

pm2.config.json (练习中已包含该文件)

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

注意:

  • 不要少写 s
  • 少数命令可以不写 run, 多数命令都是 npm run xxxx

7.完成测试

>> 视频讲解 <<

2021-04-21_191223

2021-04-21_203314

git add .
git commit -m "发布部署-测试"
git tag v0.1.0
git tag
git push origin v0.1.0
 

2021-04-21_202734

2021-04-21_202858

2021-04-21_203210

( 打完收工 )