GitLab CI/CD рд╕рд╣ рд╕рд╣рдпреЛрдЧ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА HashiCorp Waypoint рдХрд╕реЗ рд╡рд╛рдкрд░рд╛рд╡реЗ

GitLab CI/CD рд╕рд╣ рд╕рд╣рдпреЛрдЧ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА HashiCorp Waypoint рдХрд╕реЗ рд╡рд╛рдкрд░рд╛рд╡реЗ

HashiCorp рдиреЗ рдПрдХ рдирд╡реАрди рдкреНрд░рдХрд▓реНрдк рджрд╛рдЦрд╡рд▓рд╛ рд╡реЗрдкреЙрдИрдВрдЯ рд╡рд░ HashiCorp рдбрд┐рдЬрд┐рдЯрд▓. рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рддреЗ AWS рдЖрдгрд┐ Google рдХреНрд▓рд╛рдЙрдб рд░рди рдкрд░реНрдпрдВрддрдЪреНрдпрд╛ рд╡рд┐рд╡рд┐рдз рдХреНрд▓рд╛рдЙрдб рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╕рд╛рдареА рдмрд┐рд▓реНрдбрд┐рдВрдЧ, рд╢рд┐рдкрд┐рдВрдЧ рдЖрдгрд┐ рд░рд┐рд▓реАрдЭрд┐рдВрдЧ рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рдЪреЗ рд╡рд░реНрдгрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╣реЗ HCL-рдЖрдзрд╛рд░рд┐рдд рдлрд╛рдЗрд▓ рд╡рд╛рдкрд░рддреЗ. рд╡реЗрдкреЙрдИрдВрдЯрдЪрд╛ рд╡рд┐рдЪрд╛рд░ рдХрд░рд╛ рдЯреЗрд░рд╛рдлреЙрд░реНрдо рдЖрдгрд┐ рд╡реНрд╣реЕрдЧреНрд░рдВрдЯрдиреЗ рддреБрдордЪреЗ ре▓рдкреНрд▓рд┐рдХреЗрд╢рди рдмрд┐рд▓реНрдбрд┐рдВрдЧ, рд╢рд┐рдкрд┐рдВрдЧ рдЖрдгрд┐ рд░рд┐рд▓реАрдЭ рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпреЗрдЪреЗ рд╡рд░реНрдгрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХрддреНрд░ рдХреЗрд▓реЗ рдЖрд╣реЗ.

рд╣реЗ рдЦрд░реЗ рдЖрд╣реЗ, HashiCorp рдиреЗ рдореБрдХреНрдд рд╕реНрд░реЛрдд рдореНрд╣рдгреВрди рд╡реЗрдкреЙрдИрдВрдЯ рдЬрд╛рд░реА рдХреЗрд▓реЗ рдЖрд╣реЗ, рдЖрдгрд┐ рддреЗ рдЕрдиреЗрдХ рдЙрджрд╛рд╣рд░рдгрд╛рдВрд╕рд╣ рдпреЗрддреЗ. рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрдЯрд░рдЪреА рдкрд╛рддрд│реА рддреБрдордЪреНрдпрд╛рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдЖрд╣реЗ, рд╡реЗрдкреЙрдЗрдВрдЯ рдПрдХ рдПрдХреНрдЭрд┐рдХреНрдпреВрдЯреЗрдмрд▓ рдореНрд╣рдгреВрди рдпреЗрддреЛ рдЬреЛ рддреБрдореНрд╣реА рдереЗрдЯ рддреБрдордЪреНрдпрд╛ рд▓реЕрдкрдЯреЙрдкрд╡рд░ рдХрд┐рдВрд╡рд╛ рддреБрдордЪреНрдпрд╛ рдЖрд╡рдбреАрдЪреНрдпрд╛ CI/CD рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди рдЯреВрд▓рд╡рд░реВрди рдЪрд╛рд▓рд╡реВ рд╢рдХрддрд╛. ре▓рдкреНрд▓рд┐рдХреЗрд╢рди рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ рдЯрд╛рд░реНрдЧреЗрдЯ рджреЗрдЦреАрд▓ рддреБрдордЪреНрдпрд╛рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдЖрд╣реЗ, рдХрд╛рд░рдг рд╡реЗрдкреЙрдИрдВрдЯ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕, рдбреЙрдХрд░, Google рдХреНрд▓рд╛рдЙрдб рд░рди, AWS ECS рдЖрдгрд┐ рдмрд░реЗрдЪ рдХрд╛рд╣реА рд╕рдкреЛрд░реНрдЯ рдХрд░рддреЗ.

