在开始这个新博客时,我必须向您介绍 Cecil:一个用 PHP 编写的静态站点生成器。
文档非常广泛,我不会向您展示如何安装它,但我会向您展示如何在 Github Actions 上部署此站点。
塞西尔??
Cecil 是一个用 PHP 编写的静态站点生成器。 他是这个网站的运营者,也是我的支持者 链接页面。
阿诺·利尼 是他的父亲,我想我可以说他经常从事这方面的工作。 此外,它对 Github 的支持响应非常灵敏。
如果你想了解更多关于Cecil的信息,我只能推荐你去官网: https://cecil.app
部署 ??
等等 Fred,您是在告诉我们您发布的每篇文章都会进行部署、生产启动吗?
是的,所以实际上这样说,可能会很可怕。
但我向您保证,这是通过 Github Actions 自动部署的。
所以如果“自动部署,Github操作”这几个词对你来说是胡言乱语,我只能建议你去看看 持续集成/持续交付培训 来自朋友 Yoan Dev。 通过点击此链接,您将有权享受 15% 的折扣。 (这不是附属链接😉)
Github 操作
重点
需要澄清的是,我的主机 (o2switch) 不允许我通过 Github Actions 进行 SSH,所以这迫使我改用 FTP。
但我可以向你保证它功能齐全。
但如果您希望采用不同的方式,则只需在部署部分调整脚本即可。
先决条件
显然,在开始之前有一些先决条件。
部署脚本
如果尚未完成此操作,则必须创建一个目录 .github/workflows
如下图所示:
然后将下面的脚本复制/粘贴/调整到您可以调用的文件中 main.yml
。
name: ftpdeployment
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout source
uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.1'
extensions: mbstring, gd, imagick, intl, gettext
- name: Build with Cecil
uses: Cecilapp/Cecil-Action@v3
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: website
path: _site
deploy:
needs: build
runs-on: ubuntu-latest
steps:
- name: Download artifact
uses: actions/download-artifact@v3
with:
name: website
path: _site
- name: FTP Deploy
uses: SamKirkland/[email protected]
with:
server: ${{ secrets.FTP_SERVER }}
username: ${{ secrets.FTP_USERNAME }}
password: ${{ secrets.FTP_PASSWORD }}
local-dir: ./_site/
一些快速解释:
- on:push:branches: => 表示当主分支被推送时该脚本将运行
- jobs:这里将执行两个作业。 首先是构建作业,然后是部署作业
- “构建”作业将在 ubuntu 映像上执行,并将包括以下步骤:
- 源签出:检索存储库源
- PHP 设置:配置 PHP 环境,允许执行以下构建步骤
- 使用 Cecil 构建:将允许您构建目录
_site
包含生成的静态站点 - 上传工件:这将保存工件,包括目录
_site
通过命名它website
以便下次工作时可以使用
- “部署”作业将在相同的 ubuntu 映像上执行,并将包括以下步骤:
- 恢复上一个作业期间生成的工件
- 目录部署
_site
通过 FTP 使用先前保存在 github 上的机密
如果第一次部署期间一切顺利,FTP 部署脚本将创建所有必需的目录和文件。
在接下来的时间里 push
,它只会上传新的和修改的文件。
通过这个非常简单的设置,我只需要编写我的 Markdown 文件,提交它们并推送它们,以便它们在下一分钟内出现在网上。 我的模板文件显然也是如此。
我会加 阿诺的精彩言论 :
让我们指定部署是原子的:如果站点的(重新)构建阶段由于某种原因失败,则不会创建存档,因此不会通过 FTP 发送,因此不存在“破坏”生产中的站点的风险😊
使用起来确实非常愉快,然后在性能和安全性方面,没有任何问题。
然后,最后一个也是最重要的优势是我们可以在周五投入生产,这是无价的! 😉