HashiCorp ืืึธื ืืขืืืืื ืึท ื ืืึทืข ืคึผืจืืืขืงื
ืืืช ืฆื ืคืึธืจืขื, HashiCorp ืืื ืืืคืจืืื Waypoint ืืื ืึธืคึฟื ืืงืืจ ืืื ืงืืื ืืื ืคืืืข ืืืืฉืคืืื. ืื ืึธืจืงืขืกืืจืึทืืึธืจ ืฉืืืืข ืืื ืึทืจืืืฃ ืฆื ืืืจ, Waypoint ืงืืื ืืื ืึท ืขืงืกืขืงืืืึทืืืข ืึทื ืืืจ ืงืขื ืขื ืืืืคื ืืืืึทื ืืืืฃ ืืืื ืืึทืคึผืืึทืคึผ ืึธืืขืจ ืคึฟืื ืืืื ืกื / ืงืึธืืคึผืึทืงืืืืกืง ืึธืจืงืขืกืืจืึทืืืึธื ืืขืฆืืึทื ืคืื ืืจืืจื. ืืขืจ ืฆืื ืคึฟืึทืจ ืืืคึผืืืืื ื ืืืื ืึทืคึผืืึทืงืืืฉืึทื ื ืืื ืืืื ืฆื ืืืจ, ืืืืึทื Waypoint ืฉืืืฆื Kubernetes, Docker, Google Cloud Run, AWS ECS ืืื ืืขืจ.
ื ืึธื ืืืืขื ืขื ืื ืึธืกืึทื
ื ืึธื ืงืืึธืื ืื ื ืื ืจืืคึผืึทืืึทืืึธืจื, ืืึธืื ืืื ืื ืงืืง ืืื ืื ืกืืจืืงืืืจ ืคืื ืื ืึทืคึผืืึทืงืืืฉืึทื ืืื ืืืื ืืืึทื:
ืืื ืืืจ ืงืขื ืืึธืื ืืืืขืจืงื, ืืขื ืคึผืจืืืขืงื ืืื ื ืืฉื ืึท Dockerfile. ืืื ืืขื ืขื ื ืืฉื ืฆืืืขืืขืื ืืื ืืขื ืืืึทืฉืคึผืื, ืืืืึทื ืืื ืคึผืจืื ืฆืืคึผ ืืืจ ืืึธื ื ืื ืืึทืจืคึฟื ืืื, ืืืืึทื 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"
}
}
}
ืืขืฉืึทืก ืื ืืืืขื ืคืึทืกืข, Waypoint ื ืืฆื Cloud Native Buildpacks (
ืึทืืึธื ืื ืืืื ืืื ืืขืืืื, Waypoint ืืืขื ืืืืืึธืืึทืืืฉ ืืคึผืืึธืึทื ืขืก ืฆื ืืื ืืืขืจ AWS ECR ืจืขืืืกืืจื ืึทืืื ืขืก ืืื ืืจืืื ืคึฟืึทืจ ืขืงืกืคึผืจืขืก. ืึทืืึธื ืื ืืืืขื ืืื ืืึทื ืฅ, ืื ืขืงืกืคึผืจืขืก ืฉืจืื ื ืืฆื
ืคึฟืื ืืืื ืืึทืคึผืืึทืคึผ - ืึทืืฅ ืืื ืคึผืฉืื. ืืื ืฉืืขืื ืึท ืืืืึทืคึผืึธืื ื ืืืึธืก ืืื ืฉืืื ืึธืืขื ืืึทืงืืืืึทื ืืื ืืืื AWS ืืฉืืื ืืื ืขืก "ื ืึธืจ ืึทืจืืขื". ืึธืืขืจ ืืืึธืก ืืึทืคึผืึทื ื ืืืื ืืื ืืืืื ืฆื ืืืื ืืืืึทืืขืจ ืคืื ืืืื ืืึทืคึผืืึทืคึผ? ืึธืืขืจ ืืึธื ืืื ืคึผืืืฆืืื ื ืึธืืึทืืืื ืืขื ืืืคึผืืืืืึทื ื ืืื ืึท ืืืื ืคืื ืืืื ืงืืืืขืืืืง ืกื / ืงืึธืืคึผืึทืงืืืืกืง ืจืขืจื - ืืื ืืข, ืืื ืืืื ืึธื ืืึธืื ื ืื ืืึทืืจืืืฉืึทื ืืขืกืฅ, ืืืืขืจืืืื ืืขืกืฅ ืืื ืื ืืขืจืข ืืขื ืขื ืืืืคื? ืืึธืก ืืื ืืขืจ ืืืื ืคืื ืืขืจ ืืขืฉืืืืข ืืื GitLab CI / CD ืงืืื ืืื!
ื ื ืืืื ืืืจ ืืขื ื ืคึผืื ืงื ืคึผืืึทื ืืจืื ื ืฆื ืื ืกืืจืืืขื ื ืกื / ืกื ืึธืืขืจ ืืืจ ืืืืื ืฆื ืึธื ืืืืื ืึทืคึผืืืืื ื ืืขืกืืขืจ ืคึผืจืึทืงืืืกืื ืคึฟืึทืจ ืื ืื ืคึผืืืคึผืืืื ื, ืืึทืฆืึธืื ืืคืืขืจืงืืึทืืงืืื ืฆื ืื ื ืืึทืข ืงืืจืก ืคืื Slurm
"CI / CD ื ืืฆื Gitlab CI ืืื ืึท ืืืึทืฉืคึผืื" . ืขืก ืืื ืืืฆื ืื ืืืฆื ืืื ืคึผืจืืื ืคึฟืึทืจ ืคึผืจืืื.
ืืืืึทืคึผืึธืื ื ืืื GitLab CI / CD
ืฆื ืึธืจืงืขืกืืจืืจื ืึทืืข ืืขื ืืื GitLab CI / CD, ืืึธืืืจ ืงืืงื ืืื ืืืึธืก ืืืจ ืืึทืจืคึฟื ืืื ืืื ืืืขืจ ืืขืงืข .gitlab-ci.yml
:
- ืขืจืฉืืขืจ ืคืื ืึทืืข, ืืืจ ืืึทืจืคึฟื ืึท ืืึทืืข ืืืื ืฆื ืืืืคื ืื ืขืก. Waypoint ืึทืจืืขื ืืืืฃ ืงืืื ืืื ืืงืก ืคืึทืจืฉืคึผืจืืืืื ื, ืขืก ื ืึธืจ ืืึทืจืฃ ืืึธืงืขืจ, ืึทืืื ืืืจ ืงืขื ืขื ืืืืคื ืืื ืึท ืืืฉืึทื ืขืจืืง ืืึธืงืงืขืจ ืืืื.
- ืืืืึทืืขืจ ืืืจ ืืึทืจืคึฟื ืฆื ืื ืกืืึทืืืจื Waypoint ืืื ืืขื ืืืื. ืืื ืืขืจ ืฆืืงืื ืคึฟื ืืืจ ืืืื ืงืืืึทืื
ืืืื ืืขืืึท ืืืืขื ืืื ืงืึทื ืืึทืืึทื ืืื ืืขื ืคึผืจืึธืฆืขืก ืคึฟืึทืจ ืืื. - ืฆืื ืกืืฃ ืืืจ ืืืขืื ืืืืคื ืื Waypoint ืงืึทืืึทื ืื
ืื ืืืืื ืืืกืืขื ืึทืืฅ ืืืึธืก ืืื ืืืขืจ ืจืขืจื - ืืื ืืข ืืืขื ืืึทืจืคึฟื ืฆื ืืืืคื ืื ืกืงืจืืคึผืก ืฆื ืคืึทืจืขื ืืืงื ืื ืืืคึผืืืืืึทื ื, ืึธืืขืจ ืฆื ืฆืขืืืืงืืขื ืฆื AWS ืืืจ ืืึทืจืคึฟื ื ืึธื ืืืื ืืึทื: ืืืจ ืืืื ืืืื ืืึธืื ืืื ืืื ืืืขืจ AWS ืืฉืืื. ืืื ืื Waypoint ืืึทืฉืจืืึทืืื ื
ืขืก ืืขื ืขื ืขืืืขืืข ืึธืคึผืฆืืขืก ืคึฟืึทืจ GitLab CICD ืึธืืขื ืืึทืงืืืฉืึทื ืืื AWS. ืืขืจ ืขืจืฉืืขืจ ืึธืคึผืฆืืข ืืื ืฆื ื ืืฆื ืื ืืขืืืื-ืืื 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
ืืืจ ืืจืืคืงืืคืืข ืื ืืขืฆืืข ืืืขืจืกืืข ืคืื โโโโืื Waypoint ืขืงืกืขืงืืืึทืืืข ืืื ืื ืกืืึทืืืจื ืขืก ืืื /usr/local/bin
. ืืื ื ืืื ืืืขืจ ืจืึทื ืขืจ ืืื ืฉืืื ืึธืืขืจืืืื ืืื AWS, ืืืืึทืืขืจ ืืืจ ืคืฉืื ืืืืคื waypoint init
, build
, deploy
ะธ release
.
ืืขืจ ืจืขืืืืืึทื ืคืื ืื ืืืืขื ืึทืจืืขื ืืืขื ืืืืึทืื ืืื ืื ืื ืขื ืืคึผืืื ื ืืื ืืืจ ืจืึธืืื ืื ืึทืคึผืืึทืงืืืฉืึทื:
ืืืืึทืคึผืืื ื ืืืื ืขืจ ืคืื
ืื ืฉืืึธืก ืกืึทืืืฉืึทื ื ืืขืืืขืืึธืคึผืขื ืืืจื HashiCorp ืืื GitLab ืืขืืคึฟื ืงืึธืืคึผืึทื ืืขืก ืฆื ืืขืคึฟืื ืขื ืึท ืืขืกืขืจ ืืืขื ืฆื ืึทื ืืืืืงืืขื ืึทืคึผืืึทืงืืืฉืึทื ื ืืืจื ืคึผืจืึทืืืืืืื ื ืงืึธื ืกืืกืืขื ื ืคืึทืจืืืึทืืืื ื ืคืื ืขืงืกืคึผืจืขืก ืคึผืืืคึผืืืื ื ืืื ืื ืคืจืึทืกืืจืึทืงืืฉืขืจ. Waypoint ืืึธืื ืืขื ืืืขื ืื ืื ืืขืจ ืฉืจืื ืืื ืื ืจืขืื ืจืืืืื ื ืืื ืืืจ ืงืืงื ืคืึธืจืืืก ืฆื ืื ืคืึธืจืืขืฆื ืึทื ืืืืืงืืื ื ืคืื ืื ืคึผืจืืืขืงื. ืืืจ ืงืขื ื ืืขืคึฟืื ืขื ืืขืจ ืืืขืื Waypoint
ืืืจ ืงืขื ื ืคึฟืึทืจืฉืืืื ืื ืคึผืจืื ืกืึทืคึผืึทืื ืคืื ืกื / ืกื, ืืขื ืึทืืข ืื ืื ืืจืึทืงืึทืกืื ืคืื ืืจืืขืื ืืื Gitlab CI ืืื ืึธื ืืืืื ืึทืคึผืืืืื ื ืืขืกืืขืจ ืคึผืจืึทืงืืืกืื ืืืจื ื ืขืืขื ืึท ืืืืืขื ืงืืจืก
ืืงืืจ: www.habr.com