Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何删除Github环境_Github_Heroku_Heroku Pipelines - Fatal编程技术网

如何删除Github环境

如何删除Github环境,github,heroku,heroku-pipelines,Github,Heroku,Heroku Pipelines,我的问题是关于清理Github存储库上的“环境”选项卡 我以前通过Heroku进行部署,使用两个独立Github分支(一个用于登台,一个用于生产)的自动部署 这在存储库上创建了一个“Environments”选项卡,其中显示了两个Heroku环境,完全符合预期 一旦我开始深入Heroku管道,我现在已经将应用程序配置为从暂存升级到生产,因此生产环境不再从分支自动部署 我的Github repo上的“环境”选项卡无法删除我不再使用的环境。我似乎无法在Github或Heroku上找到任何地方让Git

我的问题是关于清理Github存储库上的“环境”选项卡

我以前通过Heroku进行部署,使用两个独立Github分支(一个用于登台,一个用于生产)的自动部署

这在存储库上创建了一个“Environments”选项卡,其中显示了两个Heroku环境,完全符合预期

一旦我开始深入Heroku管道,我现在已经将应用程序配置为从暂存升级到生产,因此生产环境不再从分支自动部署

我的Github repo上的“环境”选项卡无法删除我不再使用的环境。我似乎无法在Github或Heroku上找到任何地方让Github“忘记”这个部署环境


我希望我的问题足够清楚;如果我能详细说明什么,请告诉我。

不幸的是,“部署”仪表板目前处于测试阶段,这意味着它们可能还没有功能


阅读。

它似乎没有UI,但您可以使用GitHub API来完成

在执行此操作之前,您可能应该断开GitHub和Heroku的连接

首先,转到GitHub帐户设置,然后转到开发人员设置,然后转到个人访问令牌。创建允许repo_部署的新令牌。生成后,保存十六进制标记,您将需要它来处理即将到来的API请求

对于这些示例,我将假设您的用户名是
$aaaa
,您的回购名称是
$bbbb
,您的访问令牌是
$tttt
。将这些替换为您的实际用户名、回购名称和访问令牌。或者只使用shell变量来存储实际值,这样可以直接粘贴代码块

首先,列出您的repo上的所有部署:

curl https://api.github.com/repos/$aaaa/$bbbb/deployments
每个部署都有一个
id
整数。记下它,并用该ID替换即将出现的代码块中的
$iiii
。或者为它创建另一个shell变量

现在,您必须为该部署创建“非活动”状态:

curl https://api.github.com/repos/$aaaa/$bbbb/deployments/$iiii/statuses -X POST -d '{"state":"inactive"}' -H 'accept: application/vnd.github.ant-man-preview+json' -H "authorization: token $tttt"
现在,您可以永久删除部署:

curl https://api.github.com/repos/$aaaa/$bbbb/deployments/$iiii -X DELETE -H "authorization: token $tttt"
如果有多个部署,请发送第一个请求以查看剩余的所有部署,然后如果需要,也可以删除这些部署

删除所有部署后,GitHub repo上的environments按钮将消失


来自和的信息。这对我来说很有效。

使用@Cadence的答案,我制作了一个快速而肮脏的python3脚本来自动化这个过程。只需运行它并输入您的信息,所有部署都将被删除,并从您的repo中删除“部署”选项卡


请看以下要点:

我也制作了一个小网页/脚本,以实现流程自动化(我没有安装Python,也没有看到其他人已经制作了脚本),这是在线的,并且将您的信息放入会自动完成流程

编辑2020年7月18日:我也将脚本从Stackblitz复制到了本地代码片段中,以防Stackblitz消失:

//建议:在执行此操作之前断开HEROKU与Github的连接(尽管我认为这不是严格必要的)。
//看https://stackoverflow.com/a/61272173/6569950 更多信息。
//参数
const TOKEN=“”;//必须是“repo_部署”授权
const REPO=“您的回购”//e、 g.“单一回购”
const USER_或_ORG=“您的姓名”//e、 g.“你的名字”
//全局变量
常量URL=`https://api.github.com/repos/${USER_或_ORG}/${REPO}/deployments`;
const AUTH_HEADER=`token${token}`;
//效用函数
常量getAllDeployments=()=>
获取(`${URL}`{
标题:{
授权:AUTH_头
}
})。然后(val=>val.json());
const makeDeploymentInactive=id=>
获取(`${URL}/${id}/statuses`{
方法:“张贴”,
正文:JSON.stringify({
状态:“不活动”
}),
标题:{
“内容类型”:“应用程序/json”,
接受:“application/vnd.github.antman preview+json”,
授权:AUTH_头
}
})。然后(()=>id);
const deleteDeployment=id=>
获取(`${URL}/${id}`{
方法:“删除”,
标题:{
授权:AUTH_头
}
})。然后(()=>id);
//主要
getAllDeployments()
.catch(console.error)
。然后(res=>{
log(`${res.length}找到部署`);
返回res;
})
.然后(val=>val.map(({
身份证件
})=>id)
.then(id=>Promise.all(id.map(id=>makeDeploymentInactive(id)))
。然后(res=>{
log(`${res.length}部署标记为“非活动”`);
返回res;
})
.then(id=>Promise.all(id.map(id=>deleteDeployment(id)))
。然后(res=>{
log(`${res.length}部署已删除`);
返回res;
})
。然后(最终结果=>{
const appDiv=document.getElementById(“应用”);
appDiv.innerHTML=`
清理结果

已删除部署:${finalResult.length}

ID:
${JSON.stringify(finalResult)}





(打开控制台)

`; });
h1,
氢{
字体系列:Lato;
}

Github部署的清理器
你需要输入参数


基于@Cadence的回答,我构建了以下bash脚本。只需设置适当的参数并让它运行即可

令牌需要
repo\u部署
OAuth范围

env=asd
token=asd
repo=asd
user=asd

for id in $(curl -u $user:$token https://api.github.com/repos/$user/$repo/deployments\?environment\=$env | jq ".[].id"); do
    curl -X POST -u $user:$token -d '{"state":"inactive"}' -H 'accept: application/vnd.github.ant-man-preview+json' https://api.github.com/repos/$user/$repo/deployments/$id/statuses
    curl -X DELETE -u $user:$token https://api.github.com/repos/$user/$repo/deployments/$id
done

我制作了一个交互式python脚本,它可以按名称(这是我的问题)或所有部署删除特定环境。请查看并让我知道它是否适合您:


这实际上也会删除所有部署,即使您的部署超过30个,这与这里的其他脚本不同,因为它会通过Github API中的分页响应数据,而不只是使用第一页。

我不知道这是否已经发布,但我肯定不想手动删除40多个部署,所以我创建了以下脚本,也可以随意使用:)

#/bin/bash
回购=/
代币=
# https://starkandwayne.com/b