IDEA实现NPM项目的自打包自发布自部署
本文最后更新于129 天前,其中的信息可能已经过时,如有错误请发送邮件到3196812536@qq.com

前言

最近在研究项目的打包发布以及其在生产环境下的部署

谈谈Vue前端项目的自动打包,以及发布到Github Packages和部署到服务器

注:由于本人将前端项目和后端项目放置在了一个项目文件夹下,所以统一使用IDEA进行打开运行以及编辑。还是推荐使用WebStorm来进行前端项目的编辑(或者VScode)

还是以之前的这个校园墙仓库为例,注:使用的node版本是12.22.12

Github仓库地址:https://github.com/Pleasurecruise/NottinghamWall

管理端项目地址:https://github.com/Pleasurecruise/NottinghamWall/tree/main/backend

正文

操作背景

在上一篇文章中我已经提到了相同的内容,这里在旧事重提一下

项目仓库每次进行更改更新的时候都需要重新进行打包发布非常的麻烦,所以可以用Github Action来替代这一重复的操作,实现自动化操作,提高开发效率和软件质量。

GitHub CLI(Command-Line Interface)是 GitHub 提供的一个命令行工具,旨在使用户能够从终端或命令行界面直接与 GitHub 交互。通过 GitHub CLI,用户可以执行许多在 GitHub 网站上执行的操作

Continuous Integration (CI):持续集成。开发人员频繁地将代码变更合并到主分支中,每次合并都会触发自动化构建和测试过程。这种方法能够快速发现和修复问题,确保代码库始终处于一个可工作状态。

Continuous Deployment (CD):持续部署。每次通过自动化测试的代码变更都会自动部署到生产环境中。这意味着代码一旦被提交并通过测试,就会立即被发布给用户。持续部署要求非常高的自动化测试覆盖率和严格的质量控制。

NPM自发布

参考资料:https://docs.github.com/zh/actions/publishing-packages/publishing-nodejs-packages

https://blog.csdn.net/2302_79791164/article/details/139532120

当我们在Github Action工作流中搜索Publish Node就可以看到我下面要介绍的两个配置文件

本人针对实际操作需要进行了一定更改

下面的配置文件实现的主要操作:

在admin文件夹下有新的push文件的时候触发操作

build步骤中:npm install

publish步骤中:npm publish

npm publish.yml

name: Node.js Publish
on:
  push:
    branches:
      - main
    paths:
      - 'admin/**'
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Use Node.js 20
        uses: actions/setup-node@v3
        with:
          node-version: 20
      - name: Install dependencies
        run: npm install
        working-directory: ./admin
  publish:
    needs: build
    runs-on: ubuntu-latest
    permissions:
      contents: read
      packages: write
    steps:
      - uses: actions/checkout@v3
      - name: Use Node.js 20
        uses: actions/setup-node@v3
        with:
          node-version: 20
      - name: Publish to npm
        run: |
          echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ~/.npmrc
          npm publish --access public --registry=https://registry.npmjs.org/
        env:
          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
        working-directory: ./admin

NPM_TOKEN的设置

实现效果:

Package自发布

注意和发布npm的入口网址不同,一个是https://registry.npmjs.org/,另一个是https://npm.pkg.github.com/

release-package.yml

name: Node.js Package Release
on:
  push:
    branches:
      - main
    paths:
      - 'admin/**'
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Use Node.js 20
        uses: actions/setup-node@v3
        with:
          node-version: 20
      - name: Install dependencies
        run: npm install
        working-directory: ./admin
  publish:
    needs: build
    runs-on: ubuntu-latest
    permissions:
      contents: read
      packages: write
    steps:
      - uses: actions/checkout@v3
      - name: Use Node.js 20
        uses: actions/setup-node@v3
        with:
          node-version: 20
      - name: Publish to GitHub Packages
        run: |
          echo "//npm.pkg.github.com/:_authToken=${{ secrets.GITHUB_TOKEN }}" > ~/.npmrc
          npm publish --registry=https://npm.pkg.github.com/
        env:
          NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        working-directory: ./admin

另外还需要在package.json中设置仓库地址等信息

{
  "name": "@octocat/my-package",
  "repository": {
    "type": "git",
    "url": "https://github.com/octocat/my-other-repo.git"
  },

二者的配置文件仅在最后一步的发布位置上存在差异(一开始尝试将两个配置文件合二为一不知道为什么没有成功……)

注意事项:

①每次在push的时候不能上传相同的内容,同时需要在package.json中更新每次push的版本号

②由于Github Action限制,Node版本只能设置20

③由于免费账号限制,仓库属性必须为public而不是private

④这里的GITHUB_TOKEN不需要特意设置

⑤项目模块在右上角的设置-项目结构-导入模块中进行导入

NPM部署

看之前的操作好像都是在npm build之后,将项目根目录下的dist文件夹上传至服务器然后以HTML网站的形式来实现运行

但是现在宝塔面板的网站类型中提供了Node项目这个选项,所以就将整个admin项目进行了上传

没有找到好的自部署方法……直接压缩后上传吧

这里将管理端的Node项目文件放置在了/www/NottinghamWall/admin文件夹下

当看到显示项目在运行中,并且在项目日志中看到下面的内容就说明启动成功了

可能会用的到的指令:sudo lsof -i:8888 kill -9 PID

尾声

笔记总结于鄙人代码日常

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇
隐藏
变装