GitLab CI/CD เชธเชพเชฅเซ‡ เชธเชนเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ HashiCorp Waypoint เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเชตเซ‹

GitLab CI/CD เชธเชพเชฅเซ‡ เชธเชนเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ HashiCorp Waypoint เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเชตเซ‹

HashiCorp เชเช• เชจเชตเซ‹ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชฌเชคเชพเชตเซเชฏเซ‹ เชตเซ‡ เชชเซ‹เช‡เชจเซเชŸ เชชเชฐ เชนเชพเชถเซ€เช•เซ‹เชฐเซเชช เชกเชฟเชœเชฟเชŸเชฒ. เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชฅเซ€ เชฒเชˆเชจเซ‡ AWS เชธเซเชงเซ€เชจเชพ Google เช•เซเชฒเชพเช‰เชก เชฐเชจ เชธเซเชงเซ€เชจเชพ เชตเชฟเชตเชฟเชง เช•เซเชฒเชพเช‰เชก เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎเซเชธ เชฎเชพเชŸเซ‡ เชฌเชฟเชฒเซเชก, เชกเชฟเชฒเชฟเชตเชฐเซ€ เช…เชจเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเชพ เชฐเชฟเชฒเซ€เชเชจเซเช‚ เชตเชฐเซเชฃเชจ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชคเซ‡ HCL-เช†เชงเชพเชฐเชฟเชค เชซเชพเช‡เชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡. เชคเชฎเซ‡ เชตเซ‡เชชเซ‹เช‡เชจเซเชŸเชจเซ‡ เชŸเซ‡เชฐเชพเชซเซ‹เชฐเซเชฎ เช…เชจเซ‡ เชตเซ‡เช—เซเชฐเชพเชจเซเชŸ เชคเชฐเซ€เช•เซ‡ เชตเชฟเชšเชพเชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เชœเซ‡ เชคเชฎเชพเชฐเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฌเชจเชพเชตเชตเชพ, เชถเชฟเชชเชฟเช‚เช— เช…เชจเซ‡ เชฐเชฟเชฒเซ€เช เช•เชฐเชตเชพเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซเช‚ เชตเชฐเซเชฃเชจ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเช‚เชฏเซเช•เซเชค เช›เซ‡.

เชธเชพเชšเชพ เชธเซเชตเชฐเซ‚เชชเซ‡, HashiCorp เช เช“เชชเชจ เชธเซ‹เชฐเซเชธ เชคเชฐเซ€เช•เซ‡ เชตเซ‡เชชเซ‹เช‡เชจเซเชŸ เชฌเชนเชพเชฐ เชชเชพเชกเซเชฏเซเช‚ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡ เช˜เชฃเชพ เช‰เชฆเชพเชนเชฐเชฃเซ‹ เชธเชพเชฅเซ‡ เช†เชตเซ‡ เช›เซ‡. เช“เชฐเซเช•เซ‡เชธเซเชŸเซเชฐเซ‡เชŸเชฐ เชฒเซ‡เชฏเชฐ เชคเชฎเชพเชฐเชพ เชชเชฐ เช›เซ‡, เชตเซ‡เชชเซ‹เชˆเชจเซเชŸ เชเช•เซเชเชฟเช•เซเชฏเซเชŸเซ‡เชฌเชฒ เชคเชฐเซ€เช•เซ‡ เช†เชตเซ‡ เช›เซ‡ เชœเซ‡เชจเซ‡ เชคเชฎเซ‡ เชธเซ€เชงเชพ เชคเชฎเชพเชฐเชพ เชฒเซ‡เชชเชŸเซ‹เชช เชชเชฐ เช…เชฅเชตเชพ เชคเชฎเชพเชฐเชพ เชชเชธเช‚เชฆเช—เซ€เชจเชพ CI/CD เช“เชฐเซเช•เซ‡เชธเซเชŸเซเชฐเซ‡เชถเชจ เชŸเซ‚เชฒ เชชเชฐเชฅเซ€ เชšเชฒเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹. เชคเชฎเชพเชฐเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซ‹ เชœเชฎเชพเชตเชตเชพเชจเซเช‚ เชฒเช•เซเชทเซเชฏ เชชเชฃ เชคเชฎเชพเชฐเชพ เชชเชฐ เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เชตเซ‡เชชเซ‹เช‡เชจเซเชŸ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ, เชกเซ‹เช•เชฐ, เช—เซ‚เช—เชฒ เช•เซเชฒเชพเช‰เชก เชฐเชจ, 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"
    }
  }
}

