在不使用我的Github用户的情况下将AWS CodeDeploy连接到Github?

时间:2016-08-23 12:33:53

标签: amazon-web-services github aws-code-deploy

AWS文档描述了如何使用浏览器对Github进行身份验证,并且您当前是以有权使用您要部署的存储库的权限的用户身份登录到Github:

http://docs.aws.amazon.com/codedeploy/latest/userguide/github-integ.html#github-integ-behaviors-auth

有没有办法在不链接我的用户和拥有浏览器的情况下设置CodeDeploy?我喜欢在每个存储库和AWS API调用上使用webhooks来做这件事,但如果必须,我会创建一个Github'服务用户'。

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

我喜欢在我的仓库中使用webhook,或者自己设置webhook,而不是允许AWS访问我的Github帐户上的每个存储库。

4 个答案:

答案 0 :(得分:1)

此时似乎没有替代方法在浏览器中执行OAuth流程。如果您担心将整个Github帐户打开到亚马逊,那么创建服务用户可能是最好的方法,不幸的是,该用户似乎仍然需要对您的存储库进行管理访问才能设置集成。

答案 1 :(得分:0)

CodeDeploy和Github集成基于Github Oauth。因此,要使用CodeDeploy和Github集成,您必须使用您的github帐户信任CodeDeploy github应用程序。目前,此集成仅在您的浏览器中使用有效的github帐户,因此CodeDeploy应用程序将始终重定向回CodeDeploy控制台以验证并完成OAuth身份验证过程。

答案 2 :(得分:0)

经过更多研究后,我意识到我的第一个答案是错误的,您可以使用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

答案 3 :(得分:-3)

您可以使用此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检查文件版本并更新需要更新的文件