1

我用Cockpit CMS后端创建了一个 NuxtJS 静态博客。目前我需要在npm run generate本地创建新的博客文章并将文件从 dist 文件夹上传到我的服务器。如何自动化这个过程?

(我想要归档的内容:创建新的博客条目 -} 触发器生成静态站点 -} 在服务器上更新文件)

更新:我有 SSH 访问权限并在我的服务器上安装了 NodeJS。

4

2 回答 2

5

由于您的计算机并不总是处于启动状态,可能不会保持相同的 IP 地址并且不会有一个反向代理来处理多个挂钩,因此最好不要在您自己的计算机上这样做。

如果您使用的是 Netlify 或 Vercel 或任何其他 SAAS 无服务器托管,它们可以访问您可以发送请求的端点,这将触发您网站的新构建:它称为“构建挂钩”或“部署挂钩”。

你应该在你的服务器上做的是上传你的 Nuxt 项目的源代码,并提供它需要生成的一切(节点 + npm,网络访问......)到它然后在线公开的地方。然后,您需要开发自己的构建挂钩:重新生成网站的脚本和触发它的端点。

在 Cockpit 方面,它们允许您访问Webhook,以便在您的帐户发生任何事情时发送 HTTP 请求。

如果它是一个选项,你真的应该考虑迁移到 Netlify/Vercel/... 这将简化很多:)。他们将对您的站点进行地理复制以使其快速加载,如果构建失败不会破坏您的站点,并确保它始终具有正确的 SSL 证书。

于 2021-01-01T15:11:35.540 回答
2

我了解您希望使用Cockpit CMS作为数据源来维护您的博客并自动化部署过程。

有很多选择可供您使用。

托管主机

您可以使用构建和托管您的内容并对 WebHooks 和 Git 提交挂钩做出反应的服务。
这种方法可以真正轻松快速地部署您的项目最小配置。

自托管

假设您已经为自己的服务器配置了 SSH 访问和 Node.js,并配置了 Web 服务器。

您可以使用持续交付将项目部署到服务器。

一些可能对您有所帮助的有用文章;

GitHub 有一个很棒的免费课程DevOps with GitHub Actions,它可以让你很好地理解使用 GitHub 操作和类似的持续交付系统自动部署。

Github 操作

这是我不久前完成的代码挑战中的一个有用的配置。

name: ci

on:
  push:
    branches:
      - main
      - master
  pull_request:
    branches:
      - main
      - master

jobs:
  ci:
    runs-on: ubuntu-20.04

    steps:
      - name: Checkout 
        uses: actions/checkout@master

      - name: Setup node env 
        uses: actions/setup-node@v2.1.4
        with:
          node-version: 14

      - name: Get yarn cache directory path 
        id: yarn-cache-dir-path
        run: echo "::set-output name=dir::$(yarn cache dir)"

      - name: Cache node_modules 
        uses: actions/cache@v2
        id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
        with:
          path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
          key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
          restore-keys: |
            ${{ runner.os }}-yarn-

      - name: Install dependencies ‍
        run: yarn

      - name: Build 
        run: yarn generate
        env:
          NODE_ENV: production
          BASE_URL: /<MY_REPOSITORY_NAME>
          DEV_TO_API_KEY: ${{ secrets.DEV_TO_API_KEY }}

      - name: Deploy 
        uses: peaceiris/actions-gh-pages@v3
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./dist

使用 Github Pages,您可能需要BASE_URL在您的nuxt.config.js

export default {
  router: {
    base: process.env.BASE_URL || '/'
  }
}

我真的希望这些资源对您的项目有所帮助。

于 2021-01-04T22:37:52.747 回答