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

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

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

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд░реВрдкрдорд╛, HashiCorp рд▓реЗ рдЦреБрд▓рд╛ рд╕реНрд░реЛрддрдХреЛ рд░реВрдкрдорд╛ Waypoint рдЬрд╛рд░реА рдЧрд░реЗрдХреЛ рдЫ, рд░ рдпреЛ рдзреЗрд░реИ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВрдХреЛ рд╕рд╛рде рдЖрдЙрдБрдЫред рдЕрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрдЯрд░рдХреЛ рд╕реНрддрд░ рддрдкрд╛рдИрдВрдорд╛ рдирд┐рд░реНрднрд░ рдЫ, рд╡реЗрдкреЛрдЗрдиреНрдЯ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдпреЛрдЧреНрдпрдХреЛ рд░реВрдкрдорд╛ рдЖрдЙрдБрдЫ рдЬреБрди рддрдкрд╛рдИрдВ рдЖрдлреНрдиреЛ рд▓реНрдпрд╛рдкрдЯрдкрдорд╛ рд╡рд╛ рддрдкрд╛рдИрдВрдХреЛ рдЫрдиреМрдЯрдХреЛ CI/CD рдЕрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди рдЙрдкрдХрд░рдгрдмрд╛рдЯ рдЪрд▓рд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯ рд▓рдХреНрд╖реНрдп рдкрдирд┐ рддрдкрд╛рдИрдВрдорд╛ рдирд┐рд░реНрднрд░ рдЫ, рдХрд┐рдирдХрд┐ Waypoint рд▓реЗ Kubernetes, Docker, Google Cloud Run, AWS ECS, рд░ рдердкрд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫред

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

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

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

рддрдкрд╛рдИрдВрд▓реЗ рдпрд╛рдж рдЧрд░реНрдиреБрднрдПрдХреЛ рд╣реБрди рд╕рдХреНрдЫ, рдпрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛рдорд╛ тАЛтАЛрдХреБрдиреИ рдбрдХрд░рдлрд╛рдЗрд▓ рдЫреИрдиред рддрд┐рдиреАрд╣рд░реВ рдЙрджрд╛рд╣рд░рдгрдорд╛ рдердкрд┐рдПрдХрд╛ рдЫреИрдирдиреН рдХрд┐рдирднрдиреЗ рд╣рд╛рдореАрд▓рд╛рдИ рд╡рд╛рд╕реНрддрд╡рдорд╛ рддрд┐рдиреАрд╣рд░реВрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЫреИрди, рдХрд┐рдирднрдиреЗ 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 рджреНрд╡рд╛рд░рд╛ рдЖрдВрд╢рд┐рдХ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ Auto DevOps рд╕реНрд╡рдд: рдирд┐рд░реНрдорд╛рдг рдЪрд░рдгрдорд╛ред CNCF рдХреЛ CNB рд▓реЗ рдЙрджреНрдпреЛрдЧ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВ рдорд╛рдЭ рдмрдврд┐ рд░ рдЕрдзрд┐рдХ рдЧреНрд░рд╣рдг рдЧрд░рд┐рд░рд╣реЗрдХреЛ рджреЗрдЦреНрди рдкрд╛рдЙрдиреБ рд░рд╛рдореНрд░реЛ рдЫред

рдПрдХ рдкрдЯрдХ рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдг рднрдПрдкрдЫрд┐, Waypoint рд▓реЗ рдпрд╕рд▓рд╛рдИ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рд╣рд╛рдореНрд░реЛ AWS ECR рд░рдЬрд┐рд╕реНрдЯреНрд░реАрдорд╛ рдЕрдкрд▓реЛрдб рдЧрд░реНрдиреЗрдЫ рддрд╛рдХрд┐ рдпреЛ рдкрдард╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рддрдпрд╛рд░ рдЫред рд╡рд┐рдзрд╛рдирд╕рднрд╛рдХреЛ рдЕрдиреНрддреНрдпрдорд╛, рд╡рд┐рддрд░рдг рдЪрд░рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ AWS ECS рдПрдб-рдЕрди рд╣рд╛рдореНрд░реЛ AWS рдЦрд╛рддрд╛рдорд╛ рд╣рд╛рдореНрд░реЛ рдЖрд╡реЗрджрди рддреИрдирд╛рде рдЧрд░реНрдиред

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

рдПрдирдмреА рдпрджрд┐ рддрдкрд╛рдЗрдБ рднрд░реНрдЦрд░ CI / CD рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрдиреЗ рдпреЛрдЬрдирд╛ рдмрдирд╛рдЙрдБрджреИ рд╣реБрдиреБрд╣реБрдиреНрдЫ рд╡рд╛ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдирд┐рд░реНрдорд╛рдгрдХреЛ рд▓рд╛рдЧрд┐ рдЙрддреНрддрдо рдЕрднреНрдпрд╛рд╕рд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░реНрди рд╕реБрд░реБ рдЧрд░реНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рдирдпрд╛рдБ Slurm рдкрд╛рдареНрдпрдХреНрд░рдордорд╛ рдзреНрдпрд╛рди рджрд┐рдиреБрд╣реЛрд╕реНред Gitlab CI рдХреЛ рдЙрджрд╛рд╣рд░рдгрдорд╛ CI/CDред рдпреЛ рдЕрдм рдкреНрд░рд┐-рдЕрд░реНрдбрд░ рдореВрд▓реНрдпрдХреЛ рд▓рд╛рдЧрд┐ рдЙрдкрд▓рдмреНрдз рдЫред

