CI/CD yn Github Actions ar gyfer prosiect Fflasg+Angular

CI/CD yn Github Actions ar gyfer prosiect Fflasg+Angular
Yn yr erthygl hon, byddaf yn rhannu fy mhrofiad o sefydlu CI / CD gan ddefnyddio Panel Rheoli Plesk a Github Actions. Heddiw, byddwn yn dysgu sut i ddefnyddio prosiect syml gyda'r enw syml "Helloworld". Mae wedi'i ysgrifennu yn fframwaith Fflasg Python, gyda gweithwyr Seleri a blaen Angular 8.

Dolenni i gadwrfeydd: cefn, Pen blaen.

Yn rhan gyntaf yr erthygl, byddwn yn edrych ar ein prosiect a'i rannau. Yn yr ail, byddwn yn darganfod sut i sefydlu Plesk a gosod yr estyniadau a'r cydrannau angenrheidiol (DB, RabbitMQ, Redis, Docker, ac ati).

Yn y drydedd ran, byddwn o'r diwedd yn darganfod sut i sefydlu piblinell ar gyfer defnyddio ein prosiect i weinydd mewn amgylchedd dev a prod. Ac yna byddwn yn lansio'r wefan ar y gweinydd.

Ac ie, anghofiais gyflwyno fy hun. Fy enw i yw Oleg Borzov, rwy'n ddatblygwr pentwr llawn yn y tîm CRM ar gyfer rheolwyr morgeisi yn Domclick.

Trosolwg o'r prosiect

Yn gyntaf, gadewch i ni edrych ar ddau ystorfa prosiect - backend a blaen - a mynd dros y cod.

Cefn: Fflasg+seleri

Ar gyfer y rhan gefn, cymerais griw sy'n eithaf poblogaidd ymhlith datblygwyr Python: y fframwaith Fflasg (ar gyfer yr API) a Seleri (ar gyfer y ciw tasg). Defnyddir SQLAchemy fel ORM. Defnyddir alembig ar gyfer mudo. Ar gyfer dilysu JSON mewn dolenni - Marshmallow.

В storfeydd mae ffeil Readme.md gyda disgrifiad manwl o'r strwythur a chyfarwyddiadau ar gyfer rhedeg y prosiect.

Web Rhan API eithaf syml, yn cynnwys 6 beiro:

  • /ping - i wirio argaeledd;
  • dolenni ar gyfer cofrestru, awdurdodi, dad-awdurdodi a chael defnyddiwr awdurdodedig;
  • handlen e-bost sy'n rhoi tasg yn y ciw Seleri.

Rhan seleri hyd yn oed yn haws, dim ond un broblem sydd send_mail_task.

Yn y ffolder /conf mae dau is-ffolder:

  • docker gyda dwy Dockerfile (base.dockerfile i adeiladu delwedd sylfaen sy'n newid yn anaml a Dockerfile ar gyfer prif gynulliadau);
  • .env_files - gyda ffeiliau gyda newidynnau amgylchedd ar gyfer gwahanol amgylcheddau.

Mae pedair ffeil cyfansoddi docwr wrth wraidd y prosiect:

  • docker-compose.local.db.yml codi cronfa ddata leol i'w datblygu;
  • docker-compose.local.workers.yml ar gyfer codi'r gweithiwr yn lleol, cronfa ddata, Redis a RabbitMQ;
  • docker-compose.test.yml cynnal profion yn ystod y defnydd;
  • docker-compose.yml ar gyfer lleoli.

A'r ffolder olaf y mae gennym ddiddordeb ynddo - .ci-cd. Mae'n cynnwys sgriptiau cregyn i'w defnyddio:

  • deploy.sh — lansio mudo a lleoli. Yn rhedeg ar y gweinydd ar ôl adeiladu a rhedeg profion yn Github Actions;
  • rollback.sh - dychwelyd cynwysyddion i fersiwn flaenorol y gwasanaeth;
  • curl_tg.sh - anfon hysbysiadau lleoli i Telegram.

Frontend ar Angular

Ystorfa gyda blaen llawer symlach na Beck. Mae'r blaen yn cynnwys tair tudalen:

  • Prif dudalen gyda ffurflen ar gyfer anfon e-bost a botwm ymadael.
  • Tudalen mewngofnodi.
  • Tudalen gofrestru.

Mae'r brif dudalen yn edrych yn ascetic:

CI/CD yn Github Actions ar gyfer prosiect Fflasg+Angular
Mae dwy ffeil wrth y gwraidd Dockerfile и docker-compose.yml, yn ogystal â'r ffolder cyfarwydd .ci-cd gydag ychydig yn llai o sgriptiau nag yn y storfa gefn (sgriptiau wedi'u tynnu ar gyfer cynnal profion).

Dechrau prosiect yn Plesk

Gadewch i ni ddechrau trwy sefydlu Plesk a chreu tanysgrifiad ar gyfer ein gwefan.

Gosod estyniadau

Yn Plesk, mae angen pedwar estyniad arnom:

  • Docker rheoli ac arddangos statws cynwysyddion yn weledol ym mhanel gweinyddol Plesk;
  • Git i ffurfweddu'r cam lleoli ar y gweinydd;
  • Let's Encrypt cynhyrchu (ac adnewyddu'n awtomatig) tystysgrifau TLS am ddim;
  • Firewall i ffurfweddu hidlo traffig sy'n dod i mewn.

Gallwch eu gosod trwy banel gweinyddol Plesk yn yr adran Estyniadau:

CI/CD yn Github Actions ar gyfer prosiect Fflasg+Angular
Ni fyddwn yn ystyried y gosodiadau manwl ar gyfer estyniadau, bydd y gosodiadau diofyn yn eu gwneud at ein dibenion demo.

Creu tanysgrifiad a gwefan

Nesaf, mae angen i ni greu tanysgrifiad ar gyfer ein gwefan helloworld.ru ac ychwanegu'r is-barth dev.helloworld.ru yno.

  1. Creu tanysgrifiad ar gyfer y parth helloworld.ru a nodi'r cyfrinair mewngofnodi ar gyfer defnyddiwr y system:

    CI/CD yn Github Actions ar gyfer prosiect Fflasg+Angular
    Ticiwch y blwch ar waelod y dudalen Sicrhewch y parth gyda Let's Encryptos ydym am sefydlu HTTPS ar gyfer y wefan:

    CI/CD yn Github Actions ar gyfer prosiect Fflasg+Angular

  2. Nesaf, yn y tanysgrifiad hwn, crëwch subdomain dev.helloworld.ru (y gallwch chi hefyd roi tystysgrif TLS am ddim ar ei gyfer):

    CI/CD yn Github Actions ar gyfer prosiect Fflasg+Angular

Gosod Cydrannau Gweinydd

Mae gennym weinydd gyda OS Debian Stretch 9.12 a gosod panel rheoli Plesk Obsidian 18.0.27.

Mae angen i ni osod a ffurfweddu ar gyfer ein prosiect:

  • PostgreSQL (yn ein hachos ni, bydd un gweinydd gyda dwy gronfa ddata ar gyfer amgylcheddau dev a prod).
  • RabbitMQ (yr un, yr un enghraifft gyda gwahanol vhosts ar gyfer amgylcheddau).
  • Dau achos Redis (ar gyfer amgylcheddau dev a prod).
  • Cofrestrfa Docwyr (ar gyfer storio delweddau Docker adeiledig yn lleol).
  • UI ar gyfer cofrestrfa Docker.

PostgreSQL

Mae Plesk eisoes yn dod gyda PostgreSQL DBMS, ond nid y fersiwn ddiweddaraf (ar adeg ysgrifennu Plesk Obsidian cefnogi Fersiynau Postgres 8.4–10.8). Rydyn ni eisiau'r fersiwn ddiweddaraf ar gyfer ein cais (12.3 ar adeg ysgrifennu hwn), felly byddwn yn ei osod â llaw.

Mae yna lawer o gyfarwyddiadau manwl ar gyfer gosod Postgres ar Debian ar y we (enghraifft), felly ni fyddaf yn eu disgrifio'n fanwl, byddaf yn rhoi'r gorchmynion:

wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'

sudo apt-get update
sudo apt-get install postgresql postgresql-contrib

