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
-
A server running Ubuntu 22.04 with a minimum of 2GB of RAM.
-
A non-sudo user with root privileges.
-
The uncomplicated Firewall(UFW) is enabled and running.
-
Fully Qualified Domain Names(FQDN) pointing to your server. We will be using
gocd.example.com
for our tutorial. -
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://
. Për të hyrë në pultin e GoCD nëpërmjet një lidhjeje të sigurt, vizitoni URL-në https://
. 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ë.