GitLab CI/CD рдХреЗ рд╕рд╛рде рд╕рд╣рдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП HashiCorp Waypoint рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ

GitLab CI/CD рдХреЗ рд╕рд╛рде рд╕рд╣рдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП HashiCorp Waypoint рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ

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

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

рдЕрджреНрднреБрдд рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж рдкреНрд░рд▓реЗрдЦрди рдФрд░ рд╕рдмрд╕реЗ рдЖрд▓реАрд╢рд╛рди рдЙрджрд╛рд╣рд░рдг 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"
    }
  }
}

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

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

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

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

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

GitLab CI/CD рдореЗрдВ рдпрд╣ рд╕рдм рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╣рдореЗрдВ рдЕрдкрдиреА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП .gitlab-ci.yml:

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

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

AWS рдореЗрдВ GitLab CICD рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред рдкрд╣рд▓рд╛ рд╡рд┐рдХрд▓реНрдк рдмрд┐рд▓реНрдЯ-рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ рд╣рд╢реАрдХреЛрд░реНрдк рд╡реЙрд▓реНрдЯ. рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ рдпрджрд┐ рдЖрдкрдХреА рдЯреАрдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рд╡реЙрд▓реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдЬреЛ рддрдм рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рдЖрдкрдХреА рдЯреАрдо AWS IAM рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░ рд░рд╣реА рд╣реИ, рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рд╣реИ рдХрд┐ рдбрд┐рд▓реАрд╡рд░реА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ рдЧрд┐рдЯрд▓реИрдм рд░рдирд░, IAM рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХреГрддред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рд╡реЗрдкреНрд╡рд╛рдЗрдВрдЯ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЬрд▓реНрджреА рд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдЖрдЦрд┐рд░реА рд╡рд┐рдХрд▓реНрдк рд╣реИ - рдЕрдкрдиреА рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдПрдкреАрдЖрдИ рдФрд░ рдЧреБрдкреНрдд рдХреБрдВрдЬреА рдЬреЛрдбрд╝реЗрдВ 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 рдкрд░ рдЯреЗрд░рд╛рдлреЙрд░реНрдо. рдПрд╕рдбреАрдПрд▓рд╕реА рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рдорд╛рдирдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕реЗ рднреА рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд╡реЙрд▓реНрдЯ рдХреЗ рд╕рд╛рде GitLab рд╕реАрдЖрдИ/рд╕реАрдбреА рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рд░рд╣рд╕реНрдпреЛрдВ рдФрд░ рдЯреЛрдХрди рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП, рдЙрди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдФрд░ рдкреНрд░рд╢рд╛рд╕рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдордЧреНрд░ рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЬреЛ рд╡рд┐рдХрд╛рд╕, рдкрд░реАрдХреНрд╖рдг рдФрд░ рдЙрддреНрдкрд╛рджрди рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд░рд╣рд╕реНрдп рдкреНрд░рдмрдВрдзрди рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВред

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

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

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