Skip to content

Use new Code Connections process #82

@ipmb

Description

@ipmb

The old process was cumbersome and error-prone. The new process looks better. We should be able to create the connection via the CLI and then open a browser for the user to install the app at GitHub.

https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-create-github.html#connections-create-github-cli

Relevant code:

  • func verifySourceCredentials(sess *session.Session, repositoryType string) error {
    codebuildSvc := codebuild.New(sess)
    sourceCredentialsOutput, err := codebuildSvc.ListSourceCredentials(&codebuild.ListSourceCredentialsInput{})
    if err != nil {
    return err
    }
    hasCredentials := false
    for _, cred := range sourceCredentialsOutput.SourceCredentialsInfos {
    if *cred.ServerType == repositoryType {
    hasCredentials = true
    }
    }
    if !hasCredentials {
    var friendlySourceName string
    if repositoryType == "BITBUCKET" {
    friendlySourceName = "Bitbucket"
    } else if repositoryType == "GITHUB" {
    friendlySourceName = "GitHub"
    } else {
    return fmt.Errorf("unsupported repository type: %s", repositoryType)
    }
    ui.Spinner.Stop()
    ui.PrintWarning(fmt.Sprintf("CodeBuild needs to be authenticated to access your repository at %s", friendlySourceName))
    fmt.Println("On the CodeBuild new project page:")
    fmt.Printf(" 1. Scroll to the %s section\n", aurora.Bold("Source"))
    fmt.Printf(" 2. Select %s for the %s\n", aurora.Bold(friendlySourceName), aurora.Bold("Source provider"))
    fmt.Printf(" 3. Keep the default %s\n", aurora.Bold("Connect using OAuth"))
    fmt.Printf(" 4. Click %s\n", aurora.Bold(fmt.Sprintf("Connect to %s", friendlySourceName)))
    fmt.Printf(" 5. Click %s in the popup window\n", aurora.Bold("Confirm"))
    fmt.Printf(" 6. %s You can close the browser window and continue with app setup here.\n\n", aurora.Bold("That's it!"))
    newProjectURL := fmt.Sprintf("https://%s.console.aws.amazon.com/codesuite/codebuild/project/new", *sess.Config.Region)
    url, err := auth.GetConsoleURL(sess, newProjectURL)
    if err == nil && isatty.IsTerminal(os.Stdin.Fd()) {
    fmt.Println("Opening the CodeBuild new project page now...")
    err = browser.OpenURL(*url)
    if err != nil {
    fmt.Println("Open this URL in your browser to view logs:")
    fmt.Println(*url)
    }
    } else {
    fmt.Printf("Visit the following URL to authenticate: %s", newProjectURL)
    }
    ui.PauseUntilEnter("Finish authentication in your web browser then press ENTER to continue.")
    return verifySourceCredentials(sess, repositoryType)
    }
    return nil
    }
  • https://github.com/apppackio/apppack-docs/blob/61a96fdf4424663f235f03a3d52c593e8b90a6b2/src/tutorials/deploy-first-app.md#L50-L60

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions