Hvordan installere Jenkins på CentOS 7
Jenkins er et populært åpen kildekode CI (Continuous Integration)-verktøy som er mye brukt for prosjektutvikling, distribusjon og automatisering. Denne artikkelen vil
Kontinuerlig integrasjon er en DevOps-programvareutviklingspraksis som gjør det mulig for utviklerne å flette den modifiserte koden ofte inn i det delte depotet mange ganger om dagen. Etter hver sammenslåing utføres automatiske bygg og tester for å oppdage problemer i koden. Det gjør det mulig for utviklerne å finne og løse feilene raskt for å forbedre programvarekvaliteten og sørge for kontinuerlig levering av programvaren. Det er veldig enkelt å bytte frem og tilbake fra Concourse ettersom den beholder all konfigurasjonen i deklarative filer som kan sjekkes inn i versjonskontroll. Det gir også et nettbrukergrensesnitt som viser byggeinformasjonen interaktivt.
Pass på å erstatte alle forekomster av 192.0.2.1
og ci.example.com
med din faktiske Vultr offentlige IP-adresse og faktiske domenenavn.
Oppdater basissystemet ditt ved å bruke veiledningen Hvordan oppdatere Ubuntu 16.04 . Når systemet ditt har blitt oppdatert, fortsett å installere PostgreSQL.
PostgreSQL er et objektrelasjonsdatabasesystem. Concourse lagrer pipeline-dataene sine i en PostgreSQL-database. Legg til PostgreSQL-depotet.
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
Installer PostgreSQL-databaseserveren.
sudo apt -y install postgresql
Start PostgreSQL-serveren og la den starte automatisk ved oppstart.
sudo systemctl start postgresql
sudo systemctl enable postgresql
Endre passordet for standard PostgreSQL-bruker.
sudo passwd postgres
Logg på som PostgreSQL-bruker:
sudo su - postgres
Opprett en ny PostgreSQL-bruker for Concourse CI.
createuser concourse
Merk : Standard PostgreSQL-bruker kan brukes for autentisering av databasen, men det anbefales å bruke en dedikert bruker for autentisering av Concourse-databasen i et produksjonsoppsett.
PostgreSQL gir et skall for å kjøre spørringer på databasen. Bytt til PostgreSQL-skallet.
psql
Angi et passord for den nyopprettede Concourse-databasebrukeren.
ALTER USER concourse WITH ENCRYPTED password 'DBPassword';
Viktig : Erstatt DBPassword
med et sterkt passord. Noter passordet, da det kreves senere i opplæringen.
Opprett en ny database for Concourse.
CREATE DATABASE concourse OWNER concourse;
Gå ut av psql
skallet.
\q
Bytt til sudo-brukeren fra gjeldende postgres
bruker.
exit
Last ned den nyeste versjonen av Concourse kjørbar og lagre den /usr/bin
slik at den kan kjøres direkte. Den siste versjonen av Concourse- og Fly-binærfilene finner du på Concourse-nedlastingssiden . Nye utgivelser er svært hyppige. Erstatt lenken nedenfor med den nye lenken for den nyeste versjonen.
sudo wget https://github.com/concourse/concourse/releases/download/v3.10.0/concourse_linux_amd64 -O /usr/bin/concourse
På samme måte kan du laste ned den nyeste versjonen av fly-kjørbaren og lagre den i /usr/bin
.
sudo wget https://github.com/concourse/concourse/releases/download/v3.10.0/fly_linux_amd64 -O /usr/bin/fly
Fly er kommandolinjegrensesnittet som brukes til å koble til ATC API for Concourse CI. Fly er tilgjengelig for flere plattformer som Linux, Windows og MacOS.
Tildel utføringstillatelse til de nedlastede concourse
og fly
binære filene.
sudo chmod +x /usr/bin/concourse /usr/bin/fly
Sjekk om Concourse og Fly fungerer som de skal ved å sjekke versjonen deres.
concourse -version
fly -version
RSA-nøkkelpar gir en måte å kryptere kommunikasjonen mellom komponentene i Concourse.
For at Concourse skal fungere, må minst tre par nøkler genereres. For å kryptere øktdataene, generer en session_signing_key
. Denne nøkkelen vil også bli brukt av TSA til å signere forespørslene den sender til ATC. For å sikre TSA SSH-serveren, generer en tsa_host_key
. Til slutt, generer en worker_key
for hver arbeider.
Opprett en ny katalog for å lagre nøklene og konfigurasjonen relatert til Concourse CI.
sudo mkdir /opt/concourse
Generer de nødvendige nøklene.
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
Autoriser arbeidernes offentlige nøkkel ved å kopiere innholdet til authorized_worker_keys
filen.
sudo cp /opt/concourse/worker_key.pub /opt/concourse/authorized_worker_keys
Concourse har to separate komponenter som må startes: nettet og arbeideren. Start Concourse-nettet.
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
Endre brukernavnet og passordet til basic-auth
om ønskelig. Sørg for at banen til nøkkelfilene er riktige og sørg for at riktig verdi for brukernavn og passord i PostgreSQL-databasekonfigurasjonen er oppgitt.
Merk : ATC vil lytte til standardporten 8080
og TSA vil lytte til porten 2222
. Hvis autentisering ikke er ønsket, passerer du --no-really-i-dont-want-any-auth
alternativet etter at du har fjernet de grunnleggende autentiseringsalternativene.
Når webserveren er startet, vil følgende utgang vises.
{"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"}}
Stopp serveren for nå, ettersom noen flere ting fortsatt må konfigureres.
Start 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
Kommandoen ovenfor vil anta at TSA kjører på localhost og lytter til standardporten 2222
.
Selv om Concourse web og worker enkelt kan startes ved å bruke kommandoene ovenfor, anbefales det å bruke Systemd for å administrere serveren.
Å bruke Systemd-tjenesten for å administrere applikasjonen sikrer at applikasjonen automatisk startes ved feil og ved oppstart. Concourse-serveren tar ikke data fra noen konfigurasjonsfil, men den kan få tilgang til dataene fra miljøvariabler. I stedet for å angi globale miljøvariabler, oppretter du en ny fil for å lagre miljøvariablene og sender deretter variablene til Concourse CI ved hjelp av Systemd-tjenesten.
Opprett en ny miljøfil for Concourse web.
sudo nano /opt/concourse/web.env
Fyll ut filen.
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.
Pålogginger og annen informasjon som sendes via web-UI til Concourse-serveren er ikke sikret. Forbindelsen er ikke kryptert. En Nginx omvendt proxy kan settes opp med en Let's Encrypt gratis SSL.
Installer Nginx.
sudo apt -y install nginx
Start Nginx og la den starte automatisk ved oppstart.
sudo systemctl start nginx
sudo systemctl enable nginx
Legg til Certbot-depotet.
sudo add-apt-repository --yes ppa:certbot/certbot
sudo apt-get update
Installer Certbot, som er klientapplikasjonen for Let's Encrypt CA.
sudo apt -y install certbot
Merk : For å få sertifikater fra Let's Encrypt CA, må domenet som sertifikatene skal genereres for, peke mot serveren. Hvis ikke, gjør de nødvendige endringene i DNS-postene til domenet og vent til DNS-en forplanter seg før du foretar sertifikatforespørselen igjen. Certbot sjekker domeneautoriteten før sertifikatene leveres.
Generer SSL-sertifikatene.
sudo certbot certonly --webroot -w /var/www/html -d ci.example.com
De genererte sertifikatene vil sannsynligvis bli lagret i /etc/letsencrypt/live/ci.example.com/
katalogen. SSL-sertifikatet vil bli lagret som fullchain.pem
og den private nøkkelen vil bli lagret som privkey.pem
.
La oss kryptere sertifikater utløper om 90 dager, så det anbefales automatisk fornyelse for sertifikatene er satt opp med cronjobs. Cron er en systemtjeneste som brukes til å kjøre periodiske oppgaver.
Åpne cron-jobbfilen.
sudo crontab -e
Legg til følgende linje på slutten av filen.
30 5 * * * /usr/bin/certbot renew --quiet
Cron-jobben ovenfor kjøres hver dag klokken 05.30. Hvis sertifikatet skal utløpe, vil det automatisk fornyes.
Opprett en ny virtuell vert.
sudo nano /etc/nginx/sites-available/concourse
Fyll ut filen.
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;
}
}
Merk : Erstatt ci.example.com
med det faktiske domenet.
Aktiver konfigurasjonsfilen.
sudo ln -s /etc/nginx/sites-available/concourse /etc/nginx/sites-enabled/concourse
Rediger miljøfilen opprettet for concourse Web.
sudo nano /opt/concourse/web.env
Endre verdien på CONCOURSE_EXTERNAL_URL
og legg også til to linjer til på slutten av filen.
CONCOURSE_EXTERNAL_URL=https://ci.example.com
CONCOURSE_BIND_IP=127.0.0.1
CONCOURSE_BIND_PORT=8080
Lagre filen og start Concourse Web, Worker og Nginx på nytt.
sudo systemctl restart concourse-worker concourse-web nginx
All data som sendes til og fra nettleseren er nå sikret med SSL-krypteringer.
Jenkins er et populært åpen kildekode CI (Continuous Integration)-verktøy som er mye brukt for prosjektutvikling, distribusjon og automatisering. Denne artikkelen vil
Bruker du et annet system? Introduksjon Kontinuerlig integrasjon er en DevOps-programvareutviklingspraksis som gjør det mulig for utviklere å ofte slå sammen
Bruker du et annet system? Ansible er et åpen kildekodeverktøy for automatisering av oppgaver. Den administrerer konfigurasjonen av dine Linux- og Windows-servere. Det fungerer
Bruker du et annet system? GoCD er et åpen kildekodesystem for kontinuerlig levering og automatisering. Den lar deg modellere komplekse arbeidsflyter ved å bruke dens parallelle an
Mens SaltStack er et flott verktøy for å kjøre operasjoner på mange servere samtidig, støtter det også per-verts definerte konfigurasjonsforhåndsinnstillinger lagret i en
Bruker du et annet system? Ansible er et åpen kildekodeverktøy for automatisering av oppgaver. Den administrerer konfigurasjonen av dine Linux- og Windows-servere. Det fungerer
Introduksjon Drone er en automatisert, kontinuerlig test- og leveringsplattform som kjører på din egen infrastruktur. Drone støtter alle språk, tjenester o
Hva er en Load Balancer Load Balancers sitter foran applikasjonen din og distribuerer innkommende trafikk over flere forekomster av applikasjonen. Fo
Bruker du et annet system? Foreman er et gratis og åpen kildekodeverktøy som hjelper deg med konfigurering og administrasjon av fysiske og virtuelle servere. Forema
SaltStack, eller Salt, er en populær åpen kildekode-konfigurasjonsadministrasjonsløsning som kan brukes til å implementere ekstern kjøring, konfigurasjonsadministrasjon, cod
Introduksjon Strider CD er en åpen kildekode-plattform for kontinuerlig distribusjon. Applikasjonen er skrevet i Node.js og bruker MongoDB som backend for lagring. Skritt
Introduksjon Chocolatey bringer pakkeadministrasjon som gjør det enkelt å administrere programvare og avhengigheter på Linux, til Windows. Du kan raskt og enkelt
Hva er Packer? Packer er et serverbildeverktøy utviklet av HashiCorp. Server bildebehandling; eller alternativt uforanderlig infrastruktur; er et populært alternativ
Bruker du et annet system? Introduksjon Kontinuerlig integrasjon er en DevOps-programvareutviklingspraksis som gjør det mulig for utviklere å ofte slå sammen
Det er mange måter å automatisere prosessen med å sette opp og konfigurere en boks. Uansett grunn, hvis hele systemet vårt på dette tidspunktet består av bare
Bruker du et annet system? Foreman er et gratis og åpen kildekodeverktøy som hjelper deg med konfigurering og administrasjon av fysiske og virtuelle servere. Forema
SaltStack er et python-basert konfigurasjonsadministrasjonsprogram som er optimalisert for automatisering av konfigurasjonsfiler, distribusjoner og alt annet
Kunstig intelligens er ikke i fremtiden, det er her akkurat i nåtiden I denne bloggen Les hvordan kunstig intelligens-applikasjoner har påvirket ulike sektorer.
Er du også et offer for DDOS-angrep og forvirret over forebyggingsmetodene? Les denne artikkelen for å løse spørsmålene dine.
Du har kanskje hørt at hackere tjener mye penger, men har du noen gang lurt på hvordan tjener de den slags penger? la oss diskutere.
Vil du se revolusjonerende oppfinnelser fra Google og hvordan disse oppfinnelsene forandret livet til alle mennesker i dag? Les deretter til bloggen for å se oppfinnelser fra Google.
Konseptet med selvkjørende biler som skal ut på veiene ved hjelp av kunstig intelligens er en drøm vi har hatt en stund nå. Men til tross for flere løfter, er de ingen steder å se. Les denne bloggen for å lære mer...
Ettersom vitenskapen utvikler seg raskt og tar over mye av innsatsen vår, øker også risikoen for å utsette oss for en uforklarlig singularitet. Les hva singularitet kan bety for oss.
Lagringsmetodene for dataene har vært i utvikling kan være siden fødselen av dataene. Denne bloggen dekker utviklingen av datalagring på grunnlag av en infografikk.
Les bloggen for å kjenne ulike lag i Big Data Architecture og deres funksjoner på den enkleste måten.
I denne digitaldrevne verden har smarthusenheter blitt en avgjørende del av livet. Her er noen fantastiske fordeler med smarthusenheter om hvordan de gjør livet vårt verdt å leve og enklere.
Nylig lanserte Apple macOS Catalina 10.15.4 en tilleggsoppdatering for å fikse problemer, men det ser ut til at oppdateringen forårsaker flere problemer som fører til muring av mac-maskiner. Les denne artikkelen for å lære mer