рдЕрдкреНрд░рддрд┐рдо рд╡рд╛рдЪрд▓реНрдпрд╛рдирдВрддрд░ рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг рдЖрдгрд┐ рд╕рд░реНрд╡рд╛рдд рдЫрд╛рди рдЙрджрд╛рд╣рд░рдгреЗ HashiCorp рджреНрд╡рд╛рд░реЗ рдкреНрд░рджрд╛рди рдХреЗрд▓реЗрд▓реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ, рдЖрдореНрд╣реА GitLab CI/CD рд╕рд╣ рд╡реЗрдкреЙрдЗрдВрдЯ рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди рдЬрд╡рд│реВрди рдкрд╛рд╣рдгреНрдпрд╛рдЪрд╛ рдирд┐рд░реНрдгрдп рдШреЗрддрд▓рд╛. рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА рдирдореБрдирд╛ рднрд╛рдВрдбрд╛рд░рд╛рддреВрди AWS ECS рд╡рд░ рдЪрд╛рд▓рдгрд╛рд░рд╛ рдПрдХ рд╕рд╛рдзрд╛ Node.js рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдШреЗрдК.

рд░реЗрдкреЙрдЬрд┐рдЯрд░реА рдХреНрд▓реЛрди рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, рдПрдХ рдкреГрд╖реНрда рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдгрд╛рд░реНтАНрдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдЪреА рд░рдЪрдирд╛ рдкрд╛рд╣реВрдпрд╛:

GitLab CI/CD рд╕рд╣ рд╕рд╣рдпреЛрдЧ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА HashiCorp Waypoint рдХрд╕реЗ рд╡рд╛рдкрд░рд╛рд╡реЗ

рддреБрдордЪреНрдпрд╛ рд▓рдХреНрд╖рд╛рдд рдЖрд▓реЗ рдЕрд╕реЗрд▓ рдХреА, рдпрд╛ рдкреНрд░рдХрд▓реНрдкрд╛рдд рдХреЛрдгрддреАрд╣реА рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдирд╛рд╣реА. рддреЗ рдЙрджрд╛рд╣рд░рдгрд╛рдордзреНрдпреЗ рдЬреЛрдбрд▓реЗрд▓реЗ рдирд╛рд╣реАрдд рдХрд╛рд░рдг рдЖрдореНрд╣рд╛рд▓рд╛ рддреНрдпрд╛рдВрдЪреА рдЦрд░реЛрдЦрд░ рдЧрд░рдЬ рдирд╛рд╣реА, рдХрд╛рд░рдг рд╡реЗрдкреЙрдИрдВрдЯ рдЖрдордЪреНрдпрд╛рд╕рд╛рдареА рддреНрдпрд╛рдВрдЪреА рдХрд╛рд│рдЬреА рдШреЗрдИрд▓. рдЪрд▓рд╛ рдлрд╛рдИрд▓ рдЬрд╡рд│реВрди рдкрд╛рд╣реВ waypoint.hclрддреЗ рдХрд╛рдп рдХрд░реЗрд▓ рд╣реЗ рд╕рдордЬреВрди рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА:

project = "example-nodejs"

app "example-nodejs" {
  labels = {
    "service" = "example-nodejs",
    "env" = "dev"
  }

  build {
    use "pack" {}
    registry {
    use "aws-ecr" {
        region = "us-east-1"
        repository = "waypoint-gitlab"
        tag = "latest"
    }
    }
  }

  deploy {
    use "aws-ecs" {
    region = "us-east-1"
    memory = "512"
    }
  }
}