เชฌเชฟเชฒเซเชก เชคเชฌเช•เซเช•เชพ เชฆเชฐเชฎเชฟเชฏเชพเชจ, เชตเซ‡เชชเซ‹เชˆเชจเซเชŸ เช•เซเชฒเชพเช‰เชก เชจเซ‡เชŸเชฟเชต เชฌเชฟเชฒเซเชกเชชเซ‡เช•เซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡ (เชธเซ€เชเชจเชฌเซ€) เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเซ€ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฟเช‚เช— เชญเชพเชทเชพ เชจเช•เซเช•เซ€ เช•เชฐเชตเชพ เช…เชจเซ‡ เชกเซ‹เช•เชฐเชซเชพเช‡เชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเชฏเชพ เชตเชฟเชจเชพ เชกเซ‹เช•เชฐ เช‡เชฎเซ‡เชœ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡. เชธเซˆเชฆเซเชงเชพเช‚เชคเชฟเช• เชฐเซ€เชคเซ‡, เช† เชคเซ‡ เชœ เชคเช•เชจเซ€เช• เช›เซ‡ เชœเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช—เชฟเชŸเชฒเซ‡เชฌ เชญเชพเช—เชฎเชพเช‚ เช•เชฐเซ‡ เช›เซ‡ เช“เชŸเซ‹ DevOps เช“เชŸเซ‹ เชฌเชฟเชฒเซเชก เชธเซเชŸเซ‡เชช เชชเชฐ. เชคเซ‡ เชœเซ‹เชตเชพเชจเซเช‚ เชธเชพเชฐเซเช‚ เช›เซ‡ เช•เซ‡ CNCFเชจเซเช‚ CNB เช‰เชฆเซเชฏเซ‹เช—เชจเชพ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชฎเชพเช‚ เชตเชงเซ เช…เชชเชจเชพเชตเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡.

เชเช•เชตเชพเชฐ เช‡เชฎเซ‡เชœ เชฌเชจเซ€ เชœเชพเชฏ เชชเช›เซ€, เชตเซ‡เชชเซ‹เช‡เชจเซเชŸ เชคเซ‡เชจเซ‡ เช†เชชเชฎเซ‡เชณเซ‡ เช…เชฎเชพเชฐเซ€ AWS ECR เชฐเชœเชฟเชธเซเชŸเซเชฐเซ€ เชชเชฐ เช…เชชเชฒเซ‹เชก เช•เชฐเชถเซ‡ เชœเซ‡เชฅเซ€ เชคเซ‡ เชกเชฟเชฒเชฟเชตเชฐเซ€ เชฎเชพเชŸเซ‡ เชคเซˆเชฏเชพเชฐ เชนเซ‹เชฏ. เชเช•เชตเชพเชฐ เชฌเชฟเชฒเซเชก เชชเซ‚เชฐเซเชฃ เชฅเชˆ เชœเชพเชฏ, เชกเชฟเชฒเชฟเชตเชฐเซ€ เชชเช—เชฒเซเช‚ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡ AWS ECS เชเชก-เช“เชจ เช…เชฎเชพเชฐเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ เช…เชฎเชพเชฐเชพ AWS เชเช•เชพเช‰เชจเซเชŸเชฎเชพเช‚ เชœเชฎเชพ เช•เชฐเชพเชตเชตเชพ เชฎเชพเชŸเซ‡.

