这篇文章涵盖了设置Heroku CLI工具到使用GitHub Action的CI/CD管道的主要注释。
先决条件
- 运行以下命令安装CLI工具
curl https://cli-assets.heroku.com/install.sh | sh
- 如果您已经有一个帐户,创建帐户或登录
heroku login
节点服务器
- 运行软件包设置的以下命令
npm init -y
npm i express
- 写基本服务器
// server.js
const express = require('express');
const app = express();
const PORT = process.env.PORT || 8080;
app.get('/', (_, res) => res.send('Hello world'));
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
- 配置
start
脚本
// package.json
{
"scripts": {
"start": "node server.js"
}
}
项目设置
以下命令将创建一个带有提供名称的项目。项目URL将为<PROJECT_NAME>.herokuapp.com
heroku create -a <PROJECT_NAME>
git init
heroku git:remote -a <PROJECT_NAME>
创建一个带有命令以启动服务器的procfile。
# Procfile
web: npm start
环境变量
以下命令可用于设置提供的环境变量并重新启动服务器,显示已设置变量的列表,删除提供的变量并重新启动服务器,然后将SET变量附加到本地文件(.env
案件)。 Heroku将设置服务器端口的环境变量(PORT
)。
heroku config:set VARIABLE_NAME=value
heroku config
heroku config:remove VARIABLE_NAME
heroku config -s >> .env
插件
以下命令添加并删除指定的附加组件。
heroku addons:create <ADDON_NAME>
heroku addons:remove <ADDON_NAME>
数据库
Redis
运行以下命令以配置REDIS数据库。 Heroku将设置数据库连接的环境变量。
heroku addons:create upstash-redis:free
Postgres
运行以下命令来引导Postgres数据库。
heroku addons:create heroku-postgresql
上一个命令将在DATABASE_URL
环境变量中设置数据库连接字符串。
使用以下命令检查数据库信息。
heroku pg:info
procefile中的释放命令可以运行迁移。
# Procfile
release: npm run migrate
以下命令创建数据库备份,检查最后备份的进度,并显示上一个备份的列表。
heroku pg:backups:capture
heroku pg:backups:info
heroku pg:backups
调试
- 获取实时日志
heroku logs --tail
- 获取特定数量的日志行
heroku logs -n 20
- 获取有关应用程序的信息
heroku info
- 获取项目状态以检查是否有任何问题
heroku status
- 在App Dyno上运行bash
heroku run bash
- 重新启动应用程序
heroku restart
部署
手动部署
通过以下命令部署并打开部署版本。
git add .
git commit -m "Initial commit"
git push origin master
heroku open
如果在浏览器中打开项目的命令在Linux的Windows子系统中不起作用,请在相应的Shell配置文件(例如~/.zshrc
)中设置BROWSER
环境
export BROWSER=wslview
CI/CD管道
在部署方法页面上将应用程序与github连接,并启用CI和自动部署。
添加.github/workflows/config.yml
文件,其中包括CI管道的以下配置。
name: CI pipeline
on:
push:
branches:
- master
jobs:
build-and-deploy:
runs-on: ubuntu-latest
container: node:18.12.1-alpine3.15
steps:
- name: Github checkout
uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
- run: npm ci
- run: npm run lint
- run: npm test
- run: npm audit