рдмрд┐рд▓реНрдб рдлреЗрдЬ рджрд░рдореНрдпрд╛рди, рд╡реЗрдкреЙрдИрдВрдЯ рдХреНрд▓рд╛рдЙрдб рдиреЗрдЯрд┐рд╡реНрд╣ рдмрд┐рд▓реНрдбрдкреЕрдХ рд╡рд╛рдкрд░рддреЗ (рд╕реАрдПрдирдмреА) рдкреНрд░рдХрд▓реНрдкрд╛рдЪреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рди рд╡рд╛рдкрд░рддрд╛ рдбреЙрдХрд░ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА. рддрддреНрд╡рддрдГ, рд╣реЗ рд╕рдорд╛рди рддрдВрддреНрд░рдЬреНрдЮрд╛рди рдЖрд╣реЗ рдЬреЗ GitLab рджреНрд╡рд╛рд░реЗ рдЕрдВрд╢рддрдГ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ рдСрдЯреЛ DevOps рдСрдЯреЛ рдмрд┐рд▓реНрдб рдкрд╛рдпрд░реАрд╡рд░. CNCF рдЪреЗ CNB рдЙрджреНрдпреЛрдЧ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдордзреНрдпреЗ рдЕрдзрд┐рдХрд╛рдзрд┐рдХ рджрддреНрддрдХ рдШреЗрдд рдЖрд╣реЗ рд╣реЗ рдкрд╛рд╣реВрди рдЦреВрдк рдЖрдирдВрдж рдЭрд╛рд▓рд╛.

рдЗрдореЗрдЬ рддрдпрд╛рд░ рдЭрд╛рд▓реНрдпрд╛рд╡рд░, рд╡реЗрдкреЙрдИрдВрдЯ рдЖрдкреЛрдЖрдк рдЖрдордЪреНрдпрд╛ AWS ECR рд░реЗрдЬрд┐рд╕реНрдЯреНрд░реАрдордзреНрдпреЗ рдЕрдкрд▓реЛрдб рдХрд░реЗрд▓ рдЬреЗрдгреЗрдХрд░реВрди рддреА рдкрд╛рдард╡рд╛рдпрд▓рд╛ рддрдпрд╛рд░ рд╣реЛрдИрд▓. рдЕрд╕реЗрдВрдмреНрд▓реАрдЪреНрдпрд╛ рд╢реЗрд╡рдЯреА, рд╡рд┐рддрд░рдг рдЪрд░рдг рд╡рд╛рдкрд░рддреЗ AWS ECS рдНрдб-рдСрди рдЖрдордЪрд╛ рдЕрд░реНрдЬ рдЖрдордЪреНрдпрд╛ AWS рдЦрд╛рддреНрдпрд╛рд╡рд░ рдЙрдкрдпреЛрдЬрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА.

