ืฉืืื! ืฉืื ืืืื, ืื ื ืืืืื ืืื ื ืฉื ืฆืืืช SysOps ื-Wrike. ืืืืืจ ืื ืืกืคืจ ืืื ืืืฆื ืืืคืื ืืชืจ ืืื ืืจื ื ืืื ืฉืืืชืจ ืงืจืื ืืืฉืชืืฉ ื-10 ืืงืืช ื-5 ืืืืจ ืืืืืฉ ืืืืคืื ืืช ืืคืจืืกื ืฉืื ืืืืืืืืืช. ืืืืืจ ืืื ืืืขื ืฉืื ืงืฉืจ ืืืขืืืช ืฉืื ื ืคืืชืจืื ืืฆืืืช ืฉืื ื. ืื ืืืืงื ืืืืืื ืืืืฉืืช ืืืืชืจืฉืืืช ืฉืื ืืืืืจืืช ืขื ืืื ืืืืืื ืืืฉื ืื. ื ืืกืืชื ืืชืืจ ืืช ืืฉืืืื ืืคืืจืื ืจื ืืื ืืืคืฉืจ ืืื ืฉืืืืจืืืช ืืืื ืฉืืืืฉืืืช ืขืืืจ ืื ืฉืื ืขื ื ืืกืืื ืฉืื ื. ืื ื ืืงืืื ืฉืชืื ื. ืืืืช!
ืื ืืืื ืืืจ ืืฆืืชื ืืจื ืคืฉืืื ืืืืื ืืืจื ืืชืจ ืืื ืืจื ื. ืืืื ืืคืืื ืืืื ื, ืืคื ืฉืืชืืืจ ืืื
ืืื ืคืชืืื ืืชื ืขืืืื ืืฉืืขืื ืืจืืฆื ืืืขืช ืืขืืื ืืืืฉ ืืืืืืฅ ืฉื ืืืื ืืืืืื? ื ื ืื ืฉืืชื ืืืฉื ืขื ืืืืืืฆืื ืฉื ืคืจืืกื ืืืจืฆืื ื ืืืืืฅ ืืช ืืืชืจ ืฉืื ืืื ืืืคืฉืจ? ืืืืืจ ืื ื ืฉืชืืฉ
ืื ืื ื ืืฉืชืืฉืื ื-Gitlab CI/CD ืืืืืืืฆืื, ืืื ืื ืืืื ืืืฆื? ืืืื ื ืคืจืืก ืืช ืืืชืจ ืืฉืืจืืช ื-Cloudflare ืืืืฆืขืืช
ืื ื ืืจืฉ ืืื ืืืชืืื:
-
Gitlab (ืื
ืึฐืขืึผื ึธื ) -
ืืฉืืื ื-Cloudflare -
ืืึผืชืงึธื
nodejs/npm
ืืืง 1: ืืชืงื ืช ืืืื
ืื ืืืจ ืืชืงื ืช ืืช ืืืื, ืื ืื ืืชื ืืขืืืฃ ืืืืื ืืชืจืื ืกืืื ืืืจ (ืื ืื ืืฉืชืืฉ ืืืื ืืืื), ืื ืืชื ืืืื ืืืื ืขื ืืืืง ืืื.
-
ืืืจื ืืช ืืืื ื
https://github.com/gohugoio/hugo/releases -
ืื ื ืื ืืืื ืืช ืงืืืฅ ืืืคืขืื ืฉื ืืืื ืืคื ืืื ืืืื ืืืืืืจืื ื
ื ืชืื ืืจืืื -
ืืฆืืจืช ืืชืจ ืืืฉ:
hugo new site blog.example.com
-
ืฉื ื ืืช ืืกืคืจืืื ืื ืืืืืช ืืกืคืจืืื ืืืืฉื ืฉื ืืฆืจื:
cd blog.example.com
-
ืืืจ ื ืืฉื ืขืืฆืื (
https://github.com/budparr/gohugo-theme-ananke/releases ืื ืื ืฉืื ืืืื) -
ืืืื ื ืืฆืืจ ืืช ืืคืืกื ืืจืืฉืื:
hugo new posts/my-amazing-post.md
-
ืืืกืฃ ืชืืื ืืงืืืฅ ืฉื ืืฆืจ: content/posts/my-amazing-post.md.
ืืืฉืจ ืืื ื ืขืฉื, ืฉื ื ืืช ืขืจื ืืืืืื ื ืฉืงืจ -
ืืฆืืจืช ืงืืฆืื ืกืืืืื:
hugo -D
ืืขืช ืืืชืจ ืืกืืื ืฉืื ื ืืืืงื ืืชืื ืกืคืจืืื ./ืคึผืึผืึฐืึผึตื ืืืืื ืืคืจืืกื ืืืื ืืช ืืจืืฉืื ื ืฉืื.
ืืืง 2: ืืืืจืช Cloudflare
ืขืืฉืื ืืืื ื ืกืชืื ืขื ืืืืืจื ืืจืืฉืื ืืช ืฉื Cloudflare. ื ื ืื ืฉืืืจ ืืฉ ืื ื ืืืืืื ืืืชืจ. ืืืื ื ืืงื ืืืืืื blog.example.com.
ืฉืื 1: ืฆืืจ ืขืจื DNS
ืจืืฉืืช, ืืืจ ืืช ืืืืืืื ืฉืื ื, ืืืืืจ ืืื ืืช ืคืจืื ืืชืคืจืื DNS. ืื ื ืืืฆืจืื ืจืฉืืื A-ืืืื ืืืฆืืื ืื ืขืืืจื ืืชืืืช IP ืคืืงืืืืืช (ืืื ืืจืฉืื
ืฉืื 2: Cloudflare Token
-
ืืคืจืืคืื ืฉืื -> ืืกืืืื ื API tab-> ืฆืืจ ืืกืืืื -> ืฆืืจ ืืกืืืื ืืืชืื ืืืฉืืช
ืืื ืชืฆืืจื ืืืืืื ืืช ืืืกืืืื ืืืฉืืื ืืช ืืืืืจืื, ืื ืืฉืืจ ืืช ืืคืฉืจืืช ืืขืจืืื ืขืืืจ ืืืจืฉืืืช ืืจืฉืืืืช ืืชืืื ื.
ืฉืืืจ ืืช ืืืกืืืื ืืขืชืื, ื ืืืงืง ืื ืืืืง ืืฉืืืฉื.
ืฉืื 3: ืงืื accountid ื-zoneid
ืชึฐืืึผื โ ืกืงืืจื ืืืืืช โ [ืกืจืื ืฆื ืืืื]
ืืื ืฉืื, ืื ืชืฉืชืืฉ ืืื ืืืงืฉื :)
ืฉืืืจ ืืืชื ืืื ืืืกืืืื, ื ืฆืืจื ืืืชื ืื ืืืืง ืืฉืืืฉื.
ืฉืื 4: ืืคืขื ืขืืืืื
ืชึฐืืึผื โ ืขืืืืื โ ื ืื ืขืืืืื
ืื ื ืืืืจืื ืฉื ืืืืืื ืืชืขืจืืฃ ืขืืืืื โ ืืื ืืืืื (5$ ืืืืืฉ ืืืื). ืื ืชืจืฆื, ืชืืื ืืฉืืจื ืืืืืจ ืืืชืจ ืืืจืกื ืืืื ืืืช.
ืืืง 3: ืคืจืืกื ืจืืฉืื ื (ืคืจืืกื ืืื ืืช)
ืขืฉืืชื ืืช ืืคืจืืกื ืืืื ืืช ืืจืืฉืื ื ืืื ืืืืืช ืื ืืืืช ืงืืจื ืฉื. ืืืจืืช ืฉืื ืื ืืืื ืืืืขืฉืืช ืืฆืืจื ืคืฉืืื ืืืชืจ:
-
ืืชืงื ืจื ืืืจ:
npm i @cloudflare/wrangler -g
-
ืืื ื ืื ืืกืคืจืืืช ืืืืื ืฉืื ื:
cd blog.example.com
-
ืืคืขื ืจื ืืืจ:
wrangler init โ site hugo-worker
-
ืฆืืจ ืชืฆืืจื ืขืืืจ ืจื ืืืจ (ืืื ืืช ืืืกืืืื ืืฉืชืชืืงืฉ):
wrangler config
ืืขืช ื ื ืกื ืืืฆืข ืฉืื ืืืื ืืงืืืฅ ืืืืฉ ืฉื ืืฆืจ wrangler.toml (
-
ืื ื ืืฆืืื ืื accountid ื-zoneid
-
ืืฉืชื ื ืึทืกืืึผื ืืืฉืื ืืื *blog.example.com/*
-
ืื ื ืืฆืืื ืื ืฉืงืจ ืขืืืจ workersdev
-
ืฉื ื ืืช ืืืื ื-./public (ืื ืืืื ื ืืฆื ืืืชืจ ืืกืืื ืฉืื)
-
ืื ืืฉ ืื ืืืชืจ ืืืืืืื ืืื ืื ืชืื, ืขืืื ืืชืงื ืืช ืื ืชืื ืืกืงืจืืคื ืืขืืืื: workers-site/index.js (ืจืื ืคืื ืงืฆืื handleEvent)
ืืฆืืื, ืืืืข ืืืื ืืคืจืืก ืืช ืืืชืจ ืืืืฆืขืืช ืืฆืืืช wrangler publish
.
ืืืง 4: ืืืืืืฆืื ืฉื ืคืจืืกื
ืืืจืื ืื ื ืืชื ืขืืืจ Gitlab, ืื ืืื ืืืื ืืช ืืืืืช ืืืงืืืช ืฉื ืคืจืืกื ืืืืืืืืช ืืืืคื ืืืื.
ืฉืื 1: ืฆืืจ ืืืืืจ ืืช ืืคืจืืืงื ืฉืื ื
-
ืฆืืจ ืคืจืืืงื GitLab ืืืฉ ืืืขืื ืืช ืกืคืจืืืช ืืืชืจ: blog.example.com ืขื ืื ืืชืืื ืืืื ืืืืืช ืืืืงื ืืกืคืจืืืช ืืฉืืจืฉ ืฉื ืืคืจืืืงื
-
ืงืืขื ื ืืฉืชื ื CFAPITOKEN ืืื: ืืืืจืืช โ CI / CD โ ืืฉืชื ืื
ืฉืื 2: ืฆืืจ ืงืืืฅ .gitlab-ci.yml ืืืคืขื ืืช ืืคืจืืกื ืืจืืฉืื ื
ืฆืืจ ืงืืืฅ .gitlab-ci.yml ืืฉืืจืฉ ืขื ืืชืืื ืืื:
stages:
- build
- deploy
build:
image: monachus/hugo
stage: build
variables:
GIT_SUBMODULE_STRATEGY: recursive
script:
- cd blog.example.com/
- hugo
artifacts:
paths:
- blog.example.com/public
only:
- master # this job will affect only the 'master' branch
tags:
- gitlab-org-docker #
deploy:
image: timbru31/ruby-node:2.3
stage: deploy
script:
- wget https://github.com/cloudflare/wrangler/releases/download/v1.8.4/wrangler-v1.8.4-x86_64-unknown-linux-musl.tar.gz
- tar xvzf wrangler-v1.8.4-x86_64-unknown-linux-musl.tar.gz
- cd blog.example.com/
- ../dist/wrangler publish
artifacts:
paths:
- blog.example.com/public
only:
- master # this job will affect only the 'master' branch
tags:
- gitlab-org-docker #
ืื ื ืืฉืืงืื ืืช ืืคืจืืกื ืืจืืฉืื ื ืืืืคื ืืื ื (CI/CD โ ืฆืื ืืจืืช โ ืืคืขื ืฆืื ืืจ) ืื ืืืชืืืืืืช ืืกื ืืฃ ืืืืกืืจ. ืืืืื!
ืืกืงื ื
ืืืื, ืืืื ืืืืืช ืฉืืืืืชื ืืช ืื ืืขื, ืืื ืืชืืืื ืืงื ืงืฆืช ืืืชืจ ืืขืฉืจ ืืงืืช. ืืื ืขืืฉืื ืืฉ ืื ืืชืจ ืืืืจ ืขื ืคืจืืกื ืืืืืืืืช ืืืื ืจืขืืื ืืช ืืืฉืื ืืืื ืื ืขืื ืืชื ืืืื ืืขืฉืืช ืขื Workers.
ืืงืืจ: www.habr.com