เชฎเชพเชฐเชพ เชฒเซ‡เชชเชŸเซ‹เชชเชฅเซ€ - เชฌเชงเซเช‚ เชธเชฐเชณ เช›เซ‡. เชฎเซ‡เช‚ เชเช• เชตเซ‡เชชเซ‹เช‡เชจเซเชŸ เชฎเซ‚เช•เซเชฏเซ‹ เช›เซ‡ เชœเซ‡ เชฎเชพเชฐเชพ AWS เชเช•เชพเช‰เชจเซเชŸเชฎเชพเช‚ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชชเซเชฐเชฎเชพเชฃเชฟเชค เช›เซ‡ เช…เชจเซ‡ เชคเซ‡ "เชซเช•เซเชค เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡". เชชเชฐเช‚เชคเซ เชœเซ‹ เชฎเชพเชฐเซ‡ เชฎเชพเชฐเชพ เชฒเซ‡เชชเชŸเซ‹เชชเชฅเซ€ เช†เช—เชณ เชตเชงเชตเซเช‚ เชนเซ‹เชฏ เชคเซ‹ เชถเซเช‚ เชฅเชพเชฏ? เช…เชฅเชตเชพ เชถเซเช‚ เชนเซเช‚ เช…เชšเชพเชจเช• เชฎเชพเชฐเซ€ เชเช•เช‚เชฆเชฐ CI/CD เชชเชพเช‡เชชเชฒเชพเช‡เชจเชจเชพ เชญเชพเช— เชฐเซ‚เชชเซ‡ เช† เชœเชฎเชพเชตเชŸเชจเซ‡ เชธเซเชตเชšเชพเชฒเชฟเชค เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚, เชœเซเชฏเชพเช‚ เชฎเชพเชฐเชพ เชšเชพเชฒเซ เชเช•เซ€เช•เชฐเชฃ เชชเชฐเซ€เช•เซเชทเชฃเซ‹, เชธเซเชฐเช•เซเชทเชพ เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เช…เชจเซ‡ เช…เชจเซเชฏ เชšเชฒเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡? เช† เชตเชพเชฐเซเชคเชพเชจเซ‹ เชคเซ‡ เชญเชพเช— เช›เซ‡ เชœเซเชฏเชพเช‚ GitLab CI/CD เช†เชตเซ‡ เช›เซ‡!

เชจเซ‹ เชœเซ‹ เชคเชฎเซ‡ เชฎเชพเชคเซเชฐ CI/CD เชจเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพเชจเซ€ เชฏเซ‹เชœเชจเชพ เชฌเชจเชพเชตเซ€ เชฐเชนเซเชฏเชพ เช›เซ‹ เช…เชฅเชตเชพ เชชเชพเช‡เชชเชฒเชพเช‡เชจ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชถเซเชฐเซ‡เชทเซเช  เชชเซเชฐเซ‡เช•เซเชŸเชฟเชธ เชฒเชพเช—เซ เช•เชฐเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ‹ เช›เซ‹, เชคเซ‹ เชธเซเชฒเชฐเซเชฎเชจเชพ เชจเชตเชพ เช…เชญเซเชฏเชพเชธเช•เซเชฐเชฎ เชชเชฐ เชงเซเชฏเชพเชจ เช†เชชเซ‹. "เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡ Gitlab CI เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ CI/CD". เชคเซ‡ เชนเชตเซ‡ เชชเซเชฐเซ€-เช“เชฐเซเชกเชฐ เช•เชฟเช‚เชฎเชคเซ‡ เช‰เชชเชฒเชฌเซเชง เช›เซ‡.

GitLab CI/CD เชฎเชพเช‚ เชตเซ‡เชชเซ‹เช‡เชจเซเชŸ