рдорд╛рдЭреНрдпрд╛ рд▓реЕрдкрдЯреЙрдкрд╡рд░реВрди рд╣реЗ рд╕реЛрдкреЗ рдЖрд╣реЗ. рдореА рд╡реЗрдкреЙрдИрдВрдЯрдордзреНрдпреЗ рдареЗрд╡рд▓реЗ рдЖрд╣реЗ рдЬреЗ рдорд╛рдЭреНрдпрд╛ AWS рдЦрд╛рддреНрдпрд╛рдордзреНрдпреЗ рдЖрдзреАрдкрд╛рд╕реВрдирдЪ рдкреНрд░рдорд╛рдгреАрдХреГрдд рдЖрд╣реЗ рдЖрдгрд┐ рддреЗ "рдлрдХреНрдд рдХрд╛рд░реНрдп рдХрд░рддреЗ". рдкрдг рдорд▓рд╛ рдорд╛рдЭреНрдпрд╛ рд▓реЕрдкрдЯреЙрдкрдЪреНрдпрд╛ рдкрд▓реАрдХрдбреЗ рдЬрд╛рдпрдЪреЗ рдЕрд╕реЗрд▓ рддрд░ рдХрд╛рдп рд╣реЛрдИрд▓? рдХрд┐рдВрд╡рд╛ рдХрджрд╛рдЪрд┐рдд рдорд▓рд╛ рдорд╛рдЭреНрдпрд╛ рдПрдХреВрдг CI/CD рдкрд╛рдЗрдкрд▓рд╛рдЗрдирдЪрд╛ рднрд╛рдЧ рдореНрд╣рдгреВрди рд╣реА рддреИрдирд╛рддреА рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдХрд░рд╛рдпрдЪреА рдЖрд╣реЗ рдЬрд┐рдереЗ рдорд╛рдЭреНрдпрд╛ рд╕рдзреНрдпрд╛рдЪреНрдпрд╛ рдПрдХрддреНрд░реАрдХрд░рдг рдЪрд╛рдЪрдгреНрдпрд╛, рд╕реБрд░рдХреНрд╖рд╛ рдЪрд╛рдЪрдгреНрдпрд╛ рдЖрдгрд┐ рдЗрддрд░ рдЪрд╛рд▓рддрд╛рдд? рд╣рд╛ рдХрдереЗрдЪрд╛ рднрд╛рдЧ рдЖрд╣реЗ рдЬрд┐рдереЗ GitLab CI/CD рдпреЗрддреЗ!

рдиреЛ рдмреЙрд▓ рдЬрд░ рддреБрдореНрд╣реА рдлрдХреНрдд CI/CD рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рдЪреА рдпреЛрдЬрдирд╛ рдЖрдЦрдд рдЕрд╕рд╛рд▓ рдХрд┐рдВрд╡рд╛ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдмрд╛рдВрдзрдгреНрдпрд╛рд╕рд╛рдареА рд╕рд░реНрд╡реЛрддреНрддрдо рдкрджреНрдзрддреА рд▓рд╛рдЧреВ рдХрд░реВ рдЗрдЪреНрдЫрд┐рдд рдЕрд╕рд╛рд▓, рддрд░ рдирд╡реАрди рд╕реНрд▓рд░реНрдо рдХреЛрд░реНрд╕рдХрдбреЗ рд▓рдХреНрд╖ рджреНрдпрд╛. "рдЧрд┐рдЯрд▓реЕрдм рд╕реАрдЖрдпрдЪреНрдпрд╛ рдЙрджрд╛рд╣рд░рдгрд╛рд╡рд░ рд╕реАрдЖрдп/рд╕реАрдбреА". рддреЗ рдЖрддрд╛ рдкреНрд░реА-рдСрд░реНрдбрд░ рдХрд┐рдорддреАрд╕рд╛рдареА рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ.

GitLab CI/CD рдордзреНрдпреЗ рд╡реЗрдкреЙрдЗрдВрдЯ

