Kako instalirati Jenkins na CentOS 7
Jenkins je popularan open source CI (Continuous Integration) alat koji se naširoko koristi za razvoj projekata, implementaciju i automatizaciju. Ovaj članak će
Kontinuirana integracija je praksa razvoja softvera DevOps koja programerima omogućuje često spajanje modificiranog koda u zajedničko spremište mnogo puta dnevno. Nakon svakog spajanja izvode se automatske izrade i testovi kako bi se otkrili problemi u kodu. Omogućuje programerima da brzo pronađu i riješe pogreške kako bi poboljšali kvalitetu softvera i osigurali kontinuiranu isporuku softvera. Prebacivanje s Concoursea i tamo vrlo je jednostavno jer svu svoju konfiguraciju čuva u deklarativnim datotekama koje se mogu provjeriti u kontroli verzija. Također pruža web korisničko sučelje koje interaktivno prikazuje informacije o izgradnji.
Svakako zamijenite sva pojavljivanja 192.0.2.1
i ci.example.com
sa svojom stvarnom javnom IP adresom Vultr i stvarnim imenom domene.
Ažurirajte svoj osnovni sustav pomoću vodiča Kako ažurirati Ubuntu 16.04 . Nakon što je vaš sustav ažuriran, nastavite s instalacijom PostgreSQL-a.
PostgreSQL je objektni relacijski sustav baze podataka. Concourse pohranjuje svoje podatke cjevovoda u PostgreSQL bazu podataka. Dodajte PostgreSQL spremište.
echo "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt update
Instalirajte PostgreSQL poslužitelj baze podataka.
sudo apt -y install postgresql
Pokrenite PostgreSQL poslužitelj i omogućite mu automatsko pokretanje prilikom pokretanja.
sudo systemctl start postgresql
sudo systemctl enable postgresql
Promijenite lozinku za zadanog korisnika PostgreSQL.
sudo passwd postgres
Prijavite se kao korisnik PostgreSQL:
sudo su - postgres
Stvorite novog PostgreSQL korisnika za Concourse CI.
createuser concourse
Napomena : Zadani korisnik PostgreSQL može se koristiti za provjeru autentičnosti baze podataka, ali se preporučuje korištenje namjenskog korisnika za provjeru autentičnosti Concourse baze podataka u proizvodnim postavkama.
PostgreSQL pruža ljusku za pokretanje upita u bazi podataka. Prijeđite na ljusku PostgreSQL.
psql
Postavite lozinku za novostvorenog korisnika baze podataka Concourse.
ALTER USER concourse WITH ENCRYPTED password 'DBPassword';
Važno : Zamijenite DBPassword
jakom lozinkom. Zabilježite lozinku jer će biti potrebna kasnije u vodiču.
Napravite novu bazu podataka za Concourse.
CREATE DATABASE concourse OWNER concourse;
Izađite iz psql
ljuske.
\q
Prijeđite na sudo korisnika s trenutnog postgres
korisnika.
exit
Preuzmite najnoviju verziju izvršne datoteke Concourse i pohranite je /usr/bin
tako da se može izravno izvršiti. Najnovija verzija binarnih datoteka Concourse i Fly može se pronaći na stranici za preuzimanje Concourse . Nova izdanja su vrlo česta. Zamijenite vezu u nastavku novom vezom za najnoviju verziju.
sudo wget https://github.com/concourse/concourse/releases/download/v3.10.0/concourse_linux_amd64 -O /usr/bin/concourse
Slično, preuzmite najnoviju verziju izvršne datoteke fly i pohranite je u /usr/bin
.
sudo wget https://github.com/concourse/concourse/releases/download/v3.10.0/fly_linux_amd64 -O /usr/bin/fly
Fly je sučelje naredbenog retka koje se koristi za povezivanje s ATC API-jem Concourse CI. Fly je dostupan za više platformi kao što su Linux, Windows i MacOS.
Dodijelite dopuštenje za izvršavanje preuzetim concourse
i fly
binarnim datotekama.
sudo chmod +x /usr/bin/concourse /usr/bin/fly
Provjerite rade li Concourse i Fly ispravno tako da provjerite njihovu verziju.
concourse -version
fly -version
RSA parovi ključeva pružaju način za šifriranje komunikacije između komponenti Concoursea.
Da bi Concourse radio, moraju se generirati najmanje tri para ključeva. Za šifriranje podataka sesije generirajte session_signing_key
. Ovaj ključ će također koristiti TSA za potpisivanje zahtjeva koje upućuje ATC-u. Da biste osigurali TSA SSH poslužitelj, generirajte tsa_host_key
. Konačno, generirajte worker_key
za svakog radnika.
Izradite novi direktorij za pohranu ključeva i konfiguracije povezanih s Concourse CI.
sudo mkdir /opt/concourse
Generirajte potrebne ključeve.
sudo ssh-keygen -t rsa -q -N '' -f /opt/concourse/session_signing_key
sudo ssh-keygen -t rsa -q -N '' -f /opt/concourse/tsa_host_key
sudo ssh-keygen -t rsa -q -N '' -f /opt/concourse/worker_key
Autorizirajte javni ključ radnika kopiranjem njegovog sadržaja u authorized_worker_keys
datoteku.
sudo cp /opt/concourse/worker_key.pub /opt/concourse/authorized_worker_keys
Concourse pruža dvije odvojene komponente koje je potrebno pokrenuti: web i worker. Pokrenite web Concourse.
sudo concourse web \
--basic-auth-username admin \
--basic-auth-password StrongPass \
--session-signing-key /opt/concourse/session_signing_key \
--tsa-host-key /opt/concourse/tsa_host_key \
--tsa-authorized-keys /opt/concourse/authorized_worker_keys \
--postgres-user=concourse \
--postgres-password=DBPassword \
--postgres-database=concourse \
--external-url http://192.0.2.1:8080
Promijenite korisničko ime i lozinku basic-auth
ako želite. Provjerite je li put do datoteka s ključevima ispravan i osigurajte ispravnu vrijednost za korisničko ime i lozinku u konfiguraciji baze podataka PostgreSQL.
Napomena : ATC će slušati zadani port, 8080
a TSA će slušati port 2222
. Ako autentifikacija nije poželjna, proslijedite --no-really-i-dont-want-any-auth
opciju nakon uklanjanja osnovnih opcija autentifikacije.
Nakon što se web poslužitelj pokrene, prikazat će se sljedeći izlaz.
{"timestamp":"1503657859.661247969","source":"tsa","message":"tsa.listening","log_level":1,"data":{}}
{"timestamp":"1503657859.666907549","source":"atc","message":"atc.listening","log_level":1,"data":{"debug":"127.0.0.1:8079","http":"0.0.0.0:8080"}}
Zaustavite poslužitelj za sada jer se još nekoliko stvari mora postaviti.
Pokrenite Concourse CI Worker.
sudo concourse worker \
--work-dir /opt/concourse/worker \
--tsa-host 127.0.0.1 \
--tsa-public-key /opt/concourse/tsa_host_key.pub \
--tsa-worker-private-key /opt/concourse/worker_key
Gornja naredba pretpostavlja da TSA radi na lokalnom hostu i sluša zadani port 2222
.
Iako se web Concourse i worker mogu lako pokrenuti pomoću gornjih naredbi, preporučuje se korištenje Systemd-a za upravljanje poslužiteljem.
Korištenje usluge Systemd za upravljanje aplikacijom osigurava da se aplikacija automatski pokreće u slučaju kvarova i prilikom pokretanja. Concourse poslužitelj ne uzima podatke iz bilo koje konfiguracijske datoteke, ali može pristupiti podacima iz varijabli okruženja. Umjesto postavljanja globalnih varijabli okruženja, stvorite novu datoteku za pohranu varijabli okruženja, a zatim proslijedite varijable Concourse CI-u pomoću usluge Systemd.
Izradite novu datoteku okruženja za Concourse web.
sudo nano /opt/concourse/web.env
Popunite datoteku.
CONCOURSE_SESSION_SIGNING_KEY=/opt/concourse/session_signing_key
CONCOURSE_TSA_HOST_KEY=/opt/concourse/tsa_host_key
CONCOURSE_TSA_AUTHORIZED_KEYS=/opt/concourse/authorized_worker_keys
CONCOURSE_POSTGRES_USER=concourse
CONCOURSE_POSTGRES_PASSWORD=DBPassword
CONCOURSE_POSTGRES_DATABASE=concourse
CONCOURSE_BASIC_AUTH_USERNAME=admin
CONCOURSE_BASIC_AUTH_PASSWORD=StrongPass
CONCOURSE_EXTERNAL_URL=http://192.0.2.1:8080
Change the username and password of the BASIC_AUTH
if desired. Make sure that the path to the key files are correct and make sure that the correct value for username and password in the PostgreSQL database configuration is provided.
Similarly, create an environment file for the worker.
sudo nano /opt/concourse/worker.env
Populate the file.
CONCOURSE_WORK_DIR=/opt/concourse/worker
CONCOURSE_TSA_WORKER_PRIVATE_KEY=/opt/concourse/worker_key
CONCOURSE_TSA_PUBLIC_KEY=/opt/concourse/tsa_host_key.pub
CONCOURSE_TSA_HOST=127.0.0.1
As the environment files contain usernames and passwords, change its permissions so that it cannot be accessed by other users.
sudo chmod 600 /opt/concourse/*.env
Now create a new user for Concourse to run the web environment. This will ensure that the web server is running in an isolated environment.
sudo useradd concourse
Give the concourse user ownership over Concourse CI file's directory.
sudo chown -R concourse:concourse /opt/concourse
Create a new systemd service file for the Concourse web service.
sudo nano /etc/systemd/system/concourse-web.service
Populate the file.
[Unit]
Description=Concourse CI web server
[Service]
Type=simple
User=concourse
Group=concourse
Restart=on-failure
EnvironmentFile=/opt/concourse/web.env
ExecStart=/usr/bin/concourse web
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=concourse_web
[Install]
WantedBy=multi-user.target
Save and close the file. Create a new service file for the Concourse worker service.
sudo nano /etc/systemd/system/concourse-worker.service
Populate the file.
[Unit]
Description=Concourse CI worker process
[Service]
Type=simple
Restart=on-failure
EnvironmentFile=/opt/concourse/worker.env
ExecStart=/usr/bin/concourse worker
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=concourse_worker
[Install]
WantedBy=multi-user.target
The web and worker service can now be started directly.
sudo systemctl start concourse-web concourse-worker
To enable the worker and web process to automatically start at boot time, run the following.
sudo systemctl enable concourse-worker concourse-web
To check the status of services, run the following.
sudo systemctl status concourse-worker concourse-web
If the service is not started, or in the FAILED
state, remove the cache from the /tmp
directory.
sudo rm -rf /tmp/*
Restart the services.
sudo systemctl restart concourse-worker concourse-web
Notice that this time the services have started correctly. The output upon verifying the status of the services will be similar to the following.
[user@vultr ~]$ sudo systemctl status concourse-worker concourse-web
● concourse-worker.service - Concourse CI worker process
Loaded: loaded (/etc/systemd/system/concourse-worker.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2017-08-26 07:27:37 UTC; 55s ago
Main PID: 3037 (concourse)
CGroup: /system.slice/concourse-worker.service
└─3037 /usr/bin/concourse worker
Aug 26 07:27:42 vultr.guest concourse_worker[3037]: {"timestamp":"1503732462.934722900","source":"tsa","message":"t...""}}
Aug 26 07:27:42 vultr.guest concourse_worker[3037]: {"timestamp":"1503732462.941227913","source":"guardian","messag...0"}}
...
● concourse-web.service - Concourse CI web server
Loaded: loaded (/etc/systemd/system/concourse-web.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2017-08-26 07:27:37 UTC; 55s ago
Main PID: 3036 (concourse)
CGroup: /system.slice/concourse-web.service
└─3036 /usr/bin/concourse web
Aug 26 07:27:57 vultr.guest concourse_web[3036]: {"timestamp":"1503732477.925554752","source":"tsa","message":"tsa...ve"}}
Aug 26 07:28:02 vultr.guest concourse_web[3036]: {"timestamp":"1503732482.925430775","source":"tsa","message":"tsa...ve"}}
...
Hint: Some lines were ellipsized, use -l to show in full.
Once the server is started, the web interface of the Concourse CI can be accessed by going to http://192.0.2.1:8080
in any browser. Log in using the username and password provided in the environment file.
To connect to the server using Fly, run the following.
fly -t my-ci login -c http://192.0.2.1:8080
Gornja naredba se koristi za početnu prijavu na poslužitelj. -t
koristi se za davanje ciljanog naziva. zamijenite my-ci
bilo kojim željenim nazivom cilja. Gornja naredba će se prijaviti u zadani tim main
. Tražit će korisničko ime i lozinku navedene u datoteci okruženja.
Izlaz će izgledati ovako.
[user@vultr ~]$ fly -t my-ci login -c http://192.0.2.1:8080
logging in to team 'main'
username: admin
password:
target saved
Ciljna prijava bit će spremljena na jedan dan. Nakon toga će isteći.
Da se odmah odjavim.
fly -t my-ci logout
Fly se može koristiti za prijavu na poslužitelj izvan mreže, ali samo ako poslužitelj ima javnu IP adresu i dostupan joj je izvan mreže. Windows ili MacOS binarni program može se preuzeti sa stranice za preuzimanje ili s web korisničkog sučelja poslužitelja.
Prijave i druge informacije poslane putem web korisničkog sučelja na Concourse poslužitelj nisu zaštićene. Veza nije šifrirana. Nginx reverse proxy može se postaviti s besplatnim SSL-om Let's Encrypt.
Instalirajte Nginx.
sudo apt -y install nginx
Pokrenite Nginx i omogućite mu automatsko pokretanje prilikom pokretanja.
sudo systemctl start nginx
sudo systemctl enable nginx
Dodajte Certbot repozitorij.
sudo add-apt-repository --yes ppa:certbot/certbot
sudo apt-get update
Instalirajte Certbot, klijentsku aplikaciju za Let's Encrypt CA.
sudo apt -y install certbot
Napomena : Za dobivanje certifikata od Let's Encrypt CA, domena za koju se certifikati trebaju generirati mora biti usmjerena prema poslužitelju. Ako nije, izvršite potrebne promjene u DNS zapisima domene i pričekajte da se DNS širi prije nego što ponovno uputite zahtjev za certifikatom. Certbot provjerava autoritet domene prije pružanja certifikata.
Generirajte SSL certifikate.
sudo certbot certonly --webroot -w /var/www/html -d ci.example.com
Generirani certifikati će vjerojatno biti pohranjeni u /etc/letsencrypt/live/ci.example.com/
imeniku. SSL certifikat će biti pohranjen kao, fullchain.pem
a privatni ključ će biti pohranjen kao privkey.pem
.
Let's Encrypt certifikati istječu za 90 dana, stoga se preporučuje automatska obnova za certifikate postavljena pomoću cronjobsa. Cron je sistemska usluga koja se koristi za izvršavanje periodičnih zadataka.
Otvorite cron datoteku posla.
sudo crontab -e
Dodajte sljedeći redak na kraj datoteke.
30 5 * * * /usr/bin/certbot renew --quiet
Gornji cron posao će se izvoditi svaki dan u 5:30 ujutro. Ako potvrda istekne, automatski će se obnoviti.
Napravite novi virtualni host.
sudo nano /etc/nginx/sites-available/concourse
Popunite datoteku.
server {
listen 80;
server_name ci.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443;
server_name ci.example.com;
ssl_certificate /etc/letsencrypt/live/ci.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ci.example.com/privkey.pem;
ssl on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/concourse.access.log;
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_pass http://localhost:8080;
proxy_read_timeout 90;
proxy_redirect http://localhost:8080 https://ci.example.com;
}
}
Napomena : Zamijenite ci.example.com
stvarnom domenom.
Aktivirajte konfiguracijsku datoteku.
sudo ln -s /etc/nginx/sites-available/concourse /etc/nginx/sites-enabled/concourse
Uredite datoteku okruženja stvorenu za web concourse.
sudo nano /opt/concourse/web.env
Promijenite vrijednost CONCOURSE_EXTERNAL_URL
i također dodajte još dva retka na kraju datoteke.
CONCOURSE_EXTERNAL_URL=https://ci.example.com
CONCOURSE_BIND_IP=127.0.0.1
CONCOURSE_BIND_PORT=8080
Spremite datoteku i ponovno pokrenite Concourse Web, Worker i Nginx.
sudo systemctl restart concourse-worker concourse-web nginx
Svi podaci koji se šalju u i iz preglednika sada su zaštićeni SSL enkripcijom.
Jenkins je popularan open source CI (Continuous Integration) alat koji se naširoko koristi za razvoj projekata, implementaciju i automatizaciju. Ovaj članak će
Korištenje drugog sustava? Uvod Kontinuirana integracija je praksa razvoja softvera DevOps koja omogućuje programerima da često spajaju
Korištenje drugog sustava? Ansible je alat otvorenog koda za automatizaciju zadataka. Upravlja konfiguracijom vaših Linux i Windows poslužitelja. Radi
Korištenje drugog sustava? GoCD je open source sustav kontinuirane isporuke i automatizacije. Omogućuje vam modeliranje složenih tijekova rada koristeći svoj paralelni an
Iako je SaltStack izvrstan alat za istovremeno izvođenje operacija na mnogim poslužiteljima, on također podržava unaprijed definirane konfiguracijske postavke po hostu pohranjene u
Korištenje drugog sustava? Ansible je alat otvorenog koda za automatizaciju zadataka. Upravlja konfiguracijom vaših Linux i Windows poslužitelja. Radi
Uvod Drone je automatizirana, kontinuirana platforma za testiranje i isporuku koja radi na vašoj vlastitoj infrastrukturi. Drone podržava bilo koji jezik, uslugu o
Što je Load Balancer Balanseri opterećenja sjede ispred vaše aplikacije i distribuiraju dolazni promet na više instanci vaše aplikacije. Fo
Korištenje drugog sustava? Foreman je besplatni alat otvorenog koda koji vam pomaže u konfiguraciji i upravljanju fizičkim i virtualnim poslužiteljima. Forema
SaltStack ili Salt je popularno rješenje za upravljanje konfiguracijom otvorenog koda koje se može koristiti za implementaciju daljinskog izvršavanja, upravljanja konfiguracijom, cod
Uvod Strider CD je platforma za kontinuiranu implementaciju otvorenog koda. Aplikacija je napisana u Node.js i koristi MongoDB kao pozadinu za pohranu. Korak
Uvod Chocolatey u Windows donosi upravljanje paketima koje olakšava administraciju softvera i ovisnosti na Linuxu. Možete brzo i jednostavno
Što je Packer? Packer je alat za obradu slika poslužitelja koji je razvio HashiCorp. Slika poslužitelja; ili alternativno, nepromjenjiva infrastruktura; je popularna alternativa
Korištenje drugog sustava? Uvod Kontinuirana integracija je praksa razvoja softvera DevOps koja omogućuje programerima da često spajaju
Postoji mnogo načina za automatizaciju procesa postavljanja i konfiguriranja kutije. Iz bilo kojeg razloga, ako se cijeli naš sustav u ovom trenutku sastoji od pravednih
Korištenje drugog sustava? Foreman je besplatni alat otvorenog koda koji vam pomaže u konfiguraciji i upravljanju fizičkim i virtualnim poslužiteljima. Forema
SaltStack je program za upravljanje konfiguracijom temeljen na pythonu koji je optimiziran za automatizaciju konfiguracijskih datoteka, implementacije i svega ostalog
Umjetna inteligencija nije u budućnosti, ovdje je upravo u sadašnjosti. U ovom blogu Pročitajte kako su aplikacije umjetne inteligencije utjecale na različite sektore.
Jeste li i vi žrtva DDOS napada i zbunjeni ste metodama prevencije? Pročitajte ovaj članak kako biste riješili svoje upite.
Možda ste čuli da hakeri zarađuju mnogo novca, ali jeste li se ikada zapitali kako zarađuju toliki novac? raspravimo.
Želite li vidjeti revolucionarne izume Googlea i kako su ti izumi promijenili život svakog čovjeka danas? Zatim čitajte na blogu kako biste vidjeli Googleove izume.
Koncept samovozećih automobila koji će krenuti na ceste uz pomoć umjetne inteligencije san je koji već neko vrijeme imamo. No, unatoč nekoliko obećanja, nigdje ih nema. Pročitajte ovaj blog kako biste saznali više…
Kako se znanost razvija velikom brzinom, preuzimajući mnoge naše napore, raste i rizik da se podvrgnemo neobjašnjivoj Singularnosti. Pročitajte što bi za nas mogla značiti singularnost.
Metode pohrane podataka su se razvijale možda od rođenja podataka. Ovaj blog pokriva evoluciju pohrane podataka na temelju infografike.
Pročitajte blog kako biste na najjednostavniji način upoznali različite slojeve u arhitekturi velikih podataka i njihove funkcionalnosti.
U ovom digitalnom svijetu, pametni kućni uređaji postali su ključni dio života. Evo nekoliko nevjerojatnih prednosti pametnih kućnih uređaja o tome kako naš život čine vrijednim življenja i jednostavnijim.
Nedavno je Apple izdao macOS Catalina 10.15.4 dodatak ažuriranju kako bi riješio probleme, ali čini se da ažuriranje uzrokuje više problema koji dovode do zalijevanja mac strojeva. Pročitajte ovaj članak da biste saznali više