เช† เชฌเชงเซเช‚ GitLab CI/CD เชฎเชพเช‚ เช—เซ‹เช เชตเชตเชพ เชฎเชพเชŸเซ‡, เชšเชพเชฒเซ‹ เชœเซ‹เชˆเช เช•เซ‡ เช†เชชเชฃเซ€ เชซเชพเชˆเชฒเชฎเชพเช‚ เชถเซเช‚ เชœเซ‹เชˆเช เช›เซ‡ .gitlab-ci.yml:

  • เชธเซŒ เชชเซเชฐเชฅเชฎ, เชคเชฎเชพเชฐเซ‡ เชคเซ‡เชจเซ€ เช…เช‚เชฆเชฐ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชฌเซ‡เช เช‡เชฎเซ‡เชœเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชตเซ‡เชชเซ‹เชˆเชจเซเชŸ เช•เซ‹เชˆเชชเชฃ เชฒเชฟเชจเช•เซเชธ เชตเชฟเชคเชฐเชฃ เชชเชฐ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡, เชคเซ‡เชจเซ‡ เชฎเชพเชคเซเชฐ เชกเซ‹เช•เชฐเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เชคเซ‡เชฅเซ€ เช…เชฎเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชกเซ‹เช•เชฐ เชˆเชฎเซ‡เชœ เชธเชพเชฅเซ‡ เชšเชพเชฒเซ€ เชถเช•เซ€เช เช›เซ€เช.
  • เช†เช—เชณ เชคเชฎเชพเชฐเซ‡ เช† เช›เชฌเซ€เชฎเชพเช‚ เชตเซ‡เชชเซ‹เช‡เชจเซเชŸ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชญเชตเชฟเชทเซเชฏเชฎเชพเช‚ เช…เชฎเซ‡ เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช เช‡เชฎเซ‡เชœ เชฎเซ‡เชŸเชพ เชฌเชฟเชฒเซเชก เช…เชจเซ‡ เช† เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เชคเชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐเชพเช‡เช เช•เชฐเซ‹.
  • เช›เซ‡เชฒเซเชฒเซ‡ เช†เชชเชฃเซ‡ เชตเซ‡เชชเซ‹เชˆเชจเซเชŸ เช†เชฆเซ‡เชถเซ‹ เชšเชฒเชพเชตเซ€เชถเซเช‚

เช‰เชชเชฐเซ‹เช•เซเชค เชฆเชฐเซ‡เช• เชตเชธเซเชคเซเชจเซ€ เชฐเซ‚เชชเชฐเซ‡เช–เชพ เช†เชชเซ‡ เช›เซ‡ เชœเซ‡ เชกเชฟเชชเซเชฒเซ‹เชฏเชฎเซ‡เชจเซเชŸ เชชเซ‚เชฐเซเชฃ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เชธเซเช•เซเชฐเชฟเชชเซเชŸเซ‹ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เช…เชฎเชพเชฐเซ€ เชชเชพเช‡เชชเชฒเชพเช‡เชจเชจเซ‡ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡, เชชเชฐเช‚เชคเซ AWS เชชเชฐ เชœเชฎเชพเชตเชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช…เชฎเชจเซ‡ เชตเชงเซ เชเช• เชตเชธเซเชคเซเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡: เช…เชฎเชพเชฐเซ‡ เช…เชฎเชพเชฐเชพ AWS เชเช•เชพเช‰เชจเซเชŸเชฎเชพเช‚ เชฒเซ‰เช— เช‡เชจ เช•เชฐเชตเซเช‚ เช†เชตเชถเซเชฏเช• เช›เซ‡. เชตเซ‡เชชเซ‹เช‡เชจเซเชŸ เชตเชฐเซเชฃเชจเชฎเชพเช‚ เชฏเซ‹เชœเชจเชพเช“ เช›เซ‡ เชชเซเชฐเชฎเชพเชฃเซ€เช•เชฐเชฃ เช…เชจเซ‡ เช…เชงเชฟเช•เซƒเชคเชคเชพ เชตเชฟเชถเซ‡. HashiCorp เชชเชฃ เช† เช…เช เชตเชพเชกเชฟเชฏเซ‡ เชเช• เชชเซเชฐเชญเชพเชตเชถเชพเชณเซ€ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชฌเชนเชพเชฐ เชชเชพเชกเซเชฏเซ‹ เชธเซ€เชฎเชพ. เชชเชฐเช‚เชคเซ เชนเชฎเชฃเชพเช‚ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชซเช•เซเชค เชชเซเชฐเชฎเชพเชฃเซ€เช•เชฐเชฃ เช…เชจเซ‡ เช…เชงเชฟเช•เซƒเชคเชคเชพ เชœเชพเชคเซ‡ เชœ เชนเซ‡เชจเซเชกเชฒ เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช.