O ystyried bod gan PostgreSQL osodiadau diofyn eithaf cymedrol, mae angen cywiro'r ffurfweddiad. Bydd hyn yn ein helpu ni cyfrifiannell: mae angen i chi yrru ym mharamedrau eich gweinydd a disodli'r gosodiadau yn y ffeil /etc/postgresql/12/main/postgresql.confi'r rhai a gynigir. Dylid nodi yma nad yw cyfrifianellau o'r fath yn fwled hud, a dylid tiwnio'r sylfaen yn fwy manwl gywir, yn seiliedig ar gymhlethdod eich caledwedd, eich cymhwysiad a'ch ymholiad. Ond mae hyn yn ddigon i ddechrau.

Yn ogystal â'r gosodiadau a gynigir gan y gyfrifiannell, rydym hefyd yn newid i mewn postgresql.confy porthladd rhagosodedig 5432 i un arall (yn ein hesiampl - 53983).

Ar ôl newid y ffeil ffurfweddu, ailgychwyn postgresql-server gyda'r gorchymyn:

service postgresql restart

Rydym wedi gosod a ffurfweddu PostgreSQL. Nawr, gadewch i ni greu cronfa ddata, defnyddwyr ar gyfer amgylcheddau dev a prod, a rhoi hawliau i ddefnyddwyr reoli'r gronfa ddata:

$ su - postgres
postgres:~$ create database hw_dev_db_name;
CREATE DATABASE
postgres:~$ create user hw_dev_db_user with password 'hw_dev_db_password';
CREATE ROLE
postgres:~$ grant ALL privileges ON database hw_dev_db_name to hw_dev_db_user;
GRANT
postgres:~$ create database hw_prod_db_name;
CREATE DATABASE
postgres:~$ create user hw_prod_db_user with password 'hw_prod_db_password';
CREATE ROLE
postgres:~$ grant ALL privileges ON database hw_prod_db_name to hw_prod_db_user;
GRANT

RabbitMQ

Gadewch i ni symud ymlaen i osod RabbitMQ, brocer negeseuon ar gyfer Seleri. Mae ei osod ar Debian yn eithaf syml:

wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb
sudo dpkg -i erlang-solutions_1.0_all.deb

sudo apt-get update
sudo apt-get install erlang erlang-nox

sudo add-apt-repository 'deb http://www.rabbitmq.com/debian/ testing main'
wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add -

sudo apt-get update
sudo apt-get install rabbitmq-server

Ar ôl gosod, mae angen inni greu vhosts, defnyddwyr a rhoi'r hawliau angenrheidiol:

sudo rabbitmqctl add_user hw_dev_amqp_user hw_dev_amqp_password 
sudo rabbitmqctl set_user_tags hw_dev_amqp_user administrator
sudo rabbitmqctl add_vhost hw_dev_vhost
sudo rabbitmqctl set_permissions -p hw_dev_vhost hw_dev_amqp_user ".*" ".*" ".*"

sudo rabbitmqctl add_user hw_prod_amqp_user hw_prod_amqp_password 
sudo rabbitmqctl set_user_tags hw_prod_amqp_user administrator
sudo rabbitmqctl add_vhost hw_prod_vhost
sudo rabbitmqctl set_permissions -p hw_prod_vhost hw_prod_amqp_user ".*" ".*" ".*"

Redis

Nawr, gadewch i ni osod a ffurfweddu'r gydran olaf ar gyfer ein cais - Redis. Bydd yn cael ei ddefnyddio fel cefndir ar gyfer storio canlyniadau tasgau Seleri.

Byddwn yn codi dau gynhwysydd Docker gyda Redis ar gyfer amgylcheddau dev a prod gan ddefnyddio'r estyniad Docker ar gyfer Plesk.

  1. Rydyn ni'n mynd i Plesk, ewch i'r adran Estyniadau, edrychwch am yr estyniad Docker a'i osod (mae angen fersiwn am ddim arnom):

    CI/CD yn Github Actions ar gyfer prosiect Fflasg+Angular

  2. Ewch i'r estyniad gosod, dewch o hyd i'r ddelwedd trwy'r chwiliad redis bitnami a gosod y fersiwn diweddaraf:

    CI/CD yn Github Actions ar gyfer prosiect Fflasg+Angular

  3. Rydyn ni'n mynd i mewn i'r cynhwysydd wedi'i lawrlwytho ac yn addasu'r ffurfweddiad: nodwch y porthladd, yr uchafswm maint RAM a ddyrannwyd, y cyfrinair yn y newidynnau amgylchedd, a gosodwch y cyfaint:

    CI/CD yn Github Actions ar gyfer prosiect Fflasg+Angular

  4. Rydyn ni'n perfformio camau 2-3 ar gyfer y cynhwysydd prod, yn y gosodiadau dim ond y paramedrau rydyn ni'n eu newid: porthladd, cyfrinair, maint RAM a llwybr i'r ffolder cyfaint ar y gweinydd:

    CI/CD yn Github Actions ar gyfer prosiect Fflasg+Angular

