Jenkinsin asentaminen CentOS 7:ään
Jenkins on suosittu avoimen lähdekoodin CI (Continuous Integration) -työkalu, jota käytetään laajasti projektien kehittämiseen, käyttöönottoon ja automatisointiin. Tämä artikkeli tulee
Jatkuva integrointi on DevOps-ohjelmistokehityskäytäntö, jonka avulla kehittäjät voivat usein yhdistää muokatun koodin jaettuun arkistoon useita kertoja päivässä. Jokaisen yhdistämisen jälkeen suoritetaan automaattiset koontiversiot ja testit koodin ongelmien havaitsemiseksi. Sen avulla kehittäjät voivat löytää ja ratkaista virheet nopeasti parantaakseen ohjelmiston laatua ja tarjotakseen ohjelmiston jatkuvan toimituksen. Concoursen vaihtaminen edestakaisin on erittäin helppoa, koska se säilyttää kaikki kokoonpanonsa deklaratiivisissa tiedostoissa, jotka voidaan tarkistaa versionhallintaan. Se tarjoaa myös verkkokäyttöliittymän, joka näyttää koontitiedot interaktiivisesti.
Muista korvata kaikki esiintymät 192.0.2.1
ja ci.example.com
varsinaisella Vultr julkisen IP-osoitteen ja varsinainen verkkotunnus.
Päivitä perusjärjestelmäsi Ubuntu 16.04:n päivittäminen -oppaan avulla . Kun järjestelmäsi on päivitetty, jatka PostgreSQL:n asentamista.
PostgreSQL on objektirelaatiotietokantajärjestelmä. Concourse tallentaa putkistotietonsa PostgreSQL-tietokantaan. Lisää PostgreSQL-arkisto.
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
Asenna PostgreSQL-tietokantapalvelin.
sudo apt -y install postgresql
Käynnistä PostgreSQL-palvelin ja ota se käyttöön automaattisesti käynnistyksen yhteydessä.
sudo systemctl start postgresql
sudo systemctl enable postgresql
Vaihda PostgreSQL-oletuskäyttäjän salasana.
sudo passwd postgres
Kirjaudu sisään PostgreSQL-käyttäjänä:
sudo su - postgres
Luo uusi PostgreSQL-käyttäjä Concourse CI:lle.
createuser concourse
Huomautus : PostgreSQL-oletuskäyttäjää voidaan käyttää tietokannan todentamiseen, mutta on suositeltavaa käyttää erityistä käyttäjää Concourse-tietokannan todentamiseen tuotantoasetuksissa.
PostgreSQL tarjoaa komentotulkin kyselyjen suorittamiseen tietokannassa. Vaihda PostgreSQL-kuoreen.
psql
Aseta salasana äskettäin luodulle Concourse-tietokannan käyttäjälle.
ALTER USER concourse WITH ENCRYPTED password 'DBPassword';
Tärkeää : Korvaa DBPassword
vahvalla salasanalla. Kirjoita salasana muistiin, koska sitä tarvitaan myöhemmin opetusohjelmassa.
Luo uusi tietokanta Concourselle.
CREATE DATABASE concourse OWNER concourse;
Poistu psql
kuoresta.
\q
Vaihda nykyisestä postgres
käyttäjästä sudo- käyttäjään.
exit
Lataa Concourse-suoritettavan tiedoston uusin versio ja tallenna se, /usr/bin
jotta se voidaan suorittaa suoraan. Concourse- ja Fly-binäärien uusin versio löytyy Concoursen lataussivulta . Uusia julkaisuja tulee hyvin usein. Korvaa alla oleva linkki uusimman version uudella linkillä.
sudo wget https://github.com/concourse/concourse/releases/download/v3.10.0/concourse_linux_amd64 -O /usr/bin/concourse
Lataa vastaavasti viimeisin versio fly-suoritustiedostosta ja tallenna se /usr/bin
.
sudo wget https://github.com/concourse/concourse/releases/download/v3.10.0/fly_linux_amd64 -O /usr/bin/fly
Fly on komentoriviliittymä, jota käytetään yhteyden muodostamiseen Concourse CI:n ATC API:hen. Fly on saatavilla useille alustoille, kuten Linux, Windows ja MacOS.
Määritä suorituslupa ladatuille concourse
ja fly
binääritiedostoille.
sudo chmod +x /usr/bin/concourse /usr/bin/fly
Tarkista, toimivatko Concourse ja Fly oikein tarkistamalla niiden versio.
concourse -version
fly -version
RSA-avainparit tarjoavat tavan salata Concoursen komponenttien välinen viestintä.
Jotta Concourse toimisi, on luotava vähintään kolme paria avaimia. Istuntotietojen salaamiseksi luo session_signing_key
. TSA käyttää tätä avainta myös ATC:lle tekemiensä pyyntöjen allekirjoittamiseen. Suojaa TSA SSH -palvelin luomalla tsa_host_key
. Luo lopuksi worker_key
jokaiselle työntekijälle.
Luo uusi hakemisto Concourse CI:hen liittyvien avainten ja asetusten tallentamiseksi.
sudo mkdir /opt/concourse
Luo tarvittavat avaimet.
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
Valtuuta työntekijöiden julkinen avain kopioimalla sen sisältö authorized_worker_keys
tiedostoon.
sudo cp /opt/concourse/worker_key.pub /opt/concourse/authorized_worker_keys
Concourse tarjoaa kaksi erillistä komponenttia, jotka on aloitettava: web ja worker. Käynnistä Concourse-verkko.
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
Vaihda käyttäjänimi ja salasana basic-auth
halutessasi. Varmista, että avaintiedostojen polku on oikea, ja varmista, että PostgreSQL-tietokannan kokoonpanon käyttäjätunnukselle ja salasanalle on annettu oikea arvo.
Huomautus : ATC kuuntelee oletusporttia 8080
ja TSA kuuntelee porttia 2222
. Jos todennusta ei haluta, ohita --no-really-i-dont-want-any-auth
vaihtoehto sen jälkeen, kun olet poistanut perustodennusvaihtoehdot.
Kun verkkopalvelin on käynnistetty, seuraava tulos näytetään.
{"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"}}
Pysäytä palvelin toistaiseksi, sillä muutamia asioita on vielä määritettävä.
Käynnistä 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
Yllä oleva komento olettaa, että TSA on käynnissä localhostissa ja kuuntelee oletusporttia 2222
.
Vaikka Concourse web ja worker voidaan käynnistää helposti yllä olevilla komennoilla, on suositeltavaa käyttää Systemdiä palvelimen hallintaan.
Systemd-palvelun käyttäminen sovelluksen hallintaan varmistaa, että sovellus käynnistyy automaattisesti vikatilanteissa ja käynnistyksen yhteydessä. Concourse-palvelin ei ota tietoja mistään asetustiedostosta, mutta sillä on pääsy tietoihin ympäristömuuttujista. Globaalien ympäristömuuttujien asettamisen sijaan luo uusi tiedosto ympäristömuuttujien tallentamiseksi ja välitä sitten muuttujat Concourse CI:lle Systemd-palvelun avulla.
Luo uusi ympäristötiedosto Concourse webille.
sudo nano /opt/concourse/web.env
Täytä tiedosto.
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
The above command is used for the initial login to the server. -t
is used to provide a target name. replace my-ci
with any desired target name. The above command will log in to the default team main
. It will ask for the username and password provided in the environment file.
The output will look like the following.
[user@vultr ~]$ fly -t my-ci login -c http://192.0.2.1:8080
logging in to team 'main'
username: admin
password:
target saved
The target login will be saved for a day. After that, it will expire.
To log out immediately.
fly -t my-ci logout
Fly can be used to login to the server outside of the network, but only if the server has a public IP address and it is accessible from outside the network. The Windows or MacOS binary can be downloaded from the download site or from the web UI of the server.
Kirjautumiset ja muut verkkokäyttöliittymän kautta Concourse-palvelimelle lähetettävät tiedot eivät ole suojattuja. Yhteyttä ei ole salattu. Nginx-käänteinen välityspalvelin voidaan määrittää Let's Encrypt ilmaisella SSL:llä.
Asenna Nginx.
sudo apt -y install nginx
Käynnistä Nginx ja ota se käyttöön automaattisesti käynnistyksen yhteydessä.
sudo systemctl start nginx
sudo systemctl enable nginx
Lisää Certbot-arkisto.
sudo add-apt-repository --yes ppa:certbot/certbot
sudo apt-get update
Asenna Certbot, joka on Let's Encrypt CA:n asiakassovellus.
sudo apt -y install certbot
Huomautus : Jotta Let's Encrypt CA:lta saadaan varmenteita, toimialue, jolle sertifikaatit luodaan, on osoitettava palvelimeen. Jos ei, tee tarvittavat muutokset toimialueen DNS-tietueisiin ja odota DNS:n leviämistä ennen kuin teet varmennepyynnön uudelleen. Certbot tarkistaa toimialueen viranomaisen ennen varmenteiden toimittamista.
Luo SSL-varmenteet.
sudo certbot certonly --webroot -w /var/www/html -d ci.example.com
Luodut varmenteet tallennetaan todennäköisesti /etc/letsencrypt/live/ci.example.com/
hakemistoon. SSL-varmenne tallennetaan nimellä fullchain.pem
ja yksityinen avain muodossa privkey.pem
.
Let's Encrypt -varmenteet vanhenevat 90 päivässä, joten on suositeltavaa, että varmenteet uusitaan automaattisesti käyttämällä cronjobsia. Cron on järjestelmäpalvelu, jota käytetään säännöllisten tehtävien suorittamiseen.
Avaa cron-työtiedosto.
sudo crontab -e
Lisää seuraava rivi tiedoston loppuun.
30 5 * * * /usr/bin/certbot renew --quiet
Yllä oleva cron-työ suoritetaan joka päivä klo 5.30. Jos varmenteen voimassaolo päättyy, se uusitaan automaattisesti.
Luo uusi virtuaalinen isäntä.
sudo nano /etc/nginx/sites-available/concourse
Täytä tiedosto.
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;
}
}
Huomautus : Korvaa ci.example.com
varsinaisella verkkotunnuksella.
Aktivoi asetustiedosto.
sudo ln -s /etc/nginx/sites-available/concourse /etc/nginx/sites-enabled/concourse
Muokkaa kokousverkkoa varten luotua ympäristötiedostoa.
sudo nano /opt/concourse/web.env
Muuta arvoa CONCOURSE_EXTERNAL_URL
ja lisää myös kaksi riviä tiedoston loppuun.
CONCOURSE_EXTERNAL_URL=https://ci.example.com
CONCOURSE_BIND_IP=127.0.0.1
CONCOURSE_BIND_PORT=8080
Tallenna tiedosto ja käynnistä Concourse Web, Worker ja Nginx uudelleen.
sudo systemctl restart concourse-worker concourse-web nginx
Kaikki selaimeen ja selaimelta lähetettävät tiedot on nyt suojattu SSL-salauksin.
Jenkins on suosittu avoimen lähdekoodin CI (Continuous Integration) -työkalu, jota käytetään laajasti projektien kehittämiseen, käyttöönottoon ja automatisointiin. Tämä artikkeli tulee
Käytätkö erilaista järjestelmää? Johdanto Continuous Integration on DevOps-ohjelmistokehityskäytäntö, jonka avulla kehittäjät voivat usein yhdistää
Käytätkö erilaista järjestelmää? Ansible on avoimen lähdekoodin työkalu tehtävien automatisointiin. Se hallitsee Linux- ja Windows-palvelimiesi kokoonpanoa. Se toimi
Käytätkö erilaista järjestelmää? GoCD on avoimen lähdekoodin jatkuva toimitus- ja automaatiojärjestelmä. Sen avulla voit mallintaa monimutkaisia työnkulkuja käyttämällä sen rinnakkaista an
Vaikka SaltStack on loistava työkalu toimintojen suorittamiseen useilla palvelimilla samanaikaisesti, se tukee myös isäntäkohtaisesti määritettyjä kokoonpanon esiasetuksia, jotka on tallennettu
Käytätkö erilaista järjestelmää? Ansible on avoimen lähdekoodin työkalu tehtävien automatisointiin. Se hallitsee Linux- ja Windows-palvelimiesi kokoonpanoa. Se toimi
Johdanto Drone on automatisoitu, jatkuva testaus- ja toimitusalusta, joka toimii omassa infrastruktuurissasi. Drone tukee mitä tahansa kieltä, palvelua o
Käytätkö erilaista järjestelmää? Foreman on ilmainen ja avoimen lähdekoodin työkalu, joka auttaa sinua määrittämään ja hallitsemaan fyysisiä ja virtuaalisia palvelimia. Forema
SaltStack tai Salt on suosittu avoimen lähdekoodin kokoonpanonhallintaratkaisu, jota voidaan käyttää etäsuorituksen, kokoonpanonhallinnan, koodin toteuttamiseen.
Johdanto Strider CD on avoimen lähdekoodin jatkuvan käyttöönoton alusta. Sovellus on kirjoitettu Node.js:ssä ja käyttää MongoDB:tä tallennustaustana. Askel
Johdanto Chocolatey tuo Windowsiin pakettien hallinnan, joka tekee ohjelmistojen ja riippuvuuksien hallinnasta helppoa Linuxissa. Voit nopeasti ja helposti
Mikä on Packer? Packer on HashiCorpin kehittämä palvelimen kuvantamistyökalu. Palvelimen kuvantaminen; tai vaihtoehtoisesti muuttumaton infrastruktuuri; on suosittu vaihtoehto
Käytätkö erilaista järjestelmää? Johdanto Continuous Integration on DevOps-ohjelmistokehityskäytäntö, jonka avulla kehittäjät voivat usein yhdistää
On monia tapoja automatisoida laatikon asennus- ja konfigurointiprosessi. Mistä tahansa syystä, jos koko järjestelmämme tässä vaiheessa koostuu vain
Käytätkö erilaista järjestelmää? Foreman on ilmainen ja avoimen lähdekoodin työkalu, joka auttaa sinua määrittämään ja hallitsemaan fyysisiä ja virtuaalisia palvelimia. Forema
SaltStack on python-pohjainen kokoonpanonhallintaohjelma, joka on optimoitu määritystiedostojen, käyttöönottojen ja kaiken muun automatisointiin.
Tekoäly ei ole tulevaisuudessa, se tässä nykyisyydessä Tässä blogissa Lue kuinka tekoälysovellukset ovat vaikuttaneet eri sektoreihin.
Oletko myös DDOS-hyökkäysten uhri ja hämmentynyt ehkäisymenetelmistä? Lue tämä artikkeli ratkaistaksesi kysymyksesi.
Olet ehkä kuullut, että hakkerit ansaitsevat paljon rahaa, mutta oletko koskaan miettinyt, kuinka he ansaitsevat tuollaista rahaa? keskustellaan.
Haluatko nähdä Googlen vallankumouksellisia keksintöjä ja kuinka nämä keksinnöt muuttivat jokaisen ihmisen elämää nykyään? Lue sitten blogia nähdäksesi Googlen keksinnöt.
Konsepti itseohjautuvista autoista lähteä tielle tekoälyn avulla on ollut haaveena jo jonkin aikaa. Mutta useista lupauksista huolimatta niitä ei näy missään. Lue tämä blogi saadaksesi lisätietoja…
Kun tiede kehittyy nopeasti ja ottaa haltuunsa suuren osan ponnisteluistamme, myös riskit altistaa itsemme selittämättömälle singulariteetille kasvavat. Lue, mitä singulaarisuus voisi tarkoittaa meille.
Tietojen säilytystavat ovat kehittyneet mahdollisesti Datan syntymästä lähtien. Tämä blogi käsittelee tiedon tallennuksen kehitystä infografian pohjalta.
Blogista saat tietää Big Data -arkkitehtuurin eri kerroksista ja niiden toiminnoista yksinkertaisimmalla tavalla.
Tässä digitaalisessa maailmassa kodin älylaitteista on tullut tärkeä osa elämää. Tässä on muutamia älykkäiden kodin laitteiden hämmästyttäviä etuja, joiden avulla ne tekevät elämästämme elämisen arvoista ja yksinkertaisempaa.
Apple julkaisi äskettäin macOS Catalina 10.15.4 -lisäpäivityksen ongelmien korjaamiseksi, mutta näyttää siltä, että päivitys aiheuttaa lisää ongelmia, jotka johtavat mac-koneiden tiilikaamiseen. Lue tämä artikkeli saadaksesi lisätietoja