GitLab CI/CD рдорд╛ рд╡реЗрдкреЛрдЗрдиреНрдЯ

рдпреА рд╕рдмреИ GitLab CI/CD рдорд╛ рдЕрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрдЯ рдЧрд░реНрди, рд╣рд╛рдореАрд▓рд╛рдИ рд╣рд╛рдореНрд░реЛ рдлрд╛рдЗрд▓рдорд╛ рдХреЗ рдЪрд╛рд╣рд┐рдиреНрдЫ рд╣реЗрд░реМрдВред .gitlab-ci.yml:

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

рдорд╛рдерд┐ рд╣рд╛рдореНрд░реЛ рдкрд╛рдЗрдкрд▓рд╛рдЗрдирд▓реЗ рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд╣рд░реВ рдЪрд▓рд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдиреЗ рд╕рдмреИ рдХреБрд░рд╛рд╣рд░реВ рдЫрдиреН, рддрд░ AWS рдорд╛ рдбрд┐рдкреНрд▓реЛрдп рдЧрд░реНрди, рд╣рд╛рдореАрд▓рд╛рдИ рдЕрд░реНрдХреЛ рдХреБрд░рд╛ рдЪрд╛рд╣рд┐рдиреНрдЫ: рд╣рд╛рдореАрд▓реЗ рд╣рд╛рдореНрд░реЛ AWS рдЦрд╛рддрд╛рдорд╛ рд▓рдЧ рдЗрди рдЧрд░реНрдиреБрдкрд░реНрдЫред рд╡реЗрдкреЛрдЗрдиреНрдЯ рд╡рд┐рд╡рд░рдгрдорд╛ рдпреЛрдЬрдирд╛рд╣рд░реВ рдЫрдиреН рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдмрд╛рд░реЗред HashiCorp рд▓реЗ рдпрд╕ рд╣рдкреНрддрд╛ рдПрдХ рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЬрд╛рд░реА рдЧрд░реНрдпреЛ рд╕реАрдорд╛ред рддрд░ рдЕрд╣рд┐рд▓реЗрдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореА рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдЖрдлреИрд▓рд╛рдИ рд▓рд┐рди рд░ рд╣реНрдпрд╛рдиреНрдбрд▓ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред

AWS рдорд╛ GitLab CICD рдкреНрд░рдорд╛рдгреАрдХрд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ рдзреЗрд░реИ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдЫрдиреНред рдкрд╣рд┐рд▓реЛ рд╡рд┐рдХрд▓реНрдк рдмрд┐рд▓реНрдЯ-рдЗрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╣реЛ HashiCorp рднреЛрд▓реНрдЯред рдпрджрд┐ рддрдкрд╛рдЗрдБрдХреЛ рдЯреЛрд▓реАрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рдкреНрд░рдорд╛рдг рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдирдХреЛ рд▓рд╛рдЧрд┐ 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 рд░ Waypoint рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рдХреЗрд╣рд┐ рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдЕрдзреНрдпрд╛рдпрдорд╛ script рд╣рд╛рдореА рдирд╡реАрдирддрдо рд╡реЗрдкреЛрдЗрдиреНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдпреЛрдЧреНрдп рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрдЫреМрдВ рд░ рдпрд╕рд▓рд╛рдИ рд░рд╛рдЦреНрдЫреМрдВ /usr/local/binред рд╣рд╛рдореНрд░реЛ рдзрд╛рд╡рдХ рдкрд╣рд┐рд▓реЗ рдиреИ AWS рдорд╛ рдЕрдзрд┐рдХреГрдд рднрдПрдХреЛ рд╣реБрдирд╛рд▓реЗ, рд╣рд╛рдореА рдХреЗрд╡рд▓ рджреМрдбрдиреНрдЫреМрдВ waypoint init, build, deploy ╨╕ release.

рдирд┐рд░реНрдорд╛рдг рдХрд╛рд░реНрдпрдХреЛ рдЖрдЙрдЯрдкреБрдЯрд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ рдЕрдиреНрддрд┐рдо рдмрд┐рдиреНрджреБ рджреЗрдЦрд╛рдЙрдиреЗрдЫ рдЬрд╣рд╛рдБ рд╣рд╛рдореАрд▓реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд░реЛрд▓ рдЧрд░реНрдпреМрдВ:

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

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

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

рддрдкрд╛рдИрдВ CI / CD рдХреЛ рд╕рд┐рджреНрдзрд╛рдиреНрддрд╣рд░реВ рдмреБрдЭреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, Gitlab CI рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреЗ рд╕рдмреИ рд╕реВрдХреНрд╖реНрдорддрд╛рд╣рд░реВ рдорд╛рд╕реНрдЯрд░ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд░ рднрд┐рдбрд┐рдпреЛ рдХреЛрд░реНрд╕ рдкреВрд░рд╛ рдЧрд░реЗрд░ рдЙрддреНрдХреГрд╖реНрдЯ рдЕрднреНрдпрд╛рд╕рд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░реНрди рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реЛрд╕реНред Gitlab CI рдХреЛ рдЙрджрд╛рд╣рд░рдгрдорд╛ CI/CDред рдЕрд╣рд┐рд▓реЗ рд╕рд╛рдореЗрд▓ рд╣реБрдиреБрд╣реЛрд╕!

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди