Ndakanyora mawebhusaiti angu ekutanga mukupera kwema90s. Kare ikako zvaive nyore kuaisa muhurongwa hwekushanda. Paive neApache server pane imwe yakagovaniswa yekutambira, unogona kupinda mune iyi server kuburikidza neFTP nekunyora chimwe chinhu chakadai ftp://ftp.example.com
. Ipapo iwe waifanira kuisa zita rako uye password uye kurodha mafaera kune server. Paive nenguva dzakasiyana, zvese zvaive nyore ipapo kupfuura ikozvino.
Mumakumi maviri emakore kubva ipapo, zvese zvachinja zvakanyanya. Mawebhusaiti ave akaomarara; anofanirwa kuunganidzwa asati aburitswa mukugadzira. Imwe sevha imwe chete yakava maseva mazhinji anomhanya kuseri kwezviyereso zvemutoro, uye kushandiswa kweshanduro yekudzora masisitimu kwakava kwakajairika.
Kune yangu yega purojekiti ndaiva neyakakosha configuration. Uye ndaiziva kuti ndaida kugona kuendesa saiti mukugadzirwa nekuita chiito chimwe chete: kunyora kodhi kubazi. master
paGitHub. Uye zvakare, ndaiziva kuti kuitira kuti ndive nechokwadi chekushanda kwewebhu diki application, ndaisada kubata hombe Kubernetes cluster, kana kushandisa Docker Swarm tekinoroji, kana kuchengetedza boka remaseva ane pods, vamiririri uye mamwe marudzi ese ezvimwe. zvakaoma. Kuti ndikwanise kuzadzisa chinangwa chekuita basa rive nyore sezvinobvira, ndaifanira kujairana neCI/CD.
Kana iwe uine purojekiti diki (munyaya iyi, chirongwa cheNode.js) uye iwe ungade kuziva maitiro ekugadzira otomatiki kutumirwa kweprojekiti iyi, uchiona kuti izvo zvakachengetwa mudura zvinonyatsoenderana nezvinoshanda mukugadzira, ipapo ini funga kuti ungafarira chinyorwa ichi.
Zvinotarisirwa
Muverengi wechinyorwa ichi anotarisirwa kuve nekunzwisisa kwekutanga kwemutsara wekuraira uye kunyora Bash zvinyorwa. Mukuwedzera, iye achada maakaundi
Zvinangwa
Ini handisi kuzotaura kuti chinyorwa ichi chinogona kunzi "chidzidzo". Ichi chimwe chegwaro randinotaura pamusoro pezvandakadzidza uye kutsanangura maitiro anondikodzera kuyedza uye kuendesa kodhi mukugadzira, inoitwa mune imwe otomatiki pass.
Izvi ndizvo zvakaita mafambiro angu ebasa.
Yekodhi yakatumirwa kune chero repository bazi kunze master
, zviito zvinotevera zvinoitwa:
- Iyo purojekiti inovaka paTravis CI inotanga.
- Yese unit, yekubatanidza uye yekupedzisira-kusvika-kumagumo bvunzo inoitwa.
Chete kodhi inowira mairi master
, zvinotevera zvinoitwa:
- Zvese zvataurwa pamusoro apa, plus...
- Kuvaka mufananidzo weDocker wakavakirwa pane yazvino kodhi, marongero uye nharaunda.
- Kuendesa mufananidzo kuDocker Hub.
- Kubatanidza kune server yekugadzira.
- Kuisa mufananidzo kubva kuDocker Hub kune server.
- Kumisa mudziyo wezvino uye kutanga imwe nyowani zvichienderana nemufananidzo mutsva.
Kana iwe usingazive chero chinhu nezve Docker, mifananidzo uye midziyo, usanetseka. Ndichakuudzai zvose nezvazvo.
Chii chinonzi CI/CD?
Chidimburiko cheCI/CD chinomirira "kuenderera mberi kwekubatanidza / kuenderera mberi kwekutumira."
▍Kubatanidzwa kunopfuurira
Kuenderera mberi kubatanidzwa inzira iyo vagadziri vanoita kuzvipira kune iyo purojekiti main source code repository (kazhinji bazi. master
) Panguva imwecheteyo, hutano hwekodhi hunosimbiswa kuburikidza nekuongorora kwemagetsi.
▍ Kuenderera mberi nekuendesa
Kuenderera mberi kutumirwa ndiko kunowanzo, otomatiki kutumira kwekodhi mukugadzira. Chikamu chechipiri cheCI / CD acronym dzimwe nguva chinoperengerwa se "kuenderera mberi kuburitsa." Izvi zvakangofanana ne "kuenderera mberi kwekuendesa", asi "kuenderera mberi kwekutumira" kunoreva kukosha kwekusimbisa shanduko usati watanga chirongwa chekuendesa purojekiti.
kutanga
App yandaishandisa kudzidza zvese izvi inonzi
Mune yangu, iyo application ndeye Express sevha inomhanya munzvimbo yeNode.js, ichishandira peji-imwe React application uye inotsigira yakachengeteka server-side API. Ichi chivakwa chinotevera zano rinogona kuwanikwa mukati
Ndakabvunza
Docker
Docker chishandiso icho, nekuda kwechigadziko tekinoroji, inobvumira zvikumbiro kugovaniswa zviri nyore, kuendeswa uye kumhanya munzvimbo imwechete, kunyangwe iyo Docker chikuva pachayo ichimhanya munzvimbo dzakasiyana. Kutanga, ndaida kuisa maoko angu paDocker command line maturusi (CLI).
Docker Hub ingangoita chinhu chimwe chete
Saka, kuti utange neDocker, unofanirwa kuita zvinhu zviviri:
- Set
DockerDesktop . - Register for
Docker hub .
Mushure meizvi, unogona kutarisa kana Docker CLI iri kushanda nekumhanyisa unotevera kuraira kutarisa iyo Docker vhezheni:
docker -v
Tevere, pinda muDocker Hub nekuisa zita rako rekushandisa uye password kana wabvunzwa:
docker login
Kuti ushandise Docker, iwe unofanirwa kunzwisisa pfungwa dzemifananidzo uye midziyo.
▍Mifananidzo
Mufananidzo chinhu chakaita sepurani ine mirairo yekuunganidza mudziyo. Iyi ndiyo isingachinjiki snapshot yemashandisirwo efaira system uye marongero. Vagadziri vanogona kugovera mifananidzo zviri nyore.
# Вывод сведений обо всех образах
docker images
Uyu murairo uchaburitsa tafura ine musoro unotevera:
REPOSITORY TAG IMAGE ID CREATED SIZE
---
Tevere tichatarisa mimwe mienzaniso yemirairo mune imwe fomati - kutanga pane murairo une chirevo, uyezve muenzaniso wezvainogona kubuda.
▍ Containers
Mugaba ipakeji inogoneka ine zvese zvinodiwa kuti umhanye application. Chikumbiro neiyi nzira inogara ichishanda zvakafanana, zvisinei neiyo hupfumi: munzvimbo iri yega uye munzvimbo imwechete. Icho chiripo ndechekuti zviitiko zvemufananidzo mumwechete zvinotangwa munzvimbo dzakasiyana.
# Перечисление всех контейнеров
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
---
▍Tags
Tagi chiratidzo cheimwe shanduro yemufananidzo.
▍Kureva nekukurumidza kuDocker mirairo
Heino mhedziso yemamwe anowanzo shandiswa Docker mirairo.
chikwata
Pfungwa
kushanda
Image
Kuvaka chifananidzo kubva kuDockerfile
Image
Image tagging
Image
Kunyora mifananidzo
Mudziyo
Kumhanyisa mudziyo unobva pamufananidzo
Image
Kuisa mufananidzo kune registry
Image
Kurodha mufananidzo kubva kune registry
Mudziyo
Kunyora midziyo
Mufananidzo/mudziyo
Kubvisa midziyo isina kushandiswa uye mifananidzo
▍Dockerfile
Ndinoziva kumhanyisa application yekugadzira munharaunda. Ndine Webpack kumisikidzwa yakagadzirirwa kuvaka yakagadzirira-yakagadzirwa React application. Tevere, ndine murairo unotanga Node.js yakavakirwa server pachiteshi 5000
. Zvinoita seizvi:
npm i # установка зависимостей
npm run build # сборка React-приложения
npm run start # запуск Node-сервера
Izvo zvinofanirwa kucherechedzwa kuti ini handina muenzaniso application yechinhu ichi. Asi pano, yekuyedza, chero yakapusa Node application ichaita.
Kuti ushandise mudziyo, iwe unozofanirwa kupa mirairo kuDocker. Izvi zvinoitwa kuburikidza nefaira inonzi Dockerfile
, iri mumudzi wedhairekitori reprojekiti. Iyi faira, pakutanga, inoita seisinganzwisisike.
Asi zvariinazvo zvinongotsanangura, nemirairo yakakosha, chimwe chinhu chakafanana nekugadzirisa nzvimbo yekushanda. Heino mimwe yemirairo iyi:
KUBVA - Uyu murairo unotanga faira. Inotsanangura mufananidzo wepasi pakavakirwa mudziyo.KOPA -Kukopa mafaera kubva kunzvimbo yemuno kuenda kumudziyo.WORKDIR -Kuisa dhairekitori rekushanda kune inotevera mirairo.RUN - Run mirairo.EXPOSE - Zvirongwa zvePort.ENTRYPOINT - Chiratidzo chemurairo unofanirwa kuurayiwa.
Dockerfile
inogona kutaridzika seizvi:
# Загрузить базовый образ
FROM node:12-alpine
# Скопировать файлы из текущей директории в директорию app/
COPY . app/
# Использовать app/ в роли рабочей директории
WORKDIR app/
# Установить зависимости (команда npm ci похожа npm i, но используется для автоматизированных сборок)
RUN npm ci --only-production
# Собрать клиентское React-приложение для продакшна
RUN npm run build
# Прослушивать указанный порт
EXPOSE 5000
# Запустить Node-сервер
ENTRYPOINT npm run start
Zvichienderana nemufananidzo wepasi waunosarudza, ungangoda kuisa zvimwe zvinotsamira. Icho chokwadi ndechekuti mamwe mabhesi emifananidzo (seNode Alpine Linux) anogadzirwa aine chinangwa chekuita kuti ive compact sezvinobvira. Nekuda kweizvozvo, vangave vasina zvimwe zvezvirongwa zvaunotarisira.
▍Kuvaka, kutara nekumhanyisa mudziyo
Kuungana kwepanzvimbo uye kuvhurwa kwegaba mushure mekunge taita Dockerfile
, mabasa acho ari nyore. Usati wasundira chifananidzo kuDocker Hub, unofanirwa kuchiyedza munharaunda.
▍Musangano
Kutanga iwe unoda kuunganidza latest
).
# Сборка образа
docker build -t <image>:<tag> .
Mushure mekumhanyisa uyu murairo, unogona kuona Docker ichivaka mufananidzo.
Sending build context to Docker daemon 2.88MB
Step 1/9 : FROM node:12-alpine
---> ...выполнение этапов сборки...
Successfully built 123456789123
Successfully tagged <image>:<tag>
Kuvaka kunogona kutora maminetsi akati wandei - zvese zvinoenderana nekuti vangani vanotsamira iwe. Kana iyo kuvaka kwapera, unogona kumhanya kuraira docker images
uye tarisa tsanangudzo yemufananidzo wako mutsva.
REPOSITORY TAG IMAGE ID CREATED SIZE
<image> latest 123456789123 About a minute ago x.xxGB
▍ Tanga
Mufananidzo wakagadzirwa. Izvi zvinoreva kuti iwe unogona kumhanyisa mudziyo unoenderana nawo. Nekuti ini ndinoda kukwanisa kuwana iyo application inoshanda mumudziyo pa localhost:5000
, ini, kuruboshwe rwevaviri 5000:5000
mumurairo unotevera wakaiswa 5000
. Kurutivi rworudyi kune chiteshi chemidziyo.
# Запуск с использованием локального порта 5000 и порта контейнера 5000
docker run -p 5000:5000 <image>:<tag>
Iye zvino kuti mudziyo wagadzirwa uye uchimhanya, unogona kushandisa murairo docker ps
kutarisa ruzivo nezve mudziyo uyu (kana unogona kushandisa murairo docker ps -a
, iyo inoratidza ruzivo pamusoro pemidziyo yese, kwete kungomhanya chete).
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
987654321234 <image> "/bin/sh -c 'npm run…" 6 seconds ago Up 6 seconds 0.0.0.0:5000->5000/tcp stoic_darwin
Kana iwe zvino enda kukero localhost:5000
- iwe unogona kuona peji rekushandisa rinoshanda rinotaridzika chaizvo sepeji rekushandisa rinomhanya munzvimbo yekugadzira.
▍Kumaka uye kutsikisa
Kuti tishandise imwe yemifananidzo yakagadzirwa pane sevha yekugadzira, isu tinofanirwa kukwanisa kudhawunirodha mufananidzo uyu kubva kuDocker Hub. Izvi zvinoreva kuti iwe unofanirwa kutanga wagadzira repository yepurojekiti paDocker Hub. Mushure meizvi, tichava nenzvimbo yatinogona kutumira mufananidzo. Mufananidzo unofanirwa kupihwa zita kuti zita rawo ritange neDocker Hub yedu yekushandisa. Izvi zvinofanira kuteverwa nezita repository. Chero tag inogona kuiswa panoperera zita. Pazasi pane muenzaniso wekutumidza mifananidzo uchishandisa chirongwa ichi.
Iye zvino unogona kuvaka chifananidzo nezita idzva uye shandisa murairo docker push
kuisundidzira kuDocker Hub repository.
docker build -t <username>/<repository>:<tag> .
docker tag <username>/<repository>:<tag> <username>/<repository>:latest
docker push <username>/<repository>:<tag>
# На практике это может выглядеть, например, так:
docker build -t user/app:v1.0.0 .
docker tag user/app:v1.0.0 user/app:latest
docker push user/app:v1.0.0
Kana zvese zvikafamba zvakanaka, chifananidzo chichave chiripo paDocker Hub uye chinogona kuiswa nyore kuseva kana kuendeswa kune vamwe vanogadzira.
Matanho anotevera
Parizvino takaona kuti chikumbiro, muchimiro cheDocker mudziyo, chiri kushanda munharaunda. Isu takaisa mudziyo kuDocker Hub. Zvose izvi zvinoreva kuti isu takatoita fambiro mberi yakanaka kusvika kuchinangwa chedu. Iye zvino tinoda kugadzirisa mimwe mibvunzo miviri:
- Kumisikidza chishandiso cheCI chekuyedza uye kutumira kodhi.
- Kumisikidza sevha yekugadzira kuitira kuti ikwanise kurodha nekumhanyisa kodhi yedu.
Muchiitiko chedu, tinoshandisa
Zvinofanira kucherechedzwa kuti pano unogona kushandisa imwe musanganiswa webasa. Semuenzaniso, panzvimbo yeTravis CI, unogona kushandisa CircleCI kana Github Zviito. Uye panzvimbo yeDigitalOcean - AWS kana Linode.
Takasarudza kushanda naTravis CI, uye ini ndatova nechimwe chinhu chakagadzirirwa mubasa iri. Nokudaro, ikozvino ini ndichataura muchidimbu nezvekuti ndingagadzirira sei basa.
Travis C.I.
Travis CI chishandiso chekuyedza uye kutumira kodhi. Ini handingade kupinda mumatambudziko ekumisikidza Travis CI, sezvo purojekiti yega yega yakasiyana, uye izvi hazvizounze bhenefiti yakawanda. Asi ini ndichavhara izvo zvekutanga kuti iwe utange kana ukafunga kushandisa Travis CI. Kunyangwe iwe ukasarudza Travis CI, CircleCI, Jenkins, kana chimwe chinhu, nzira dzakafanana dzekugadzirisa dzichashandiswa kwese.
Kuti utange neTravis CI, enda ku
Nguva imwe neimwe Travis CI inotangwa, sevha inotangwa iyo inoita mirairo inotsanangurwa mufaira rekugadzirisa, kusanganisira kutumira matavi anoenderana repository.
▍ Hupenyu hwebasa
Travis CI yekumisikidza faira inonzi .travis.yml
uye yakachengetwa mumudziyo weprojekiti, inotsigira pfungwa yezviitiko
apt addons
cache components
before_install
install
before_script
script
before_cache
after_success или after_failure
before_deploy
deploy
after_deploy
after_script
▍Kuedza
Mune iyo faira yekumisikidza ini ndichagadzirisa iyo yemuno Travis CI server. Ndakasarudza Node 12 semutauro uye ndakaudza sisitimu kuti iise zvinotsamira zvinodikanwa kushandisa Docker.
Zvese zvakanyorwa mukati .travis.yml
, ichaitwa kana zvikumbiro zvese zvekudhonza zvaitwa kumapazi ese enzvimbo, kunze kwekunge zvatsanangurwa. Ichi chinhu chinobatsira nekuti zvinoreva kuti isu tinogona kuyedza kodhi yese inouya mudura. Izvi zvinoita kuti uzive kana kodhi yacho yagadzirira kunyorerwa kubazi. master
, uye kuti ichaputsa chirongwa chekuvaka chirongwa. Mukugadzirisa kwepasirese uku, ini ndinoisa zvese munharaunda, mhanyisa iyo Webpack dev server kumashure (ichi chinhu chekufamba kwangu kwebasa), uye mhanyisa bvunzo.
Kana iwe uchida kuti repository yako iratidze mabheji anoratidza kuvharwa kwebvunzo,
Saka hezvino zviri mukati mefaira .travis.yml
:
# Установить язык
language: node_js
# Установить версию Node.js
node_js:
- '12'
services:
# Использовать командную строку Docker
- docker
install:
# Установить зависимости для тестов
- npm ci
before_script:
# Запустить сервер и клиент для тестов
- npm run dev &
script:
# Запустить тесты
- npm run test
Apa ndipo panopera zviito zvinoitwa kumapazi ese erepository uye zvekudhonza zvikumbiro.
▍ Deployment
Zvichienderana nefungidziro yekuti ese otomatiki bvunzo akapedza zvinobudirira, isu tinogona, izvo zvingasarudzika, kuendesa kodhi kune yekugadzira server. Sezvo isu tichida kuita izvi chete kune kodhi kubva kubazi master
, tinopa hurongwa hwakakodzera mirairo mumagadziro ekutumira. Usati waedza kushandisa kodhi yatichazotarisa inotevera mupurojekiti yako, ndinoda kukuyambira kuti unofanirwa kuve uine script chaiyo inodaidzwa kutumirwa.
deploy:
# Собрать Docker-контейнер и отправить его на Docker Hub
provider: script
script: bash deploy.sh
on:
branch: master
Iyo deployment script inogadzirisa matambudziko maviri:
- Vaka, tag uye tumira mufananidzo kuDocker Hub uchishandisa CI chishandiso (munyaya yedu, Travis CI).
- Kuisa chifananidzo pane sevha, kumisa chigadziko chekare uye kutanga chitsva (munyaya yedu, sevha inomhanya paDigitalOcean platform).
Kutanga, iwe unofanirwa kuseta otomatiki maitiro ekuvaka, kumaka, uye kusundira mufananidzo kuDocker Hub. Izvi zvese zvakafanana nezvatakatoita nemaoko, kunze kwekuti isu tinoda zano rekupa akasiyana ma tag kumifananidzo uye otomatiki logins. Ndakaomerwa nedzimwe ruzivo rweiyo deployment script, senge tagging zano, login, SSH kiyi encoding, SSH yekubatanidza kumisikidzwa. Asi rombo rakanaka mukomana wangu akanaka kwazvo nebash, sezvimwe zvinhu zvakawanda. Akandibatsira kunyora script iyi.
Saka, chikamu chekutanga chechinyorwa chiri kurodha chifananidzo kuDocker Hub. Izvi zviri nyore kuita. Chirongwa chekumaka chandakashandisa chinosanganisira kubatanidza git hash uye git tag, kana iripo. Izvi zvinovimbisa kuti tag yakasarudzika uye inoita kuti zvive nyore kuziva gungano payakavakirwa. DOCKER_USERNAME
и DOCKER_PASSWORD
ndiwo mashandisirwo enzvimbo yevashandisi anogona kusetwa uchishandisa iyo Travis CI interface. Travis CI inozogadzirisa data rakadzama kuitira kuti risawira mumaoko asiri iwo.
Heino chikamu chekutanga che script deploy.sh
.
#!/bin/sh
set -e # Остановить скрипт при наличии ошибок
IMAGE="<username>/<repository>" # Образ Docker
GIT_VERSION=$(git describe --always --abbrev --tags --long) # Git-хэш и теги
# Сборка и тегирование образа
docker build -t ${IMAGE}:${GIT_VERSION} .
docker tag ${IMAGE}:${GIT_VERSION} ${IMAGE}:latest
# Вход в Docker Hub и выгрузка образа
echo "${DOCKER_PASSWORD}" | docker login -u "${DOCKER_USERNAME}" --password-stdin
docker push ${IMAGE}:${GIT_VERSION}
Kuti chikamu chechipiri chescript chichava chii chinoenderana zvachose nekuti uri kushandisa muiti upi uye kuti kubatana kwairi kwakarongwa sei. Mune yangu, sezvo ini ndichishandisa Digital Ocean, ini ndinoshandisa mirairo yekubatanidza kune server aws
, zvichingoenda zvakadaro.
Kugadzika sevha hakuna kunyanya kuoma. Saka, ini ndakagadzira droplet zvichienderana nemufananidzo wepasi. Izvo zvinofanirwa kucherechedzwa kuti iyo system yandakasarudza inoda imwe-nguva yekumisikidzwa kweDocker uye imwe-nguva yemanyorero kuvhurwa kweDocker. Ndakashandisa Ubuntu 18.04 kuisa Docker, saka kana uri kushandisa Ubuntu kuita zvimwe chete, unogona kungotevera.
Ini handisi kutaura pano nezve yakananga mirairo yebasa, sezvo chikamu ichi chinogona kusiyana zvakanyanya mumakesi akasiyana. Ini ndichangopa hurongwa hwekuita huchaitwa mushure mekubatanidza kuburikidza neSSH kune server iyo iyo purojekiti ichaiswa:
- Isu tinofanirwa kutsvaga chigaba chiri kushanda parizvino tochimisa.
- Ipapo iwe unofanirwa kuvhura mudziyo mutsva kumashure.
- Iwe unozofanirwa kuseta sevha yenzvimbo chiteshi kuti
80
- izvi zvinokutendera kuti uise saiti pane kero sengeexample.com
, pasina kutsanangura chiteshi, pane kushandisa kero yakafananaexample.com:5000
. - Chekupedzisira, unofanirwa kudzima zvese midziyo yekare nemifananidzo.
Heino kuenderera kwe script.
# Найти ID работающего контейнера
CONTAINER_ID=$(docker ps | grep takenote | cut -d" " -f1)
# Остановить старый контейнер, запустить новый, очистить систему
docker stop ${CONTAINER_ID}
docker run --restart unless-stopped -d -p 80:5000 ${IMAGE}:${GIT_VERSION}
docker system prune -a -f
Zvimwe zvinhu zvekuteerera
Zvinogoneka kuti kana iwe ukabatanidza kune sevha kuburikidza neSSH kubva kuTravis CI, iwe uchaona yambiro iyo inokudzivirira kuti urege kuenderera mberi nekuisa sezvo sisitimu ichimirira mhinduro yemushandisi.
The authenticity of host '<hostname> (<IP address>)' can't be established.
RSA key fingerprint is <key fingerprint>.
Are you sure you want to continue connecting (yes/no)?
Ndakadzidza kuti kiyi yetambo inogona kuvharidzirwa mu base64 kuitira kuti ichengetedze muchimiro iyo inogona kushandiswa nayo zviri nyore uye nekuvimbika. Padanho rekuisa, unogona kudhidha kiyi yeruzhinji woinyorera kufaira known_hosts
kuti ubvise kukanganisa kuri pamusoro.
echo <public key> | base64 # выводит <публичный ключ, закодированный в base64>
Mukuita, uyu murairo unogona kutaridzika seizvi:
echo "123.45.67.89 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAklOUpkDHrfHY17SbrmTIpNLTGK9Tjom/BWDSU
GPl+nafzlHDTYW7hdI4yZ5ew18JH4JW9jbhUFrviQzM7xlELEVf4h9lFX5QVkbPppSwg0cda3
Pbv7kOdJ/MTyBlWXFCR+HAo3FXRitBqxiX1nKhXpHAZsMciLq8V6RjsNAQwdsdMFvSlVK/7XA
t3FaoJoAsncM1Q9x5+3V0Ww68/eIFmb1zuUFljQJKprrX88XypNDvjYNby6vw/Pb0rwert/En
mZ+AW4OZPnTPI89ZPmVMLuayrD2cE86Z/il8b+gw3r3+1nKatmIkjn2so1d01QraTlMqVSsbx
NrRFi9wrf+M7Q== [email protected]" | base64
Uye hezvino izvo zvazvinoburitsa - base64 encoded tambo:
MTIzLjQ1LjY3Ljg5IHNzaC1yc2EgQUFBQUIzTnphQzF5YzJFQUFBQUJJd0FBQVFFQWtsT1Vwa0RIcmZIWTE3U2JybVRJcE5MVEdLOVRqb20vQldEU1UKR1BsK25hZnpsSERUWVc3aGRJNHlaNWV3MThKSDRKVzlqYmhVRnJ2aVF6TTd4bEVMRVZmNGg5bEZYNVFWa2JQcHBTd2cwY2RhMwpQYnY3a09kSi9NVHlCbFdYRkNSK0hBbzNGWFJpdEJxeGlYMW5LaFhwSEFac01jaUxxOFY2UmpzTkFRd2RzZE1GdlNsVksvN1hBCnQzRmFvSm9Bc25jTTFROXg1KzNWMFd3NjgvZUlGbWIxenVVRmxqUUpLcHJyWDg4WHlwTkR2allOYnk2dncvUGIwcndlcnQvRW4KbVorQVc0T1pQblRQSTg5WlBtVk1MdWF5ckQyY0U4NlovaWw4YitndzNyMysxbkthdG1Ja2puMnNvMWQwMVFyYVRsTXFWU3NieApOclJGaTl3cmYrTTdRPT0geW91QGV4YW1wbGUuY29tCg==
Heino murairo wataurwa pamusoro apa
install:
- echo < публичный ключ, закодированный в base64> | base64 -d >> $HOME/.ssh/known_hosts
Iyo nzira imwechete inogona kushandiswa nekiyi yakavanzika paunenge uchigadzira chinongedzo, nekuti ungangoda kiyi yakavanzika kuti uwane sevha. Paunenge uchishanda nekiyi, iwe unongoda kuve nechokwadi kuti yakachengetedzwa zvakachengeteka muTravis CI nharaunda inosiyana uye kuti haina kuratidzwa chero kupi.
Chimwe chinhu chekucherechedza ndechekuti ungangoda kumhanyisa script yese yekuendesa semutsara mumwe, semuenzaniso - ne doctl
. Izvi zvingada kushanda nesimba.
doctl compute ssh <droplet> --ssh-command "все команды будут здесь && здесь"
TLS/SSL uye Mutoro Kuyera
Mushure mekunge ndaita zvese zvataurwa pamusoro apa, dambudziko rekupedzisira randakasangana naro nderekuti sevha yanga isina SSL. Sezvo ini ndichishandisa sevha yeNode.js, kuitira kumanikidza
Ini ndanga ndisingade kuita zvese izvi SSL kumisikidzwa nemaoko, saka ini ndangogadzira yekuremedza balancer uye ndakarekodha zvinyorwa zvayo muDNS. Panyaya yeDigitalOcean, semuenzaniso, kugadzira otomatiki-yekuzvisaina chitupa pane inoremerwa balancer iri nyore, yemahara uye nekukurumidza maitiro. Iyi nzira ine bhenefiti yakawedzerwa inoita kuti zvive nyore kwazvo kumisikidza SSL pane akawanda maseva anomhanya kuseri kwekuremerwa balancer kana zvichidikanwa. Izvi zvinobvumira maseva pachawo kuti asa "funga" nezve SSL zvachose, asi panguva imwechete shandisa chiteshi semazuva ese. 80
. Saka kumisikidza SSL pane chiyero chemutoro zviri nyore uye zviri nyore pane dzimwe nzira dzekumisa SSL.
Iye zvino unogona kuvhara ese madoko pane sevha anogamuchira anouya akabatana - kunze kwechiteshi 80
, yaishandiswa kutaurirana neinotakura zvinhu, uye chiteshi 22
yeSSH. Nekuda kweizvozvo, kuedza kuwana zvakananga sevha pane chero zviteshi kunze kweaya maviri kunokundikana.
Migumisiro
Mushure mekunge ndaita zvese zvandaitaura nezvazvo mune ino chinyorwa, kana iyo Docker chikuva kana pfungwa dzeotomatiki dzeCI / CD cheni dzakandityisa zvakare. Ini ndakakwanisa kuseta inoenderera yekubatanidza ketani, panguva iyo iyo kodhi inoedzwa isati yaenda mukugadzirwa uye iyo kodhi inongoiswa paserver. Izvi zvese zvichiri zvitsva kwandiri, uye ndine chokwadi chekuti pane nzira dzekuvandudza yangu otomatiki mafambiro uye kuita kuti inyatsoita. Saka kana mune mazano panyaya iyi, ndapota ndizivisei.
PS Mune yedu
Vanodiwa vaverengi! Iwe unoshandisa CI/CD tekinoroji mumapurojekiti ako?
Source: www.habr.com