AWS เชฎเชพเช‚ GitLab CICD เชชเซเชฐเชฎเชพเชฃเซ€เช•เชฐเชฃ เชฎเชพเชŸเซ‡ เช˜เชฃเชพ เชตเชฟเช•เชฒเซเชชเซ‹ เช›เซ‡. เชชเซเชฐเชฅเชฎ เชตเชฟเช•เชฒเซเชช เชฌเชฟเชฒเซเชŸ-เช‡เชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ‹ เช›เซ‡ เชนเชพเชถเซ€เช•เซ‹เชฐเซเชช เชตaultเชฒเซเชŸ. เชœเซ‹ เชคเชฎเชพเชฐเซ€ เชŸเซ€เชฎ เช“เชณเช–เชชเชคเซเชฐ เชตเซเชฏเชตเชธเซเชฅเชพเชชเชจ เชฎเชพเชŸเซ‡ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ Vault เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเซ€ เชนเซ‹เชฏ เชคเซ‹ เช† เชธเชฐเชธ เช›เซ‡. เชœเซ‹ เชคเชฎเชพเชฐเซ€ เชŸเซ€เชฎ AWS IAM เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช…เชงเชฟเช•เซƒเชคเชคเชพเชจเซเช‚ เชธเช‚เชšเชพเชฒเชจ เช•เชฐเชคเซ€ เชนเซ‹เชฏ เชคเซ‹ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡ เชฌเซ€เชœเซ‹ เชตเชฟเช•เชฒเซเชช เช เช›เซ‡ เช•เซ‡ เชกเชฟเชฒเชฟเชตเชฐเซ€ เช•เชพเชฐเซเชฏเซ‹ เชŸเซเชฐเชฟเช—เชฐ เชฅเชฏเชพ เช›เซ‡ เช•เซ‡ เชจเชนเซ€เช‚ GitLab เชฐเชจเชฐ, 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 เชชเชฐ เชŸเซ‡เชฐเชพเชซเซ‹เชฐเซเชฎ. SDLC เชธเซเชฐเช•เซเชทเชพเชจเซ‡ เชชเซเชฐเชฎเชพเชฃเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เช…เชฎเชฒ เชชเชฃ เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช เชตเซ‰เชฒเซเชŸ เชธเชพเชฅเซ‡ เช—เชฟเชŸเชฒเซ‡เชฌ CI/CD เชชเชพเช‡เชชเชฒเชพเช‡เชจเซเชธเชฎเชพเช‚ เชฐเชนเชธเซเชฏเซ‹ เช…เชจเซ‡ เชŸเซ‹เช•เชจเซเชธเชจเซเช‚ เชธเช‚เชšเชพเชฒเชจ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“ เช…เชจเซ‡ เชตเชนเซ€เชตเชŸเช•เชฐเซเชคเชพเช“ เชฎเชพเชŸเซ‡ เชเช• เชธเชฐเซเชตเช—เซเชฐเชพเชนเซ€ เช‰เช•เซ‡เชฒ เชชเซ‚เชฐเซ‹ เชชเชพเชกเซ‡ เช›เซ‡ เชœเซ‡ เชตเชฟเช•เชพเชธ, เชชเชฐเซ€เช•เซเชทเชฃ เช…เชจเซ‡ เช‰เชคเซเชชเชพเชฆเชจ เช‰เชชเชฏเซ‹เช— เชฎเชพเชŸเซ‡ เชฐเชนเชธเซเชฏเซ‹เชจเชพ เชธเช‚เชšเชพเชฒเชจ เชชเชฐ เช†เชงเชพเชฐ เชฐเชพเช–เซ‡ เช›เซ‡.