рд╣реЗ рд╕рд░реНрд╡ GitLab CI/CD рдордзреНрдпреЗ рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрдордЪреНрдпрд╛ рдлрд╛рдИрд▓рдордзреНрдпреЗ рдХрд╛рдп рд╣рд╡реЗ рдЖрд╣реЗ рддреЗ рдкрд╛рд╣реВрдпрд╛ .gitlab-ci.yml:

  • рд╕рд░реНрд╡ рдкреНрд░рдердо, рддреНрдпрд╛рдЪреНрдпрд╛ рдЖрдд рдЪрд╛рд▓рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣рд╛рд▓рд╛ рдмреЗрд╕ рдЗрдореЗрдЬрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ. рд╡реЗрдкреЙрдИрдВрдЯ рдХреЛрдгрддреНрдпрд╛рд╣реА рд▓рд┐рдирдХреНрд╕ рд╡рд┐рддрд░рдгрд╛рд╡рд░ рдЪрд╛рд▓рддреЗ, рддреНрдпрд╛рд▓рд╛ рдлрдХреНрдд рдбреЙрдХрд░рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрд╕рддреЗ, рдореНрд╣рдгреВрди рдЖрдореНрд╣реА рд╕рд╛рдорд╛рдиреНрдп рдбреЙрдХрд░ рдкреНрд░рддрд┐рдореЗрд╕рд╣ рдЪрд╛рд▓рд╡реВ рд╢рдХрддреЛ.
  • рдкреБрдвреЗ, рддреБрдореНрд╣рд╛рд▓рд╛ рдпрд╛ рдкреНрд░рддрд┐рдореЗрдордзреНрдпреЗ рд╡реЗрдкреЙрдЗрдВрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рднрд╡рд┐рд╖реНрдпрд╛рдд рдЖрдореНрд╣реА рдЧреЛрд│рд╛ рдХрд░реВ рд╢рдХрддреЛ рдореЗрдЯрд╛ рдмрд┐рд▓реНрдб рдкреНрд░рддрд┐рдорд╛ рдЖрдгрд┐ рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реНрд╡рддрдГрд╕рд╛рдареА рдХрдВрдЯреЗрдирд░ рдХрд░рд╛.
  • рд╢реЗрд╡рдЯреА рдЖрдкрдг рд╡реЗрдкреЙрдИрдВрдЯ рдХрдорд╛рдВрдбреНрд╕ рдЪрд╛рд▓рд╡реВ

рдЙрдкрдпреЛрдЬрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд╛рд▓рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдордЪреНрдпрд╛ рдкрд╛рдЗрдкрд▓рд╛рдЗрдирд▓рд╛ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реЗрд▓реА рдкреНрд░рддреНрдпреЗрдХ рдЧреЛрд╖реНрдЯ рд╡рд░ рдЖрд╣реЗ, рдкрд░рдВрддреБ AWS рд╡рд░ рдЙрдкрдпреЛрдЬрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрдгрдЦреА рдПрдХрд╛ рдЧреЛрд╖реНрдЯреАрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ: рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрдордЪреНрдпрд╛ AWS рдЦрд╛рддреНрдпрд╛рдд рд▓реЙрдЧ рдЗрди рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рд╡реЗрдкреЙрдИрдВрдЯ рд╡рд░реНрдгрдирд╛рдд рдпреЛрдЬрдирд╛ рдЖрд╣реЗрдд рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЖрдгрд┐ рдЕрдзрд┐рдХреГрддрддрд╛ рдмрджреНрджрд▓. HashiCorp рджреЗрдЦреАрд▓ рдпрд╛ рдЖрдард╡рдбреНрдпрд╛рдд рдПрдХ рдкреНрд░рднрд╛рд╡реА рдкреНрд░рдХрд▓реНрдк рдЬрд╛рд░реА рдХреЗрд▓рд╛ рд╕реАрдорд╛. рдкрд░рдВрддреБ рдЖрддреНрддрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЖрдгрд┐ рдЕрдзрд┐рдХреГрддрддрд╛ рд╕реНрд╡рддрдГ рдШреЗрдК рдЖрдгрд┐ рд╣рд╛рддрд╛рд│реВ рд╢рдХрддреЛ.

