AWS Codebuild createProject 方法缺少 Github 身份验证的 oauth 令牌参数?

AWS Codebuild createProject method is missing oauth token parameter for Github auth?

AWS Codebuild createProject 方法缺少 Github 身份验证的 OAuth 令牌参数?

我想避免使用 CodePipeline。我想以编程方式创建一个带有 Github 令牌的代码构建项目,但我似乎无法找到包含 GitHub 令牌的方法。有人经历过吗?

var params = {
    artifacts: {
      /* required */
      type: 'S3',
      location: 'STRING_VALUE',
      packaging: 'ZIP'
    },
    environment: {
      /* required */
      computeType: 'BUILD_GENERAL1_LARGE',
      image: 'aws/codebuild/nodejs:4.3.2', /* required */
      type: "LINUX_CONTAINER",
    },
    name: key, /* required */
    source: {
      /* required */
      type: "GITHUB",
      auth: {
        type: "OAUTH"
      },
      buildspec: 'echo "test";',
      location: `https://github.com/${original.organizations.name}/${original.repos.name}.git`,

    },
    description: 'STRING_VALUE',
    serviceRole: 'arn:aws:iam::171566796811:role/tmmmm6',
    timeoutInMinutes: 5
  };
  codebuild.createProject(params, function (err, data) {
    if (err) console.log(err, err.stack); // an error occurred
    else     console.log(data);           // successful response


    console.log("WEBHOOK")
    var params = {
      projectName: key /* required */
    };
    codebuild.createWebhook(params, function(err, data) {
      if (err) console.log(err, err.stack); // an error occurred
      else     console.log(data);           // successful response
    });


  });

我尝试使用以下 URL 格式: https://${original.github.token}:@github.com/${original.organizations.name}/${original.repos.name}.git 但这是行不通的。 Codebuild 不允许我创建 webhook。

这是文档。 http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CodeBuild.html 是否可以使用 GitHub 访问令牌创建代码构建?我知道如何使用代码管道来做到这一点,但我想尽可能避免使用代码管道。

没有编程方式可以做到这一点。您可以使用 AWS CodeBuild 控制台连接您的 GitHub 账户。这是一次性设置。连接后,所有使用您的 GitHub 帐户源代码的未来 CodeBuild 项目都将能够使用存储的令牌。

您的模板中缺少一个参数。来源应如下所示:

    source: {
      /* required */
      type: "GITHUB",
      auth: {
        type: "OAUTH",
        resource: "GITHUB"
      },
      buildspec: 'echo "test";',
      location: `https://github.com/${original.organizations.name}/${original.repos.name}.git`,

    },

正如 Zhen Li 所说,您必须首先通过控制台 (create auth resource like this) 向您的 AWS 账户授权 Github 一次,然后您可以通过编程方式为您的 [=16] 创建尽可能多的授权构建项目=]随心所欲!

我刚找到这个话题... 那么跟进问题:如果你必须为 GH 进行一次性设置,那么如果我有多个团队——每个团队都有自己的 GH 组织,那么我不能使用单独的令牌吗?

我必须使用来自有权访问所有 GH 组织的用户的令牌吗?对吗?

现在已经不是这样了。参见:

本质上:

  • 创建 PAT 并将其放入机密管理器
  • 在 CloudFormation 中创建 AWS::CodeBuild::SourceCredential 并动态 link 秘密。
  • 在项目定义中引用此资源。

上面的详细信息。令牌应具有 repoadmin:repo_hook(如果您想使用 webhooks)权限。