Cofrestrfa Docwyr

Yn ogystal â gwasanaethau sylfaenol, byddai'n braf rhoi eich storfa ddelwedd Docker eich hun ar y gweinydd. Yn ffodus, mae gofod gweinydd bellach yn eithaf rhad (yn sicr yn rhatach na thanysgrifiad DockerHub), ac mae'r broses o sefydlu ystorfa breifat yn syml iawn.

Rydyn ni eisiau cael:

Ar gyfer hyn:

  1. Gadewch i ni greu dau is-barth yn Plesk yn ein tanysgrifiad: docker.helloworld.ru a docker-ui.helloworld.ru, a ffurfweddu tystysgrifau Let's Encrypt ar eu cyfer.
  2. Ychwanegwch y ffeil i'r ffolder subdomain docker.helloworld.ru docker-compose.yml gyda chynnwys fel hyn:
    version: "3"
    
    services:
      docker-registry:
        image: "registry:2"
        restart: always
        ports:
          - "53985:5000"
        environment:
          REGISTRY_AUTH: htpasswd
          REGISTRY_AUTH_HTPASSWD_REALM: basic-realm
          REGISTRY_AUTH_HTPASSWD_PATH: /auth/.htpasswd
          REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /data
        volumes:
          - ./.docker-registry.htpasswd:/auth/.htpasswd
          - ./data:/data
    
      docker-registry-ui:
        image: konradkleine/docker-registry-frontend:v2
        restart: always
        ports:
          - "53986:80"
        environment:
          VIRTUAL_HOST: '*, https://*'
          ENV_DOCKER_REGISTRY_HOST: 'docker-registry'
          ENV_DOCKER_REGISTRY_PORT: 5000
        links:
          - 'docker-registry'
    

  3. O dan SSH, byddwn yn cynhyrchu'r ffeil .htpasswd ar gyfer awdurdodiad Sylfaenol yn ystorfa Docker:
    htpasswd -bBc .htpasswd hw_docker_admin hw_docker_password
  4. Casglu a chodi cynwysyddion:
    docker-compose up -d
  5. Ac mae angen inni ailgyfeirio Nginx i'n cynwysyddion. Gellir gwneud hyn trwy Plesk.

Mae angen gwneud y camau canlynol ar gyfer yr is-barthau docker.helloworld.ru a docker-ui.helloworld.ru:

Yn adran Offer Dev ein gwefan ewch i Rheolau Dirprwy Docker:

CI/CD yn Github Actions ar gyfer prosiect Fflasg+Angular
Ac ychwanegu rheol at draffig dirprwyol sy'n dod i mewn i'n cynhwysydd:

CI/CD yn Github Actions ar gyfer prosiect Fflasg+Angular

  1. Rydym yn gwirio y gallwn fewngofnodi i'n cynhwysydd o'r peiriant lleol:
    $ docker login docker.helloworld.ru -u hw_docker_admin -p hw_docker_password
    WARNING! Using --password via the CLI is insecure. Use --password-stdin.
    Login Succeeded
  2. Gadewch i ni hefyd wirio gweithrediad yr is-barth docker-ui.helloworld.ru:

    CI/CD yn Github Actions ar gyfer prosiect Fflasg+Angular
    Pan gliciwch ar Pori ystorfeydd, bydd y porwr yn dangos ffenestr awdurdodi lle bydd angen i chi nodi enw defnyddiwr a chyfrinair yr ystorfa. Ar ôl hynny, byddwn yn cael ein trosglwyddo i dudalen gyda rhestr o ystorfeydd (am y tro, bydd yn wag i chi):

    CI/CD yn Github Actions ar gyfer prosiect Fflasg+Angular

Agor porthladdoedd yn Plesk Firewall

Ar ôl gosod a ffurfweddu'r cydrannau, mae angen i ni agor porthladdoedd fel bod y cydrannau'n hygyrch o gynwysyddion Docker a'r rhwydwaith allanol.

Gadewch i ni weld sut i wneud hyn gan ddefnyddio'r estyniad Firewall ar gyfer Plesk a osodwyd gennym yn gynharach.

  1. Mynd i Offer a Gosodiadau > Gosodiadau > Mur Tân:
    CI/CD yn Github Actions ar gyfer prosiect Fflasg+Angular
  2. Mynd i Addasu Rheolau Mur Tân Plesk > Ychwanegu Rheol Custom ac agorwch y porthladdoedd TCP canlynol ar gyfer yr is-rwydwaith Docker (172.0.0.0 / 8):
    RabbitMQ: 1883, 4369, 5671-5672, 25672, 61613-61614
    Coch: 32785, 32786

    CI/CD yn Github Actions ar gyfer prosiect Fflasg+Angular

  3. Byddwn hefyd yn ychwanegu rheol a fydd yn agor porthladdoedd PostgreSQL a phaneli rheoli RabbitMQ i'r byd y tu allan:

    CI/CD yn Github Actions ar gyfer prosiect Fflasg+Angular

  4. Cymhwyswch y rheolau gan ddefnyddio'r botwm Gwneud Cais Newidiadau:

    CI/CD yn Github Actions ar gyfer prosiect Fflasg+Angular

Sefydlu CI/CD yn Github Actions

Gadewch i ni gyrraedd y rhan fwyaf diddorol - sefydlu piblinell integreiddio barhaus a chyflwyno ein prosiect i'r gweinydd.

Bydd y biblinell hon yn cynnwys dwy ran:

  • adeiladu delwedd a rhedeg profion (ar gyfer y backend) - ar ochr Github;
  • rhedeg mudo (ar gyfer y backend) a defnyddio cynwysyddion - ar y gweinydd.

Anfon i Plesk

Gadewch i ni ddelio â'r ail bwynt yn gyntaf (gan fod yr un cyntaf yn dibynnu arno).

Byddwn yn ffurfweddu'r broses leoli gan ddefnyddio'r estyniad Git ar gyfer Plesk.

Ystyriwch enghraifft gydag amgylchedd Prod ar gyfer ystorfa Backend.

  1. Rydyn ni'n mynd i danysgrifiad ein gwefan Helloworld ac yn mynd i'r is-adran Git:

    CI/CD yn Github Actions ar gyfer prosiect Fflasg+Angular

  2. Mewnosod dolen i'n cadwrfa Github yn y maes "Remote Git repository" a newid y ffolder rhagosodedig httpdocs i un arall (ee. /httpdocs/hw_back):

    CI/CD yn Github Actions ar gyfer prosiect Fflasg+Angular

  3. Copïwch yr allwedd Gyhoeddus SSH o'r cam blaenorol a ychwanegu ei mewn gosodiadau Github.
  4. Cliciwch OK ar y sgrin yng ngham 2, ac ar ôl hynny byddwn yn cael ein hailgyfeirio i dudalen ystorfa yn Plesk. Nawr mae angen i ni ffurfweddu'r ystorfa i gael ei diweddaru ar ymrwymiadau i'r brif gangen. I wneud hyn, ewch i Gosodiadau Cadwrfa ac arbed y gwerth Webhook URL (bydd ei angen arnom yn nes ymlaen wrth sefydlu Github Actions):

    CI/CD yn Github Actions ar gyfer prosiect Fflasg+Angular

  5. Yn y maes Camau Gweithredu ar y sgrin o'r paragraff blaenorol, nodwch y sgript i lansio'r defnydd:
    cd {REPOSITORY_ABSOLUTE_PATH}
    .ci-cd/deploy.sh {ENV} {DOCKER_REGISTRY_HOST} {DOCKER_USER} {DOCKER_PASSWORD} {TG_BOT_TOKEN} {TG_CHAT_ID} 

    lle:

    {REPOSITORY_ABSOLUTE_PATH} - llwybr i ffolder prod yr ystorfa backend ar y gweinydd;
    {ENV} - amgylchedd (dev/prod), yn ein hachos ni prod;
    {DOCKER_REGISTRY_HOST} — llu ein cadwrfa docwr
    {TG_BOT_TOKEN} — tocyn bot Telegram;
    {TG_CHAT_ID} - ID y sgwrs / sianel ar gyfer anfon hysbysiadau.

    Enghraifft o sgript:

    cd /var/www/vhosts/helloworld.ru/httpdocs/hw_back/
    .ci-cd/deploy.sh dev docker.helloworld.ru docker_user docker_password 12345678:AAbcdEfghCH1vGbCasdfSAs0K5PALDsaw -1001234567890
  6. Ychwanegu defnyddiwr o'n tanysgrifiad i'r grŵp Docker (fel y gallant reoli cynwysyddion):
    sudo usermod -aG docker helloworld_admin