AWS рд╡рд░ GitLab CICD рдкреНрд░рдорд╛рдгреАрдХрд░рдгрд╛рд╕рд╛рдареА рдЕрдиреЗрдХ рдкрд░реНрдпрд╛рдп рдЖрд╣реЗрдд. рдкрд╣рд┐рд▓рд╛ рдкрд░реНрдпрд╛рдп рдореНрд╣рдгрдЬреЗ рдЕрдВрдЧрднреВрдд рд╡рд╛рдкрд░рдгреЗ рд╣реЕрд╢рд┐рдХреЙрд░реНрдк рддрд┐рдЬреЛрд░реА. рддреБрдордЪрд╛ рдХрд╛рд░реНрдпрд╕рдВрдШ рдХреНрд░реЗрдбреЗрдиреНрд╢рд┐рдпрд▓ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдирд╛рд╕рд╛рдареА рдЖрдзреАрдЪ Vault рд╡рд╛рдкрд░рдд рдЕрд╕рд▓реНрдпрд╛рд╕ рддреЗ рдареАрдХ рдЖрд╣реЗ. рддреБрдордЪрд╛ рдХрд╛рд░реНрдпрд╕рдВрдШ AWS IAM рд╡рд╛рдкрд░реВрди рдЕрдзрд┐рдХреГрддрддрд╛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдд рдЕрд╕рд▓реНрдпрд╛рд╕ рдХрд╛рд░реНрдп рдХрд░рдгрд╛рд░реА рджреБрд╕рд░реА рдкрджреНрдзрдд рдореНрд╣рдгрдЬреЗ рдбрд┐рд▓рд┐рд╡реНрд╣рд░реА рдХрд╛рд░реНрдпреЗ рдпрд╛рджреНрд╡рд╛рд░реЗ рдЯреНрд░рд┐рдЧрд░ рдЭрд╛рд▓реА рдЖрд╣реЗрдд рд╣реЗ рддрдкрд╛рд╕рдгреЗ GitLab рдзрд╛рд╡рдкрдЯреВA рдЬреЗ IAM рджреНрд╡рд╛рд░реЗ рддреИрдирд╛рддреА рд╕реБрд░реВ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЕрдзрд┐рдХреГрдд рдЖрд╣реЗ. рдкрд░рдВрддреБ рдЬрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рдлрдХреНрдд рд╡реЗрдкреЙрдИрдВрдЯрд╢реА рдкрд░рд┐рдЪрд┐рдд рд╡реНрд╣рд╛рдпрдЪреЗ рдЕрд╕реЗрд▓ рдЖрдгрд┐ рддреЗ рддреНрд╡рд░реАрдд рдХрд░рд╛рдпрдЪреЗ рдЕрд╕реЗрд▓, рддрд░ рддреБрдордЪрд╛ AWS API рдЖрдгрд┐ рдЧреБрдкреНрдд рдХреА рдЬреЛрдбрдгреЗ рд╣рд╛ рд╢реЗрд╡рдЯрдЪрд╛ рдкрд░реНрдпрд╛рдп рдЖрд╣реЗ. GitLab CI/CD рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ AWS_ACCESS_KEY_ID ╨╕ AWS_SECRET_ACCESS_KEY.

рд╣реЗ рд╕рд░реНрд╡ рдПрдХрддреНрд░ рдареЗрд╡рдгреЗ

рдПрдХрджрд╛ рдЖрдореНрд╣реА рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╢реЛрдзреВрди рдХрд╛рдврд▓реНрдпрд╛рдирдВрддрд░, рдЖрдореНрд╣реА рдкреНрд░рд╛рд░рдВрдн рдХрд░реВ рд╢рдХрддреЛ! рдЖрдордЪрд╛ рдлрд╛рдпрдирд▓ .gitlab-ci.yml рдЕрд╕реЗ рджрд┐рд╕рддреЗ:

waypoint:
  image: docker:latest
  stage: build
  services:
    - docker:dind
  # Define environment variables, e.g. `WAYPOINT_VERSION: '0.1.1'`
  variables:
    WAYPOINT_VERSION: ''
    WAYPOINT_SERVER_ADDR: ''
    WAYPOINT_SERVER_TOKEN: ''
    WAYPOINT_SERVER_TLS: '1'
    WAYPOINT_SERVER_TLS_SKIP_VERIFY: '1'
  script:
    - wget -q -O /tmp/waypoint.zip https://releases.hashicorp.com/waypoint/${WAYPOINT_VERSION}/waypoint_${WAYPOINT_VERSION}_linux_amd64.zip
    - unzip -d /usr/local/bin /tmp/waypoint.zip
    - rm -rf /tmp/waypoint*
    - waypoint init
    - waypoint build
    - waypoint deploy
    - waypoint release

