在不使用我的 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'。

更多例子: http://blogs.aws.amazon.com/application-management/post/Tx33XKAKURCCW83/Automatically-Deploy-from-GitHub-Using-AWS-CodeDeploy

比起允许 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_hookrepo.

权限

参考:http://docs.aws.amazon.com/cli/latest/reference/codepipeline/create-pipeline.html