Mae'r amgylchedd datblygu ar gyfer y storfa backend a'r frontend yn cael eu sefydlu yn yr un modd.

Piblinell lleoli yn Github Actions

Gadewch i ni symud ymlaen i sefydlu rhan gyntaf ein piblinell CI/CD yn Github Actions.

Backend

Disgrifir y biblinell yn ffeil deploy.yml.

Ond cyn ei dosrannu, gadewch i ni lenwi'r newidynnau Cyfrinachol sydd eu hangen arnom yn Github. I wneud hyn, ewch i Gosodiadau -> Cyfrinachau:

  • DOCKER_REGISTRY - llu ein cadwrfa Docker (docker.helloworld.ru);
  • DOCKER_LOGIN - mewngofnodi i gadwrfa'r Docker;
  • DOCKER_PASSWORD - cyfrinair iddo;
  • DEPLOY_HOST — gwesteiwr lle mae panel gweinyddol Plesk ar gael (enghraifft: heloworld.com: 8443 neu 123.4.56.78:8443);
  • DEPLOY_BACK_PROD_TOKEN - arwydd i'w ddefnyddio i'r storfa prod ar y gweinydd (cawsom ef yn Deployment in Plesk t. 4);
  • DEPLOY_BACK_DEV_TOKEN - tocyn ar gyfer ei ddefnyddio i'r ystorfa datblygu ar y gweinydd.

Mae'r broses leoli yn syml ac yn cynnwys tri phrif gam:

  • adeiladu a chyhoeddi y ddelw yn ein cadwrfa;
  • cynnal profion mewn cynhwysydd yn seiliedig ar ddelwedd newydd;
  • lleoli i'r amgylchedd dymunol yn dibynnu ar y gangen (dev / meistr).

frontend

Y ffeil deploy.yml ar gyfer yr ystorfa flaen ychydig yn wahanol i un Beck. Nid oes ganddo gam gyda rhedeg profion ac mae'n newid enwau tocynnau i'w defnyddio. Gyda llaw, mae angen llenwi'r cyfrinachau ar gyfer y storfa flaen ar wahân.

Gosod safle

Proxy traffig trwy Nginx

Wel, rydyn ni wedi dod i'r diwedd. Dim ond i ffurfweddu dirprwy traffig sy'n dod i mewn ac allan i'n cynhwysydd trwy Nginx y mae'n dal i fod. Rydym eisoes wedi ymdrin â'r broses hon yng ngham 5 o sefydlu Cofrestrfa Docker. Dylid ailadrodd yr un peth ar gyfer y rhannau cefn a blaen mewn amgylcheddau dev a phrod.

Byddaf yn darparu sgrinluniau o'r gosodiadau.

Backend

CI/CD yn Github Actions ar gyfer prosiect Fflasg+Angular

frontend

CI/CD yn Github Actions ar gyfer prosiect Fflasg+Angular
Eglurhad pwysig. Bydd pob URL yn cael ei ddirprwyo i'r cynhwysydd blaen, ac eithrio'r rhai sy'n dechrau /api/ - byddant yn cael eu procsi i'r cynhwysydd cefn (felly yn y cynhwysydd cefn, rhaid i bob triniwr ddechrau /api/).

Canlyniadau

Nawr dylai ein gwefan fod ar gael yn helloworld.ru a dev.helloworld.ru (prod- a dev-environments, yn y drefn honno).

Yn gyfan gwbl, fe wnaethom ddysgu sut i baratoi cymhwysiad syml yn Fflasg ac Angular a sefydlu piblinell yn Github Actions i'w gyflwyno i weinydd sy'n rhedeg Plesk.

Byddaf yn dyblygu'r dolenni i'r storfeydd gyda'r cod: cefn, Pen blaen.

Ffynhonnell: hab.com

Ychwanegu sylw