Si të instaloni dhe konfiguroni GoCD në Ubuntu 22.04


GoCD është një sistem shpërndarjeje dhe automatizimi i vazhdueshëm me burim të hapur. GoCD shkëlqen në modelimin e flukseve komplekse të punës CD për reagime të shpejta me konstruktet e tij të modelimit, ekzekutimin paralel dhe menaxhimin e varësisë. GoCD ju ndihmon të zgjidhni një tubacion të prishur duke gjurmuar çdo ndryshim nga angazhimi në vendosje në kohë reale. GoCD ju lejon të krahasoni me lehtësi dy ndërtime dhe të vendosni çdo version të aplikacionit që dëshironi. Ekosistemi GoCD përbëhet nga një server GoCD dhe një agjent GoCD. GoCD kontrollon gjithçka, të tilla si ekzekutimi i ndërfaqes së përdoruesit të bazuar në ueb dhe administrimi dhe ofrimi i vendeve të punës për agjentin. Agjentët Go janë përgjegjës për drejtimin e punëve dhe vendosjeve.

Ky tutorial do t'ju mësojë të instaloni dhe konfiguroni GoCD në një server Ubuntu 22.04.

Parakushtet

  1. A server running Ubuntu 22.04 with a minimum of 2GB of RAM.

  2. A non-sudo user with root privileges.

  3. The uncomplicated Firewall(UFW) is enabled and running.

  4. Fully Qualified Domain Names(FQDN) pointing to your server. We will be using gocd.example.com for our tutorial.

  5. Ensure that everything is updated.

    $ sudo apt update && sudo apt upgrade
    

Hapi 1 - Konfiguro Firewall

Para se të instaloni ndonjë paketë, hapi i parë është konfigurimi i murit të zjarrit për të hapur portat për HTTP, HTTPS dhe Synapse.

Kontrolloni statusin e murit të zjarrit.

$ sudo ufw status

Ju duhet të shihni diçka si më poshtë.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

Hapni portat HTTP, HTTPS dhe GoCD në murin e zjarrit.

$ sudo ufw allow 8153
$ sudo ufw allow http
$ sudo ufw allow https

Kontrolloni statusin përsëri për të konfirmuar.

$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
8153                       ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443                        ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
8153 (v6)                  ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

Hapi 2 - Instaloni GoCD

Importoni çelësin GPG të GoCDs në sistem.

$ curl https://download.gocd.org/GOCD-GPG-KEY.asc | gpg --dearmor | sudo tee /usr/share/keyrings/gocd.gpg > /dev/null 2>&1

Shtoni depon e GoCD në sistem.

$ echo "deb [signed-by=/usr/share/keyrings/gocd.gpg] https://download.gocd.org /" | sudo tee /etc/apt/sources.list.d/gocd.list

Përditësoni listën e depove të sistemit.

$ sudo apt update

Instaloni GoCD. Kjo do të instalojë gjithashtu versionin më të fundit të përputhshëm të Java Runtime (JRE) që kërkohet për të ekzekutuar GoCD.

$ sudo apt install -y go-server

Përpara se të vazhdojmë në hapin tjetër, duhet të krijojmë një drejtori për të ruajtur objektet. Artifaktet mund të ruhen ose në të njëjtin disk në të cilin është instaluar serveri ose në një disk të dedikuar ose bllok ruajtjeje. Ne do ta ruajmë atë në të njëjtin disk për këtë tutorial.

Krijo një direktori për të ruajtur objektet.

$ sudo mkdir /opt/artifacts

Jepni pronësinë GoCD në drejtorinë e objekteve.

$ sudo chown -R go:go /opt/artifacts

Hapi 3 - Instaloni dhe konfiguroni PostgreSQL

GoCD dërgohet me bazën e të dhënave H2 si parazgjedhje e cila nuk kërkon konfigurim. Nëse po përdorni GoCD në një mjedis prodhimi, rekomandohet PostgreSQL.

Ubuntu 22.04 vjen me një version më të vjetër të PostgreSQL. Ne do të instalojmë Postgres 15 për tutorialin tonë.

