我设法弄明白了...
我基本上在我的实际问题中回答了它。
-转到帐户设置并获取您的 HEROKU_API_TOKEN。
- 将其作为配置变量添加到您的管道中。
- 在根目录中创建一个 app.json 文件,该文件继承了 HEROKU_API_TOKEN 和 HEROKU_APP_NAME 配置变量。您需要在脚本中使用它。
-设置您希望在部署后事件中运行的脚本。
你的 app.json 应该有这个基本结构:
{
"environments": {
"review": {
"scripts": {
"postdeploy": "node ./postdeployReviewapp.js"
},
"addons": [
"heroku-postgresql:hobby-dev"
]
}
},
"env":{
"HEROKU_APP_NAME": {
"required": true
},
"HEROKU_API_TOKEN":{
"required":true
}
}
}
-然后创建脚本...
您的脚本应读取自动生成的 database_url 并将其溢出以获取各个 dbconnection 变量。
- 向 heroku 平台 api config-vars 端点发出补丁请求,在正文中传递您的 dbconnection 变量。
您的节点脚本应如下所示:
const https = require('https');
const url = require('url');
/**
* eg. DATABASE_URL = postgres://ebitxebvixeeqd:dc59b16dedb3a1eef84d4999sb4baf@ec2-50-37-231-192.compute-2.amazonaws.com: 5432/d516fp1u21ph7b
* It's read like so: postgres:// USERNAME : PASSWORD @ HOST : PORT : DATABASE_NAME
*/
let settings = {
client: 'postgres'
};
const parsed = url.parse(process.env.DATABASE_URL, true);
const [username, password] = parsed.auth.split(':');
settings.host = parsed.hostname;
settings.port = Number(parsed.port);
settings.database = parsed.pathname.substr(1);
settings.username = username;
settings.password = password;
settings.ssl = (parsed.query.ssl === 'true');
var options = {
'method': 'PATCH',
'hostname': 'api.heroku.com',
'path': '/apps/' + process.env.HEROKU_APP_NAME + '/config-vars',
'headers': {
'Content-Type': 'application/json',
'Accept': 'application/vnd.heroku+json; version=3',
'Authorization': 'Bearer ' + process.env.HEROKU_API_TOKEN
}
};
var req = https.request(options, function (res) {
var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function (chunk) {
var body = Buffer.concat(chunks);
console.log(body.toString());
});
res.on("error", function (error) {
console.error(error);
});
});
var postData = JSON.stringify(
{
"DATABASE_USERNAME": settings.username,
"DATABASE_PASSWORD": settings.password,
"DATABASE_HOST": settings.host,
"DATABASE_PORT": settings.port,
"DATABASE_NAME": settings.database
});
req.write(postData);
req.end();
您的评论应用现在应该有新的配置变量,strapi 将使用这些变量连接到 postgres。