查看 mac 上的设备列表
1 | ffmpeg -f avfoundation -list_devices true -i "" |
文档中并没有关于 SSH 方面的东西,虽然不属于 Github Actions 范畴,但经常用到,并且确实要花费一些时间去检索用法,甚至调试很久。
此文是为了记录经过验证的示例代码,方便日后或他人参考和使用。
Github 推出个人免费私有仓库后,我就逐渐把在其它平台的私有仓库迁移过来了,万分方便。
唯一的遗憾就是 CI/CD,之前使用 Gitlab CI
体验很好,以至于我对其它的 CI 工具都提不起兴趣,一直期待 Github 能推出类似的,所以 Github Actions
的推出我是无比兴奋的。
了解 js 文件加载前的准备工作
在《从 main 函数开始》这篇中说到了 LoadEnvironment()
函数负责加载 js 代码,但并没有继续说明加载细节。
这篇从 LoadEnvironment()
开始探究 js 代码加载的详细过程。
Web 前端的应用需要在 node 环境下安装依赖和构建,但是发布一般又是用 nginx 镜像,我们既不想在 node 容器里安装 nginx,也不想在 nginx 容器里安装 node;
所以,我们先在一个 node 容器中 build 应用,利用 GitLab CI Cache 机制,将构建后的目标文件(通常是 dist 文件夹)缓存,以便在发布阶段 (release stage) 可以使用。
这里我所谓的 release 是指发布 docker image ,所以需要一个 Dockerfile,并且是以 nginx image 为基础镜像构建的。
我这里是部署到 swarm 集群上,所以会首先把 docker-stack.yml
文件 scp 到目标服务器上。
我们通常需要频繁的将生产环境(production)的数据库同步到 develop 和 staging 环境。
之前我们的做法是写了一个 shell 在服务器上手动运行,这个需要测试人员和开发人员拥有服务器权限,甚至是生产环境的权限,风险较大且 “不够 CI/CD 化”。
后来是想写一个 HTTP 服务来触发这样的数据库同步操作,增加了额外的工作开销,还要为这个服务配相应的 CI/CD,不如直接使用 GitLab CI 来完成这个工作。
GitLab CI Pipeline 不仅可以在用户 push 代码的时候被触发,还可以通过 HTTP 调用的形式主动触发。
开发 & 测试人员将 production 环境的数据库同步到 develop / staging 环境:
- 无需接触服务器环境
- 任意时间可主动进行同步(相对于计划任务而言)
- 可指定同步某个项目相关的数据库
- 可指定同步到某个服务器环境 ( develop / staging )
预设场景:
- 有三个数据库项目:project-a project-b project-c
- 有三个服务器环境:production develop staging
- 通过 GitLab CI Pipeline Triggers 来触发执行(HTTP方式)
- 我们可任意指定同步某一个项目的 production 数据库到 develop 或 staging