Instaloni depon për PostgreSQL.

$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

Importoni çelësin PostgreSQL GPG.

$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/apt.postgresql.org.gpg >/dev/null

Përditësoni listën e depove të sistemit.

$ sudo apt update

Instaloni serverin PostgreSQL 15.

$ sudo apt install -y postgresql postgresql-contrib

Kontrolloni statusin e shërbimit.

$ sudo systemctl status postgresql
? postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
     Active: active (exited) since Mon 2022-12-19 06:49:50 UTC; 2h 26min ago
   Main PID: 3536 (code=exited, status=0/SUCCESS)
        CPU: 1ms

Dec 19 06:49:50 gocd systemd[1]: Starting PostgreSQL RDBMS...
Dec 19 06:49:50 gocd systemd[1]: Finished PostgreSQL RDBMS.

Hyni në shell PostgreSQL.

$ sudo -i -u postgres psql

Krijo një bazë të dhënash të re për GoCD.

postgres=# CREATE DATABASE "gocd" ENCODING="UTF8" TEMPLATE="template0";

Krijoni një përdorues të ri të bazës së të dhënave me një fjalëkalim të fortë.

postgres=# CREATE ROLE "gocd_database_user" PASSWORD 'gocd_database_password' NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN;

Jepni të drejtat përdoruesit për të përdorur bazën e të dhënave.

postgres=# GRANT ALL PRIVILEGES ON DATABASE "gocd" TO "gocd_database_user";

Jepini përdoruesit privilegje të superpërdoruesit. Përdoruesi i bazës së të dhënave kërkon privilegjet e superpërdoruesit vetëm herën e parë që fillon serveri GoCD. Kjo kërkohet të bëhet sepse duhet të krijohen fillimisht shtesat pgcrypto dhe citext. Privilegji i superpërdoruesit mund të revokohet pas fillimit të parë të serverit GoCD pasi nuk do të jetë më i nevojshëm.

postgres-=# ALTER ROLE "gocd_database_user" SUPERUSER;

Dilni nga Postgres Shell.

postgres=# \q

Hapi i fundit në konfigurimin e PostgreSQL për GoCD është ruajtja e kredencialeve të bazës së të dhënave në drejtorinë e konfigurimit të serverit GoCD.

Krijoni skedarin db.properties dhe hapeni për redaktim.

$ sudo nano /etc/go/db.properties

Vendos kodin e mëposhtëm në të.

db.driver=org.postgresql.Driver
db.url=jdbc:postgresql://localhost:5432/gocd
db.user=gocd_database_user
db.password=gocd_database_password

Ruani skedarin duke shtypur Ctrl + X dhe duke futur Y kur ju kërkohet.

Hapi 4 - Konfiguro GoCD

Përpara se të konfigurojmë GoCD, duhet të nisim serverin GoCD.

Nisni serverin GoCD.

$ sudo systemctl start go-server

Kontrolloni statusin e serverit.