рдЖрдкрдг рдкрд╛рд╣реВ рдХреА рдЖрдореНрд╣реА рдПрдХрд╛ рдкреНрд░рддрд┐рдореЗрдкрд╛рд╕реВрди рд╕реБрд░реБрд╡рд╛рдд рдХрд░рддреЛ docker:latest рдЖрдгрд┐ рд╡реЗрдкреЙрдИрдВрдЯрд╕рд╛рдареА рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реЗрд▓реЗ рдХрд╛рд╣реА рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рд╕реЗрдЯ рдХрд░рд╛. рдЕрдзреНрдпрд╛рдпрд╛рдд script рдЖрдореНрд╣реА рдирд╡реАрдирддрдо рд╡реЗрдкреЙрдЗрдВрдЯ рдПрдХреНрдЭрд┐рдХреНрдпреБрдЯреЗрдмрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЛ рдЖрдгрд┐ рддреНрдпрд╛рдд рдареЗрд╡рддреЛ /usr/local/bin. рдЖрдордЪрд╛ рдзрд╛рд╡рдкрдЯреВ рдЖрдзреАрдЪ AWS рдордзреНрдпреЗ рдЕрдзрд┐рдХреГрдд рдЕрд╕рд▓реНрдпрд╛рдиреЗ, рдЖрдореНрд╣реА рдлрдХреНрдд рдзрд╛рд╡рддреЛ waypoint init, build, deploy ╨╕ release.

рдмрд┐рд▓реНрдб рдЯрд╛рд╕реНрдХрдЪреЗ рдЖрдЙрдЯрдкреБрдЯ рдЖрдореНрд╣рд╛рд▓рд╛ рд╢реЗрд╡рдЯрдЪрд╛ рдмрд┐рдВрджреВ рджрд░реНрд╢рд╡реЗрд▓ рдЬрд┐рдереЗ рдЖрдореНрд╣реА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд░реЛрд▓ рдХреЗрд▓рд╛:

GitLab CI/CD рд╕рд╣ рд╕рд╣рдпреЛрдЧ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА HashiCorp Waypoint рдХрд╕реЗ рд╡рд╛рдкрд░рд╛рд╡реЗ

рд╡реЗрдкреЙрдЗрдВрдЯ рдПрдХ рдЕрд╕рдВрдЦреНрдп HashiCorp рдЙрдкрд╛рдп, рдЬреЗ GitLab рд╕рд╣ рдЙрддреНрддрдо рдХрд╛рдо рдХрд░рддрд╛рдд. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рддрд░реАрдд рдХрд░рдгреНрдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рдЖрдореНрд╣реА рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкрд╛рдпрд╛рднреВрдд рд╕реБрд╡рд┐рдзрд╛рдВрдЪреЗ рдЖрдпреЛрдЬрди рдХрд░реВ рд╢рдХрддреЛ GitLab рдордзреНрдпреЗ Terraform. SDLC рд╕реБрд░рдХреНрд╖рд┐рддрддрд╛ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА рджреЗрдЦреАрд▓ рд▓рд╛рдЧреВ рдХрд░реВ рд╢рдХрддреЛ рд╡реНрд╣реЙрд▓реНрдЯрд╕рд╣ GitLab рд╕реАрдЖрдп/рд╕реАрдбреА рдкрд╛рдЗрдкрд▓рд╛рдЗрдирдордзреАрд▓ рд░рд╣рд╕реНрдпреЗ рдЖрдгрд┐ рдЯреЛрдХрди рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рд╡рд┐рдХрд╛рд╕, рдЪрд╛рдЪрдгреА рдЖрдгрд┐ рдЙрддреНрдкрд╛рджрди рд╡рд╛рдкрд░рд╛рд╕рд╛рдареА рдЧреБрдкреНрдд рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдирд╛рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╡рд┐рдХрд╛рд╕рдХ рдЖрдгрд┐ рдкреНрд░рд╢рд╛рд╕рдХрд╛рдВрд╕рд╛рдареА рд╕рдВрдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рддреЗ.

