áááºá¹ááá¬áá«! áá»áœááºá¯ááºáá¡áááºááŸá¬ Dima ááŒá áºááŒá®ážá áá»áœááºá¯ááºááẠWrike ááŸá SysOps á¡ááœá²á·á¡ááœáẠáááºážááá¬ááá¯ááºážááá¯ááºáᬠáŠážáá±á¬ááºáá°ááŒá áºáááºá á€áá±á¬ááºážáá«ážááœááºá á¡áá¯á¶ážááŒá¯áá°ááŸáá·áº áááºááá¯ááºááá»áŸ 10 áááá áºááŸáá·áº áá áºááá»áŸáẠ5 áá±á«áºáá¬ááŒáá·áº áááºááá¯ááºáá áºáá¯ááᯠáááºááá¯á·ááŒá¯áá¯ááºááááºááᯠááŒá±á¬ááŒáááºááŒá áºááŒá®áž áááºážáááŒáá·áºáá»ááºááŸá¯ááᯠá¡ááá¯á¡áá»á±á¬ááºáá¯ááºáá±á¬ááºááá¯ááºáááºááŒá áºáááºá áá±á¬ááºážáá«ážááẠáá»áœááºá¯ááºááá¯á·áá¡ááœá²á·á¡ááœááºáž ááŒá±ááŸááºážáá±ážááá·áº ááŒá¿áá¬áá»á¬ážááŸáá·áº áá¬ááŸáááá¯ááºáá«á á€áááºááŸá¬ áá»áœááºá¯ááºá¡ááœáẠá¡áá áºá¡áááºážááŒá áºáá±á¬ áááºážááá¬áá áºáá¯ááᯠááááœáá·áºáááŒááºážá ááá¯ááºááá¯ááºá¡ááœá±á·á¡ááŒá¯á¶ááŸáá·áº á¡áááºááŒá®ážá áá¬áá»á¬ážááŒá áºáááºá ááœáŸááºááŒá¬ážáá»ááºáá»á¬ážááẠááá°áá®áá±á¬á¡ááœá±á·á¡ááŒá¯á¶ááŸááá°áá»á¬áž á¡ááœáẠá¡áá¯á¶ážáááºááá¯ááºá á±ááẠá¡ááá·áºááá·áºááᯠá¡áááºááá¯ááºáá¯á¶áž á¡áá±ážá áááºáá±á¬áºááŒááẠááŒáá¯ážá á¬ážáá²á·áá«áááºá ááŸá áºáááºáááºááá¯á· áá»áŸá±á¬áºááá·áºáá«áááºá ááœá¬áž!
ááá¯á·ááŒá±á¬áá·áºá áááºááẠáááºááá¯ááºáá
áºáá¯ááᯠáááºáá¶áá»ááºážáááẠááá¯ážááŸááºážááŒá®áž á
á»á±ážáááºáá¬áá±á¬ áááºážáááºážááᯠáááºááœá±á·ááŸáááŒá®ážááŒá
áºáá±á¬ááºážááŒá
áºááá¯ááºáááºá á€ááœááºáá±á¬áºááŒáá¬ážááá·áºá¡ááá¯ááºážá¡ááá²á·áááºááŒá
áºááá¯ááºáááºá
áá«áá±ááá·áº áááºáá¯ááºáááẠááŒá®ážááœá±á·áá±áá²ááŒá
áºááŒá®áž ááá¹ááááŸááá²á· áááºážááá¬ááá¹áá¬áá
áºááᯠááááœá±á·áá»ááºáá±ááá¬ážá á¡ááá¯á¡áá»á±á¬áẠááŒáá·áºáá»ááºááŒááºážá¡ááŒá±á¬ááºáž áááºá
ááºážá
á¬ážáá±ááŒá®áž ááá·áºááá¯ááºááᯠáááºááá¯ááºááá»áŸ á¡ááŸáááºááŒáŸáá·áºááá¯áááºáᯠááá¯ááŒáá«á
áá¯á·á á€áá±á¬ááºážáá«ážááœááºáá»áœááºá¯ááºááá¯á·á¡áá¯á¶ážááŒá¯áá«áááºá
áá»áœááºá¯ááºááá¯á·ááẠá¡ááá¯á¡áá»á±á¬ááºáá¯ááºáá±á¬ááºáááºá¡ááœáẠGitlab CI/CD ááá¯á¡áá¯á¶ážááŒá¯áááºá ááá¯á·áá±á¬áº á¡ááŸáááºááŒáŸáá·áºááŒááºážááŸáá·áºáááºáááºááá±á¬á ááá¯ááºááᯠCloudflare ááá¯á¡áá¯á¶ážááŒá¯ááŒá®áž ááá¯ááºááá¯ááºá¡áá¯á¶ážááŒá¯ááŒáá«á
áá¯á·
á áááºáááºáá¬ááá¯á¡ááºááááºážá:
-
Gitlab (áááºááá¯ááºááá¯áẠááá¯á·ááá¯ááº
ááá¯ážá¡á¯á¶á·áá±ááẠ) -
á¡áá±á¬ááºá· Cloudflare ááœáẠ-
áááºáááºáá¬ážáááºá
nodejs/npm
á¡ááá¯ááºáž 1- Hugo ááᯠááá·áºááœááºážááŒááºážá
á¡áááºá ááá·áºááœáẠHugo ááᯠááá·áºááœááºážáá¬ážááŒá®ážááŒá áºáá«á ááá¯á·ááá¯áẠááá°áá®áá±á¬ static site generator (ááá¯á·ááá¯áẠáá¯á¶ážáá¡áá¯á¶ážáááŒá¯áá«á)á ááá¯á·áá±á¬áẠá€á¡ááá¯ááºážááᯠáá»á±á¬áºááœá¬ážááá¯ááºáá«áááºá
-
Hugo ááŸáá±á«ááºážáá¯ááºáá¯ááºáá«á
https://github.com/gohugoio/hugo/releases -
áááºááŸááºáá¬ážááá·áºá¡áá¬áá»á¬ážáá²ááŸáá áºáá¯á¡á Hugo executable file ááá¯áá»áœááºá¯ááºááá¯á·áá¬ážááŸááá«á
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 entry ááá¯áááºáá®ážáá«á
ááááŠážá
áœá¬ áá»áœááºá¯ááºááá¯á·áááá¯ááááºážááᯠááœá±ážáá«á ááá¯á·áá±á¬áẠáá®áá°ážááᯠááœá±ážáá»ááºáá«á DNS ááá¯. áá»áœááºá¯ááºááá¯á·ááẠááá±á¬á·áẠA-ááŸááºáááºážááᯠáááºáá®ážááŒá®áž áááºážá¡ááœáẠá
áááºáá°ážááẠIP á¡áá»áá¯á·ááᯠááœáŸááºááŒáá« (áááºážááẠááá¬ážáááºááŒá
áºáááºá
á¡ááá·áº 2- Cloudflare ááá¯áááº
-
á¡ááŒáŸáá»á¯áá»áááá¯ááºáá±ážááá¯áẠ-> API ááá¯áááºáá»á¬áž áááºááº-> ááá¯áááºáááºáá®ážáá«á -> á áááºááŒáá¯ááºááá¯áááºáááºáá®ážáá«á
á€áá±áá¬ááœáẠáááºááẠááá¯áááºáá¶áá«ááºááᯠá¡áá±á¬áá·áºáá»á¬ážááŸáá·áº áá¯ááºáá»á¬ážááá¯á· ááá·áºáááºááẠááá¯á¡ááºáá±á¬áºáááºáž áá¯á¶ááœááºáá±á¬áºááŒáá¬ážáá±á¬ ááœáá·áºááŒá¯áá»ááºáá»á¬ážá¡ááœáẠáááºážááŒááºááŒááºážááœá±ážáá»ááºááŸá¯ááᯠáá»ááºáá¬ážáá«á
á¡áá¬áááºá¡ááœáẠááá¯áááºááᯠááááºážáááºážáá«á ááááá¡ááá¯ááºážááœáẠáááºážááᯠááá¯á¡ááºáá«áááºá
á¡ááá·áº 3: á á¬áááºážááá¯ááºááŸáá·áº zoneid ááá°áá«á
ááá¯ááááºáž â á»áá¶á³áá¶á¯áá¶á¯ážááá¹áá â [áá¬áááºáá±ážáá¬áž]
áá«âááœá± áá»áœááºââáá±á¬áºâááá¯á· ááá¯á¶ážáá«áá²á· âáá»á±ážáá°ážááŒá¯ááŒá®áž :)
áááºážááá¯á·ááᯠááá¯áááºáá±ážááœáẠááááºážáááºážáá«á ááááá¡ááá¯ááºážááœááºáááºáž áááºážááá¯á·ááᯠááá¯á¡ááºáá«áááºá
á¡ááá·áº 4- á¡áá¯ááºááá¬ážáá»á¬ážááᯠá¡áááºááœááºážáá«á
ááá¯ááááºáž â á¡áá¯ááºááá¬ážáá»á¬áž â á¡áá¯ááºááá¬ážáá»á¬ážá á®áá¶ááá·áºááœá²áá«
áá»áœááºá¯ááºááá¯á·ááẠáá°ážááŒá¬ážáá±á¬á¡áááºááŸáá·áº á¡áá±á¬ááºááœááºáá²á· á¡áá¯ááºááá¬ážáá»á¬áž â á¡ááá·áºá¡áááºáááŸá (ááá±á·áá áºááá»áŸáẠ$5) ááᯠááœá±ážáá»ááºáá«áááºá ááá¹áááŸááá«áá áááºááẠáá±á¬ááºááá¯ááºážááœáẠá¡ááá²á·áá¬ážááŸááºážááá¯á· á¡ááá·áºááŒáŸáá·áºááá¯ááºáááºá
á¡ááá¯ááºáž 3- ááááá¯á¶áž ááŒáá·áºáá»ááºááŒááºáž (áá°ááá¯ááºááá¯áẠá¡áá¯á¶ážáá»ááŒááºáž)
á¡á²áá®ááŸá¬ ááááºááŒá áºáá»ááºáá±áá¬ááᯠááááá¯á·á¡ááœáẠááááá¯á¶áž áá°ááá¯ááºááá¯áẠááŒáá·áºáá»ááºááŸá¯ááᯠáá¯ááºáá²á·áááºá áá«ááœá±á¡á¬ážáá¯á¶ážá ááá¯ááá¯ážááŸááºážáá±ááá·áº
-
wrangler ááᯠááá·áºááœááºážáá«-
npm i @cloudflare/wrangler -g
-
áá»áœááºá¯ááºááá¯á·áááá±á¬á·ááºáááºážááœáŸááºááá¯á· ááœá¬ážááŒáá«á áá¯á·á
cd blog.example.com
-
Wrangler ááᯠáá áºááœáŸááºááŒááºáž-
wrangler init â site hugo-worker
-
wrangler á¡ááœáẠconfig áá áºáá¯áááºáá®ážáá« (áá±ážáá±á¬á¡áá« ááá¯áááºááá·áºáá«)
wrangler config
á¡áᯠá¡áá
áºáááºáá®ážáá¬ážáá²á· ááá¯ááºááᯠá¡ááŒá±á¬ááºážá¡áá²áá¯ááºááŒáá·áºáá¡á±á¬áẠwrangler.toml (
-
áá»áá±á¬áºááá¯á·áá±á¬áºááŒááẠá á¬áááºážááá¯ááºááŸáá·áº zoneid
-
ááŒá±á¬ááºážáá« ááá®ážá áẠáá áºáá¯áá¯ááᯠ*blog.example.com/*
-
áá»áá±á¬áºááá¯á·áá±á¬áºááŒááẠáááŸááºáá±á¬ á¡ááœáẠá¡áá¯ááºááá¬ážáá»á¬ážáááº
-
áá¯á¶ážááᯠ./public ááá¯á· ááŒá±á¬ááºážáá«á (ááá¯á·ááá¯áẠááá·áºá¡ááŒáááºááá¯ááºáááºááŸááá¬áá±áá¬)
-
ááá·áºááœáẠáááºážááŒá±á¬ááºážáá áºáá¯áááºááá¯áá±á¬ ááá¯ááááºážááŸááá«áá á¡áá¯ááºáá¯ááºáá±á¬ script ááœáẠáááºážááŒá±á¬ááºážááᯠááŒááºááá·áºáááº- á¡áá¯ááºááá¬áž-ááá¯ááº/index.js (áá¯ááºáá±á¬ááºáá»ááºááá¯ááŒáá·áºáá«á handleEvent)
áá±á¬ááºážááŒá®á á¡ááœá²á·ááᯠá¡áá¯á¶ážááŒá¯á ááá¯ááºááᯠááŒáá·áºáá»ááºááẠá¡áá»áááºáá±á¬ááºááŒá®á wrangler publish
.
á¡ááá¯ááºáž 4- ááŒáá·áºáá»ááºááŸá¯ á¡ááá¯á¡áá»á±á¬ááºá áá áº
á€áááºážááœáŸááºáá»ááºááᯠGitlab á¡ááœáẠáá±ážáá¬ážáá¬ážáá±á¬áºáááºáž áá±áá¯áá»á¡á¬ážááŒáá·áº á¡ááá¯á¡áá»á±á¬áẠááŒáá·áºáá»ááºááŒááºážá á¡ááŸá áºáá¬áááŸáá·áº ááœááºáá°ááŸá¯ááᯠáááºážá á¬ážáá«áááºá
á¡ááá·áº 1- áá»áœááºá¯ááºááá¯á·áááá±á¬áá»ááºááᯠáááºáá®ážááŒá®áž ááŒááºáááºáááºááŸááºáá«á
-
GitLab ááá±á¬áá»ááºá¡áá áºáá áºáá¯áááºáá®ážááŒá®áž ááá¯ááº-áááºážááœáŸááºááᯠá¡ááºáá¯ááºáá¯ááºáá«á blog.example.com á¡ááŒá±á¬ááºážá¡áá¬á¡á¬ážáá¯á¶ážááŸáá·áºá¡áá° project root directory ááœááºáááºááŸáááá«áááºá
-
áá«ááá¯á·áááºááŸáẠááŒá±á¬ááºážáá²ááá¯ááºáá±á¬ CFAPITOKEN á€áá±áá¬ááœááº: áááºááŸááºáá»ááºáá»á¬áž â CI/CD â variables ááá¯
á¡ááá·áº 2- .gitlab-ci.yml ááá¯ááºááᯠáááºáá®ážááŒá®áž ááááá¯á¶áž ááŒáá·áºáá»ááºááŸá¯ááᯠáá¯ááºáá±á¬ááºáá«á
ááá¯ááºáá áºáá¯áááºáá®ážáá«á .gitlab-ci.yml root ááœáẠá¡á±á¬ááºáá«á¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážááŒáá·áº
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 â ááá¯ááºááá¯ááºážáá»á¬áž â ááá¯ááºááá¯ááºážááœááºáááºážááŒááºáž) ááá¯á·ááá¯áẠááááºá¡áááºááᯠá¡ááºááŸá¶ááŒááºážááŒáá·áºá áá² áá«ááá¯áááºáá±á¬á·!
áá±á¬ááºáá»ááº
áá±á¬ááºážááŒá®á áá«á á¡á²áá«ááᯠáááºážáááºážáá±áž áá¬ážáááºáá¬ážááŒá®áž áá¯ááºáááºážá ááºáá áºáá¯áá¯á¶ážá áááºáááá áºáá»á±á¬áºáá±á¬ááºáá² ááŒá¬áááºá ááá¯á·áá±á¬áº ááá¯ááœáẠááá·áºááœáẠá¡ááá¯á¡áá»á±á¬áẠááŒáá·áºáá»ááºá¡áá¯á¶ážááŒá¯ááá¯ááºááá·áº áá»ááºááŒááºáá±á¬ áááºááá¯ááºáá áºáá¯ááŸáááŒá®áž á¡áá¯ááºááá¬ážáá»á¬ážááŸáá·áº áááºáá¯ááºáá±á¬ááºááá¯ááºááá·áº á¡ááŒá¬ážá¡áá¬áá»á¬ážááŸáá·áºáááºáááºááá·áº áááºážáá áºáá±á¬ á¡ááŒá¶áá¬ááºá¡áá»áá¯á·ááŸááááºá
source: www.habr.com