แแแแแ แฏแแแ! แแ แแฅแแแ แแแแ, แแ แแแ แขแแฅแแแแฃแ แ แแแแแ แ SysOps แแฃแแแแกแแแแก Wrike-แจแ. แแ แกแขแแขแแแจแ แแ แแแขแงแแแ, แแฃ แ แแแแ แแแแแแแแ แแแแกแแแขแ แ แแช แจแแแซแแแแ แแฎแแแก แแแแฎแแแ แแแแแแแ แแแแจแ 10 แฌแฃแแจแ แแ 5 แแแแแ แจแ แแ แแแขแแแแขแแแแ แแแ แแแแฎแแแแแก แแแก แแแแแแแกแแแแแ. แกแขแแขแแแก แแแแฅแแแก แแ แแคแแ แ แแฅแแก แกแแแ แแ แแ แแ แแแแแแแแแแ, แ แแแแแแกแแช แฉแแแ แแฃแแแจแ แแฌแงแแแขแ. แแก แแ แแก แฉแแแ แแแ แแแ แแแแแชแแแแแแ แแ แจแแแแแญแแแแแแแแ, แ แแ แแแแแชแแ แขแแฅแแแแแแแ, แ แแแแแแช แฉแแแแแแก แแฎแแแแ. แจแแแแชแแแ, แ แแช แจแแแซแแแแ แแแขแแแฃแ แแ แแฆแแแฌแแ แ แแแแแฏแแแ, แ แแแ แแแกแขแ แฃแฅแชแแแแ แกแแกแแ แแแแแ แงแแคแแแแงแ แกแฎแแแแแกแฎแแ แแแแแชแแแแแแแก แแฅแแแ แแแแแแแแแแแกแแแแก. แแแแแแ แแกแแแแแแแแแ. แฌแแแ!
แแกแ แ แแ, แแแแแ แแฅแแแ แฃแแแ แแแแแแ แแแแกแแแขแแก แแแกแแแแซแแแแแก แแแ แขแแแ แแ แแแคแ แแแ. แจแแกแแซแแแ, แฃแคแแกแแช แแ, แ แแแแ แช แแก แแฆแฌแแ แแแแ
แแแแ แแ แฃแชแแ แแแแแช แแแแฌแงแแแแแ แแ แแกแฃแ แ แจแแแฎแแ แขแแฅแแแแแแแแก แแแแแช แแฎแแ แกแแแงแแ แแก? แแแฅแแแ, แแฅแแแ แคแแฅแ แแแ แแแแแแแแแแก แแแขแแแแขแแแแชแแแแ แแ แแกแฃแ แ แแฅแแแแ แกแแแขแแก แแแฅแกแแแแแฃแ แแ แแแฉแฅแแ แแแ? แแ แกแขแแขแแแจแ แฉแแแ แแแแแแแงแแแแแ
แฉแแแ แแแงแแแแแ Gitlab CI/CD แแแขแแแแขแแแแชแแแกแแแแก, แแแแ แแ แ แแช แจแแแฎแแแ แแฉแฅแแ แแแแก? แแแแแ แแแแแแแแแกแแ แกแแแขแ แแแ แแแแแ Cloudflare-แแ แแแแแงแแแแแแ
แ แ แแ แแก แกแแญแแ แ แแแกแแฌแงแแแแ:
-
Gitlab (แแฅแแแแ แแ
แแแฆแ แฃแแแฃแแ ) -
แแแแแ แแจแ Cloudflare-แแ -
แแแงแแแแแฃแแแ
nodejs/npm
แแแฌแแแ 1: Hugo-แก แแแกแขแแแแชแแ
แแฃ แแฅแแแ แฃแแแ แแแฅแแ แแแแแกแขแแแแ แแแฃแแ Hugo, แแ แแฃ แแแ แฉแแแแแแ แกแฎแแ แกแขแแขแแแฃแ แ แกแแแขแแก แแแแแ แแขแแ แ (แแ แกแแแ แแแ แแ แแงแแแแแ), แแแจแแ แจแแแแซแแแแ แแแแแขแแแแ แแก แแแฌแแแ.
-
แฉแแแแขแแแ แแแ Hugo-แแแ
https://github.com/gohugoio/hugo/releases -
แฉแแแ แแแแแแกแแแ Hugo แจแแกแ แฃแแแแแ แคแแแแก แแ แ-แแ แแแก แแแฎแแแแแ
PATH แแแแแ -
แแฎแแแ แกแแแขแแก แจแแฅแแแ:
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-> แจแแฅแแแ Token -> แจแแฅแแแแแ แกแแแแแ แแแจแแแ
แแฅ แแแแแฌแแแ แขแแแแแแก แจแแแฆแฃแแแ แแแแแ แแจแแแแแ แแ แแแแแแแ, แแแแ แแ แแแขแแแแ แ แแแแฅแขแแ แแแแก แแแ แแแแขแ แกแฃแ แแแแ แฉแแแแแแแแแ แแแแแ แแแแแแกแแแแก.
แจแแแแแฎแแ แแแขแแแ แแแแแแแแกแแแแก, แแก แแแแแญแแ แแแแ แแแกแแแ แแแฌแแแจแ.
แแแแแฏแ 3: แแแแฆแแ แแแแแ แแจแ แแ แแแแแแ
แแแแแแแก โ แแแแแฎแแแแ โ [แแแ แฏแแแแ แแแแ แแแแ แแแแ]
แแกแแแ แฉแแแแ, แแฃ แแแแแแงแแแแ แแแฎแแ :)
แจแแแแแฎแแ แแกแแแ แแแขแแแแก แแแแ แแแ, แแแกแแแ แแแฌแแแจแแช แแแแแญแแ แแแแ.
แแแแแฏแ 4: แแฃแจแแแแก แแแแฅแขแแฃแ แแแ
แแแแแแแก โ แแฃแจแแแแ โ แแฃแจแแแแก แแแ แแแ
แฉแแแ แแแ แฉแแแ แฃแแแแแแฃแ แกแแฎแแแก แแ แขแแ แแคแก Workers โ Unlimited (แแฆแแก 5$ แแแแจแ). แแฃ แแกแฃแ แ, แจแแแแซแแแแ แแแแแแแแแแแ แแแแแแฎแแแ แฃแคแแกแ แแแ แกแแแแ.
แแแฌแแแ 3: แแแ แแแแ แแแแแแแแแ (แฎแแแแ แแแแแแแแแ)
แแ แแแแแแแแ แแแ แแแแ แฎแแแแ แแแแแแแแแ แแแแก แแแกแแ แแแแแแ, แแฃ แ แ แฎแแแแแแ แแฅ. แแแฃแฎแแแแแแ แแแแกแ, แ แแ แแก แงแแแแแคแแ แ แจแแแซแแแแ แแแแแแแแก แฃแคแ แ แแแ แขแแแแ:
-
แแแแแแกแขแแแแ แแ wrangler:
npm i @cloudflare/wrangler -g
-
แแแแแ แแแแแแแแแ แฉแแแแ แแแแแแก แแแ แแฅแขแแ แแแจแ:
cd blog.example.com
-
แแแจแแแแ wrangler:
wrangler init โ site hugo-worker
-
แจแแฅแแแแแ แแแแคแแแฃแ แแชแแ wrangler-แแกแแแแก (แจแแแงแแแแแ แแแขแแแ แแแแฎแแแแแกแแก):
wrangler config
แแฎแแ แแชแแแแ แชแแแแแแแแแแก แจแแขแแแ แแฎแแแ แจแแฅแแแแ แคแแแแจแ แแแฉแฎแฃแแแ แ.แขแแแ (
-
แฉแแแ แแแแฃแแแแแแ แแฆแ แแชแฎแฃแแ แแ แแแแแแฃแ แ
-
แจแแชแแแ แแแ แจแ แฃแขแ แ แแฆแแช แแกแแแแกแ *blog.example.com/*
-
แฉแแแ แแแแฃแแแแแแ แงแแแแ แแแแกแแแแก แแฃแจแแแแ
-
แแแแแฃแแแก แจแแชแแแ ./public (แแ แกแแ แแแแแแ แแแแก แแฅแแแแ แกแขแแขแแแฃแ แ แกแแแขแ)
-
แแฃ แแฅแแแ แแแฅแแ แแ แแแ แแแขแ แแแแแแ แแแแแ, แแแจแแ แฃแแแ แจแแแกแฌแแ แแ แแแแแแ แกแแแฃแจแแ แกแแ แแแขแจแ: แแฃแจแ-แกแแแขแ/index.js (แแฎ. แคแฃแแฅแชแแ handleEvent)
แจแแกแแแแจแแแแแ, แแ แแ แแแแแแแแกแแ แกแแแขแ แแฃแแแแก แแแแแงแแแแแแ wrangler publish
.
แแแฌแแแ 4: แแแแแแแแแแก แแแขแแแแขแแแแชแแ
แแก แกแแฎแแแแซแฆแแแแแแ แแแฌแแ แแแแ Gitlab-แแกแแแแก, แแแแ แแ แแก แแกแแฎแแแก แแแแแแแ แแแขแแแแขแฃแ แ แแแแแแแแแแก แแ แกแก แแ แกแแแแ แขแแแแก.
แแแแแฏแ 1: แจแแฅแแแแแ แแ แแแแแแแคแแแฃแ แแ แแ แฉแแแแ แแ แแแฅแขแ
-
แจแแฅแแแแแ แแฎแแแ GitLab แแ แแแฅแขแ แแ แแขแแแ แแแ แกแแแขแ: แแแ แแฅแขแแ แแ blog.example.com แงแแแแ แจแแแแแ แกแแ แฃแแแ แแแแแแแกแแแก แแ แแแฅแขแแก root แแแ แแฅแขแแ แแแจแ
-
แแแแแงแแแแ แชแแแแแ 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 โ แแแแกแแแแแแแ โ แแแฃแจแแแ แแแแกแแแแแ) แแ แกแแแแแแกแขแ แ แคแแแแแแจแ แฉแแแแ แแแแ. แแแแแ!
แแแกแแแแ
แแแ แแแ, แแ แจแแแซแแแแ แแแแแ แจแแแแคแแกแ แแ แแแแแ แแ แแชแแกแ แแ แฌแฃแแแ แแแขแฎแแแก แแแกแญแแ แแ. แแแแ แแ แแฎแแ แแฅแแแ แแแฅแแ แกแฌแ แแคแ แกแแแขแ แแแขแแแแขแฃแ แ แแแแแแแแแแ แแ แแฎแแแ แแแแแแแ แแแแก แจแแกแแฎแแ, แแฃ แ แ แจแแแแซแแแแ แแแแแแแแ แแฃแจแแแแแ.
แฌแงแแ แ: www.habr.com