HashiCorp рдЖрдгрд┐ GitLab рджреНрд╡рд╛рд░реЗ рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реЗрд▓реА рд╕рдВрдпреБрдХреНрдд рд╕рдорд╛рдзрд╛рдиреЗ рд╕рд╛рддрддреНрдпрдкреВрд░реНрдг рдкреБрд░рд╡рдард╛ рд╕рд╛рдЦрд│реА рдЖрдгрд┐ рдкрд╛рдпрд╛рднреВрдд рд╕реБрд╡рд┐рдзрд╛рдВрдЪреЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реВрди рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдгреНрдпрд╛рдЪрд╛ рд╕рд░реНрд╡реЛрддреНрддрдо рдорд╛рд░реНрдЧ рд╢реЛрдзрдгреНрдпрд╛рдд рдХрдВрдкрдиреНрдпрд╛рдВрдирд╛ рдорджрдд рдХрд░рддрд╛рдд. рд╡реЗрдкреЙрдИрдВрдЯрдиреЗ рдпреЛрдЧреНрдп рджрд┐рд╢реЗрдиреЗ рдЖрдгрдЦреА рдПрдХ рдкрд╛рдКрд▓ рдЯрд╛рдХрд▓реЗ рдЖрд╣реЗ рдЖрдгрд┐ рдЖрдореНрд╣реА рдкреНрд░рдХрд▓реНрдкрд╛рдЪреНрдпрд╛ рдкреБрдвреАрд▓ рд╡рд┐рдХрд╛рд╕рд╛рд╕рд╛рдареА рдЙрддреНрд╕реБрдХ рдЖрд╣реЛрдд. рддреБрдореНрд╣реА Waypoint рдмрджреНрджрд▓ рдЕрдзрд┐рдХ рдЬрд╛рдгреВрди рдШреЗрдК рд╢рдХрддрд╛ рдпреЗрдереЗрдПрдХреНрд╕рдкреНрд▓реЛрд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рд░рдЦреЗ рджреЗрдЦреАрд▓ рдЖрд╣реЗ рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг ╨╕ рд╡рд┐рдХрд╛рд╕ рдЖрд░рд╛рдЦрдбрд╛ рдкреНрд░рдХрд▓реНрдк рдЖрдореНрд╣реА рдЖрдордЪреЗ рдЬреНрдЮрд╛рди рдЬреЛрдбрд▓реЗ рдЖрд╣реЗ GitLab CICD рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг. рддреБрдореНрд╣рд╛рд▓рд╛ рддреЗ рд╕реНрд╡рддрдГ рд╡рд╛рдкрд░реВрди рдкрд╣рд╛рдпрдЪреЗ рдЕрд╕рд▓реНрдпрд╛рд╕, рддреБрдореНрд╣реА рдпреЗрдереЗ рдкреВрд░реНрдг рдХрд╛рд░реНрдпрд░рдд рдЙрджрд╛рд╣рд░рдг рдкрд╛рд╣реВ рд╢рдХрддрд╛ рд╣реЗ рднрд╛рдВрдбрд╛рд░.

рддреБрдореНрд╣реА CI/CD рдЪреА рддрддреНрддреНрд╡реЗ рд╕рдордЬреВрди рдШреЗрдК рд╢рдХрддрд╛, Gitlab CI рд╕реЛрдмрдд рдХрд╛рдо рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рд╕рд░реНрд╡ рдмрд╛рд░рдХрд╛рд╡реЗ рдкрд╛рд░ рдкрд╛рдбреВ рд╢рдХрддрд╛ рдЖрдгрд┐ рд╡реНрд╣рд┐рдбрд┐рдУ рдХреЛрд░реНрд╕ рдкреВрд░реНрдг рдХрд░реВрди рд╕рд░реНрд╡реЛрддреНрддрдо рдкрджреНрдзрддреА рд▓рд╛рдЧреВ рдХрд░реВ рд╢рдХрддрд╛. "рдЧрд┐рдЯрд▓реЕрдм рд╕реАрдЖрдпрдЪреНрдпрд╛ рдЙрджрд╛рд╣рд░рдгрд╛рд╡рд░ рд╕реАрдЖрдп/рд╕реАрдбреА". рдЖрддрд╛ рд╕рд╛рдореАрд▓ рд╡реНрд╣рд╛!

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