HashiCorp เช…เชจเซ‡ GitLab เชฆเซเชตเชพเชฐเชพ เชตเชฟเช•เชธเชฟเชค เชธเช‚เชฏเซเช•เซเชค เชธเซ‹เชฒเซเชฏเซเชถเชจเซเชธ เช•เช‚เชชเชจเซ€เช“เชจเซ‡ เชกเชฟเชฒเชฟเชตเชฐเซ€ เชชเชพเชˆเชชเชฒเชพเชˆเชจ เช…เชจเซ‡ เชˆเชจเซเชซเซเชฐเชพเชธเซเชŸเซเชฐเช•เซเชšเชฐเชจเซเช‚ เชธเชพเชคเชคเซเชฏเชชเซ‚เชฐเซเชฃ เชธเช‚เชšเชพเชฒเชจ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ€เชจเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชตเชฟเช•เชธเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชตเชงเซ เชธเชพเชฐเซ€ เชฐเซ€เชค เชถเซ‹เชงเชตเชพเชฎเชพเช‚ เชฎเชฆเชฆ เช•เชฐเซ‡ เช›เซ‡. เชตเซ‡เชชเซ‹เชˆเชจเซเชŸเซ‡ เชฏเซ‹เช—เซเชฏ เชฆเชฟเชถเชพเชฎเชพเช‚ เชฌเซ€เชœเซเช‚ เชชเช—เชฒเซเช‚ เชญเชฐเซเชฏเซเช‚ เช›เซ‡ เช…เชจเซ‡ เช…เชฎเซ‡ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเชพ เชธเชคเชค เชตเชฟเช•เชพเชธเชจเซ€ เชฐเชพเชน เชœเซ‹เชˆ เชฐเชนเซเชฏเชพ เช›เซ€เช. เชคเชฎเซ‡ Waypoint เชตเชฟเชถเซ‡ เชตเชงเซ เชœเชพเชฃเซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชนเซ€เช‚, เชชเชฃ เช…เชจเซเชตเซ‡เชทเชฃ เช•เชฐเชตเชพ เชฏเซ‹เช—เซเชฏ เช›เซ‡ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃ ะธ เชตเชฟเช•เชพเชธ เชฏเซ‹เชœเชจเชพ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เช…เชฎเซ‡ เชœเซ‡ เชœเซเชžเชพเชจ เชฎเซ‡เชณเชตเซเชฏเซเช‚ เช›เซ‡ เชคเซ‡ เช‰เชฎเซ‡เชฐเซเชฏเซเช‚ เช›เซ‡ GitLab CICD เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃ. เชœเซ‹ เชคเชฎเซ‡ เชฌเชงเซเช‚ เชœเชพเชคเซ‡ เช…เชœเชฎเชพเชตเชตเชพ เชฎเชพเช‚เช—เชคเชพ เชนเซ‹, เชคเซ‹ เชคเชฎเซ‡ เชเช• เชธเช‚เชชเซ‚เชฐเซเชฃ เช•เชพเชฐเซเชฏเช•เชพเชฐเซ€ เช‰เชฆเชพเชนเชฐเชฃ เชฒเชˆ เชถเช•เซ‹ เช›เซ‹ เช† เชญเช‚เชกเชพเชฐ.

เชคเชฎเซ‡ CI/CD เชจเชพ เชธเชฟเชฆเซเชงเชพเช‚เชคเซ‹เชจเซ‡ เชธเชฎเชœเซ€ เชถเช•เซ‹ เช›เซ‹, Gitlab CI เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพเชจเซ€ เชคเชฎเชพเชฎ เชœเชŸเชฟเชฒเชคเชพเช“เชจเซ‡ เชฎเชพเชธเซเชŸเชฐ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชจเซ‡ เชตเซ€เชกเชฟเชฏเซ‹ เช•เซ‹เชฐเซเชธ เชฒเชˆเชจเซ‡ เชถเซเชฐเซ‡เชทเซเช  เชชเซเชฐเซ‡เช•เซเชŸเชฟเชธ เชฒเชพเช—เซ เช•เชฐเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹. "เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡ Gitlab CI เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ CI/CD". เช…เชฎเชพเชฐเซ€ เชธเชพเชฅ เชœเซ‹เชกเชพเช“!

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