在不使用我的 Github 用户的情况下将 AWS CodeDeploy 连接到 Github?
Connect AWS CodeDeploy to Github without using my Github user?
AWS 文档描述了您如何使用浏览器向 Github 进行身份验证,并且您当前已作为有效用户登录 Github,并有权访问您要从中部署的存储库:
http://docs.aws.amazon.com/codedeploy/latest/userguide/github-integ.html#github-integ-behaviors-auth
有没有什么方法可以在不链接我的用户和没有浏览器的情况下设置 CodeDeploy?我很乐意在每个存储库和 AWS API 调用上使用 webhook 来执行此操作,但如果必须的话,我会进行 Github 'service user'。
比起允许 AWS 访问我的 Github 账户上的每个存储库,我更愿意在我的存储库上使用 webhooks,或者自己设置它们。
您可以使用此 bash
命令
从本地到远程
rsync --delete -azvv -e "ssh -i /path/to/pem" /path/to/local/code/* ubuntu@66.66.66.66:/path/to/remote/code
从远程到本地
rsync --delete -azvv -e "ssh -i /path/to/pem" ubuntu@66.66.66.66:/path/to/remote/code/* /path/to/local/code
rsync
检查文件版本,更新需要更新的文件
CodeDeploy 和 Github 集成基于 Github Oauth。因此,要使用 CodeDeploy 和 Github 集成,您必须使用您的 github 帐户信任 CodeDeploy github 应用程序。目前此集成仅适用于具有有效 github 帐户的浏览器,因为 CodeDeploy 应用程序将始终重定向回 CodeDeploy 控制台以验证并完成 OAuth 身份验证过程。
目前除了在您的浏览器中执行 OAuth 流程外,似乎没有其他选择。如果您担心将整个 Github 帐户开放给亚马逊,创建服务用户可能是最好的方法,不幸的是,该用户似乎仍然需要对您的存储库的管理权限才能设置集成。
经过更多研究,我意识到我的第一个答案是错误的,您可以使用 AWS CLI 使用 Github OAuth 令牌创建 CodePipeline。然后您可以从那里插入您的 CodeDeploy 部署。这是一个示例配置:
{
"pipeline": {
"roleArn": "arn:aws:iam::99999999:role/AWS-CodePipeline-Service",
"stages": [
{
"name": "Source",
"actions": [
{
"inputArtifacts": [],
"name": "Source",
"actionTypeId": {
"category": "Source",
"owner": "ThirdParty",
"version": "1",
"provider": "GitHub"
},
"outputArtifacts": [
{
"name": "MyApp"
}
],
"configuration": {
"Owner": "myusername",
"Repo": "myrepo",
"Branch": "master",
"OAuthToken": "**************"
},
"runOrder": 1
}
]
},
{
"name": "Beta",
"actions": [
{
"inputArtifacts": [
{
"name": "MyApp"
}
],
"name": "CodePipelineDemoFleet",
"actionTypeId": {
"category": "Deploy",
"owner": "AWS",
"version": "1",
"provider": "CodeDeploy"
},
"outputArtifacts": [],
"configuration": {
"ApplicationName": "CodePipelineDemoApplication",
"DeploymentGroupName": "CodePipelineDemoFleet"
},
"runOrder": 1
}
]
}
],
"artifactStore": {
"type": "S3",
"location": "codepipeline-us-east-1-99999999"
},
"name": "MySecondPipeline",
"version": 1
}
}
您可以使用以下命令创建管道:
aws codepipeline create-pipeline --cli-input-json file://input.json
确保 Github OAuth 令牌具有 admin:repo_hook
和 repo
.
权限
参考:http://docs.aws.amazon.com/cli/latest/reference/codepipeline/create-pipeline.html
AWS 文档描述了您如何使用浏览器向 Github 进行身份验证,并且您当前已作为有效用户登录 Github,并有权访问您要从中部署的存储库:
http://docs.aws.amazon.com/codedeploy/latest/userguide/github-integ.html#github-integ-behaviors-auth
有没有什么方法可以在不链接我的用户和没有浏览器的情况下设置 CodeDeploy?我很乐意在每个存储库和 AWS API 调用上使用 webhook 来执行此操作,但如果必须的话,我会进行 Github 'service user'。
比起允许 AWS 访问我的 Github 账户上的每个存储库,我更愿意在我的存储库上使用 webhooks,或者自己设置它们。
您可以使用此 bash
命令
从本地到远程
rsync --delete -azvv -e "ssh -i /path/to/pem" /path/to/local/code/* ubuntu@66.66.66.66:/path/to/remote/code
从远程到本地
rsync --delete -azvv -e "ssh -i /path/to/pem" ubuntu@66.66.66.66:/path/to/remote/code/* /path/to/local/code
rsync
检查文件版本,更新需要更新的文件
CodeDeploy 和 Github 集成基于 Github Oauth。因此,要使用 CodeDeploy 和 Github 集成,您必须使用您的 github 帐户信任 CodeDeploy github 应用程序。目前此集成仅适用于具有有效 github 帐户的浏览器,因为 CodeDeploy 应用程序将始终重定向回 CodeDeploy 控制台以验证并完成 OAuth 身份验证过程。
目前除了在您的浏览器中执行 OAuth 流程外,似乎没有其他选择。如果您担心将整个 Github 帐户开放给亚马逊,创建服务用户可能是最好的方法,不幸的是,该用户似乎仍然需要对您的存储库的管理权限才能设置集成。
经过更多研究,我意识到我的第一个答案是错误的,您可以使用 AWS CLI 使用 Github OAuth 令牌创建 CodePipeline。然后您可以从那里插入您的 CodeDeploy 部署。这是一个示例配置:
{
"pipeline": {
"roleArn": "arn:aws:iam::99999999:role/AWS-CodePipeline-Service",
"stages": [
{
"name": "Source",
"actions": [
{
"inputArtifacts": [],
"name": "Source",
"actionTypeId": {
"category": "Source",
"owner": "ThirdParty",
"version": "1",
"provider": "GitHub"
},
"outputArtifacts": [
{
"name": "MyApp"
}
],
"configuration": {
"Owner": "myusername",
"Repo": "myrepo",
"Branch": "master",
"OAuthToken": "**************"
},
"runOrder": 1
}
]
},
{
"name": "Beta",
"actions": [
{
"inputArtifacts": [
{
"name": "MyApp"
}
],
"name": "CodePipelineDemoFleet",
"actionTypeId": {
"category": "Deploy",
"owner": "AWS",
"version": "1",
"provider": "CodeDeploy"
},
"outputArtifacts": [],
"configuration": {
"ApplicationName": "CodePipelineDemoApplication",
"DeploymentGroupName": "CodePipelineDemoFleet"
},
"runOrder": 1
}
]
}
],
"artifactStore": {
"type": "S3",
"location": "codepipeline-us-east-1-99999999"
},
"name": "MySecondPipeline",
"version": 1
}
}
您可以使用以下命令创建管道:
aws codepipeline create-pipeline --cli-input-json file://input.json
确保 Github OAuth 令牌具有 admin:repo_hook
和 repo
.
参考:http://docs.aws.amazon.com/cli/latest/reference/codepipeline/create-pipeline.html