$ sudo systemctl status go-server
? go-server.service - go-server
     Loaded: loaded (/etc/systemd/system/go-server.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2022-12-15 08:53:10 UTC; 8s ago
    Process: 8475 ExecStart=/usr/share/go-server/bin/go-server start sysd (code=exited, status=0/SUCCESS)
   Main PID: 8541 (wrapper-linux-x)
      Tasks: 43 (limit: 2237)
     Memory: 566.7M
        CPU: 11.873s
     CGroup: /system.slice/go-server.service
             ??8541 /usr/share/go-server/bin/../wrapper/wrapper-linux-x86-64 /usr/share/go-server/wrapper-config/wrapper.conf wrapper.syslog.ident=go-server wrapper.pidfile=/var/lib/go-server/run/go-server.pi>
             ??8556 /usr/share/go-server/jre/bin/java --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED -Xms512m -Xmx1024m -XX:MaxMetaspaceSize=400m .....

Hapni pultin e GoCD duke vizituar URL-në http://:8153/. Për të hyrë në pultin e GoCD nëpërmjet një lidhjeje të sigurt, vizitoni URL-në https://:8154. Injoroni gabimin që tregon se certifikatat janë të pavlefshme. Është gjithmonë e rëndësishme të hyni në panelin e kontrollit përmes një lidhjeje të sigurt.

Ju do të merrni faqen e mëposhtme.

Para se ta përdorni, duhet të konfiguroni GoCD. Shkoni te menyja Admin >> Konfigurimi i Serverit nga shiriti i sipërm i navigimit.

Shtoni URL-në e faqes në fushat e dhëna dhe shtypni butonin Ruaj.

Klikoni opsionin Menaxhimi i Artifakteve nga menyja e majtë dhe futni vendndodhjen e drejtorisë së objekteve të krijuar më parë. Zgjidh opsionin Lejo artefaktet e pastrimit automatik për të menaxhuar hapësirën dhe për të vendosur kapacitetin sipas kërkesave tuaja. Klikoni butonin Ruaj kur të mbaroni.

Megjithatë, opsioni i fshirjes automatike nuk merr një kopje rezervë të objekteve tuaja të vjetra. Për të marrë manualisht një kopje rezervë dhe më pas për të fshirë objektet e vjetra, çaktivizoni fshirjen automatike duke hequr zgjedhjen e opsionit Lejo artifaktet e pastrimit automatik.

Më pas, duhet të konfigurojmë opsionet e emailit për të marrë njoftime me email nga GoCD.

Klikoni butonin Dërgo email testues për të kontrolluar cilësimet dhe më pas kliko butonin Ruaj për të përfunduar.

Nëse dëshironi të caktoni kohëzgjatjen e afatit të punës, mund ta bëni këtë duke vizituar seksionin Konfigurimi i skadimit të punës.

Rinisni serverin GoCD për të aplikuar ndryshimet.

$ sudo systemctl restart go-server

Hapi 5 - Konfiguro vërtetimin e GoCD

Si parazgjedhje, GoCD është i aksesueshëm për këdo, por ju mund të konfiguroni vërtetimin duke përdorur një skedar fjalëkalimi ose LDAP. Në këtë tutorial, ne do të konfigurojmë vërtetimin e bazuar në fjalëkalim.

Instaloni veglat Apache në mënyrë që të krijojmë një skedar të koduar fjalëkalimi duke përdorur komandën htpasswd.

$ sudo apt install apache2-utils

Krijoni një skedar fjalëkalimi duke përdorur vërtetimin Bcrypt. Flamuri -c krijon një skedar të ri, flamuri -B vendos vërtetimin e Bcrypt dhe goadmin është emri i përdoruesit.

$ sudo htpasswd -B -c /etc/go/passwd_auth navjot

Jepni fjalëkalimin kur të kërkohet.

New password:
Re-type new password:
Adding password for user navjot

Mund të shtoni shumë përdorues duke përdorur të njëjtën komandë, por hiqni flamurin -c sepse skedari ekziston tashmë. Përdorimi përsëri i flamurit -c do të mbishkruajë skedarin ekzistues dhe do të zëvendësojë përdoruesin ekzistues me një të ri.

$ sudo htpasswd -B /etc/go/passwd_auth gouser1

Hapi tjetër në autentifikimin është konfigurimi i vendndodhjes së fjalëkalimit në pjesën e pasme të GoCD. Vizito seksionin Admin >> Siguria >> Konfigurimi i autorizimit nga shiriti i sipërm i navigimit.

Kliko butonin Shto dhe jep çdo ID. Zgjidhni Plugina e vërtetimit të skedarit të fjalëkalimit për GoCD për ID-në e shtojcës nga menyja rënëse dhe futni shtegun e skedarit të fjalëkalimit. Më pas, klikoni butonin Kontrollo lidhjen për të verifikuar nëse GoCD mund të qaset në skedar për qëllime vërtetimi.

Për përdoruesin e parë, mbani të pazgjedhur opsionin Lejo vetëm përdoruesit e njohur të identifikohen. Klikoni butonin Ruaj për të përfunduar.

Së shpejti do t'ju kërkohet të rifreskoni GoCD dhe do të çoheni në faqen e hyrjes.

Futni kredencialet e krijuara më parë dhe shtypni butonin Identifikohu për të vazhduar. Vizitoni seksionin Administrja >> Siguria >> Menaxhimi i përdoruesve nga shiriti i sipërm i navigimit.

Kontrolloni kutinë ADMIN SYSTEM për të shënuar përdoruesin si administrator. Tani, kthehu te seksioni Admin >> Siguria >> Konfigurimi i autorizimit dhe kliko butonin Modifiko në listën e skedarëve të fjalëkalimit.

Kontrolloni opsionin Lejo që vetëm përdoruesit e njohur të identifikohen. Tani e tutje, ju duhet të krijoni një përdorues të ri nëpërmjet skedarit htpasswd dhe më pas t'i importoni ato së pari nga faqja e serverit.

Le të krijojmë një përdorues të dytë.

$ sudo htpasswd -B /etc/go/passwd_auth gouser1
New password:
Re-type new password:
Adding password for user gouser1

Vizito seksionin Admin >> Siguria >> Menaxhimi i përdoruesve nga menyja e sipërme e navigimit dhe kliko butonin Importo përdorues. Futni emrin e përdoruesit gouser1 për të kërkuar përdoruesin.

Zgjidhni përdoruesin dhe kliko butonin Import për të shtuar përdoruesin.

Tani, mund të identifikoheni duke përdorur edhe përdoruesin e dytë. Përsëriteni procesin për më shumë përdorues.

Hapi 6 - Instaloni Nginx

Ubuntu 22.04 vjen me një version më të vjetër të Nginx. Për të instaluar versionin më të fundit, duhet të shkarkoni depon zyrtare të Nginx.

Importoni çelësin e nënshkrimit Nginxs.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Shtoni depon për versionin e qëndrueshëm Nginxs.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list

Përditësoni depot e sistemit.

$ sudo apt update

Instaloni Nginx.

$ sudo apt install nginx

Verifikoni instalimin.

$ nginx -v
nginx version: nginx/1.22.1

Nisni serverin Nginx.

$ sudo systemctl start nginx

Hapi 7 - Instaloni SSL

Duhet të instalojmë Certbot për të gjeneruar certifikatën SSL. Mund ta instaloni Certbot duke përdorur depon e Ubuntus ose të kapni versionin më të fundit duke përdorur mjetin Snapd. Ne do të përdorim versionin Snapd.

Ubuntu 22.04 vjen me Snapd të instaluar si parazgjedhje. Ekzekutoni komandat e mëposhtme për të siguruar që versioni juaj i Snapd është i përditësuar.

$ sudo snap install core
$ sudo snap refresh core

Instaloni Certbot.

$ sudo snap install --classic certbot

Përdorni komandën e mëposhtme për të siguruar që komanda Certbot mund të ekzekutohet duke krijuar një lidhje simbolike në drejtorinë /usr/bin.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Ekzekutoni komandën e mëposhtme për të gjeneruar një Certifikatë SSL.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m  -d gocd.example.com

Komanda e mësipërme do të shkarkojë një certifikatë në drejtorinë /etc/letsencrypt/live/gocd.example.com në serverin tuaj.

Krijo një certifikatë grupi Diffie-Hellman.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Bëni një ekzekutim të thatë të procesit për të kontrolluar nëse rinovimi SSL po funksionon mirë.

$ sudo certbot renew --dry-run

Nëse nuk shihni asnjë gabim, jeni gati. Certifikata juaj do të rinovohet automatikisht.

Hapi 8 - Konfiguro Nginx

Hapni skedarin /etc/nginx/nginx.conf për modifikim.

$ sudo nano /etc/nginx/nginx.conf

Shtoni rreshtin e mëposhtëm përpara rreshtit include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size  64;

Ruani skedarin duke shtypur Ctrl + X dhe duke futur Y kur ju kërkohet.

Krijoni dhe hapni skedarin /etc/nginx/conf.d/gocd.conf për modifikim.

$ sudo nano /etc/nginx/conf.d/gocd.conf

Vendos kodin e mëposhtëm në të.

server {
  # Redirect any http requests to https
  listen         80;
  listen         [::]:80;
  server_name    gocd.example.com;
  return 301     https://$host$request_uri;
}

map $http_upgrade $connection_upgrade {
  default upgrade;
  '' close;
}

server {
  listen                    443 ssl http2;
  listen                    [::]:443 ssl http2;
  server_name               gocd.example.com;

  access_log                /var/log/nginx/gocd.access.log;
  error_log                 /var/log/nginx/gocd.error.log;

  # TLS configuration
  ssl_certificate           /etc/letsencrypt/live/gocd.example.com/fullchain.pem;
  ssl_certificate_key       /etc/letsencrypt/live/gocd.example.com/privkey.pem;
  ssl_trusted_certificate   /etc/letsencrypt/live/gocd.example.com/chain.pem;
  ssl_protocols             TLSv1.2 TLSv1.3;

  ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384';
  ssl_prefer_server_ciphers on;
  ssl_session_cache         shared:SSL:50m;
  ssl_session_timeout       1d;

  # OCSP Stapling ---
  # fetch OCSP records from URL in ssl_certificate and cache them
  ssl_stapling on;
  ssl_stapling_verify on;
  ssl_dhparam /etc/ssl/certs/dhparam.pem;

  # Proxy everything over to the GoCD server
  location / {
    proxy_set_header        Host            $host;
    proxy_set_header        X-Real-IP       $remote_addr;
    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header        X-Forwarded-Proto $scheme;
    proxy_http_version      1.1;
    proxy_set_header        Upgrade $http_upgrade;
    proxy_set_header        Connection $connection_upgrade;
    proxy_pass              http://localhost:8153/;

    # To be able to upload artifacts larger than default size of 1mb, ensure that you set this up to a large value.
    # setting to `0` will disable checking for body size.
    # See https://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size
    client_max_body_size  10000m;

    # If you are intending to allow downloading of large artifacts (> 1GB) from GoCD you may need to adjust one of the
    # following two proxy buffering settings to prevent downloads failing for slow clients due to server idle timeouts.
    #
    # See https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_buffering
    #
    # 1) disable the buffering of responses entirely (enabled by default on NGINX) OR
    # proxy_buffering off;
    #
    # 2) increase the max temporary file size (setting to `0` will disable the limit)
    # proxy_max_temp_file_size 2048m;
  }
}

Ruaje skedarin duke shtypur Ctrl + X dhe duke futur Y kur të kërkohet pasi të përfundojë.

Verifikoni sintaksën e skedarit të konfigurimit Nginx.

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Rinisni shërbimin Nginx.

$ sudo systemctl restart nginx

Tani mund të hyni në panelin e kontrollit GoCD nëpërmjet URL-së https://gocd.example.com.

Hapi 9 - Instaloni GoCD Agent

Agjentët GoCD janë punëtorët përgjegjës për ekzekutimin e të gjitha detyrave. Kur zbulohet një ndryshim në burim, gazsjellësi aktivizohet dhe punët u caktohen punëtorëve në dispozicion për ekzekutim. Agjenti më pas ekzekuton detyrën dhe raporton statusin përfundimtar pas ekzekutimit.

Për të ekzekutuar tubacionin, duhet të konfigurohet të paktën një agjent. Le të instalojmë agjentin GoCD në serverin GoCD.

Ne kemi importuar tashmë depon e GoCD, prandaj instaloni direkt agjentin GoCD.

$ sudo apt install go-agent

Nisni shërbimin e agjentit GoCD.

$ sudo systemctl start go-agent

Vizito skedën Agjentët në pultin e GoCD dhe duhet të shohësh agjentin të listuar dhe aktivizuar automatikisht.

Mund të filloni të përdorni shërbimin GoCD CI/CD nga këtu.

konkluzioni

Kjo përfundon tutorialin tonë, ku mësuat se si të instaloni dhe konfiguroni GoCD në një server Ubuntu 22.04. Nëse keni ndonjë pyetje, postojini ato në komentet më poshtë.