När du har utvecklat en applikation och är redo att driftsätta denna i sandbox, test eller produktion så beskrivs de nödvändiga stegen du behöver göra här.
Övergripande beskrivning
Jenkins körs lokalt i en docker-container på SAAS728, nåbar på http://saas728.sundsvall.se:8080 .
I Jenkins finns pipelines som lyssnar varrannan minut efter förändringar i varje repository.
Autentiseringen mot GitHub sker genom en lösenords-credential: “api-support-jenkins-token”.
Autentisering mot GitLab sker med ssh-credential: “gitlab-ssh”.
Har en förändring skett i det repot på den angivna branchen kommer pipelinen starta. Samtliga pipelines bygger koden som en docker image och startar containern med hjälp av docker-compose.
Som det ser ut nu så ligger dockerfile i applikationens repository och docker-compose ligger på servern på sökvägen: /srv/docker/docker-compose/<namn på applikation>
Det är en Jenkins Agent installerad på saas728 i den lägger sig alla git pull som görs när ett jobb triggas. Filerna kan nås i denna mappen under workspaces: /srv/docker/docker-compose/jenkins/jenkins
Jenkins Agenten är en java jar fil som körs som en systemd service
För status kör: sudo systemctl status jenkins
Tanken är att vi kör CI/CD mot testmiljön men mot produktionsmiljön så gör vi ett manuellt steg där vi måste gå in och starta bygget manuellt.
Planerat arbete
Lagra våra docker images i ett Nexus-repo istället för lokalt på servern.
Använda Jenkinsfiles istället för att bygga pipelines i GUI’t.
Detta är beroende av att vi kan uppdatera plugins i Jenkins. Vi väntar på en proxy-beställning.
Docker-compose
VIKTIGT! Tänk på följande när du konfigurerar din docker-compose:
Använd en unik port (se vilka som används med kommandot “docker ps”)
Använd ett unikt namn på containern (container_name: <namn på applikationen>-<sandbox/test/production>)
Använd “network_mode: bridge”
Skicka loggar till Graylog. Se exempel nedan.
Exempel på avskalad docker-compose:
version: '2' services: ms-casemanagementservice-test: container_name: ms-casemanagementservice-test logging: driver: "syslog" options: syslog-address: "udp://172.16.254.6:5140" tag: "ms-casemanagementservice-test" restart: always network_mode: bridge image: ms-casemanagementservice:test ports: - 8715:9090 environment: SUNDSVALLS_KOMMUN_INTERNAL_ORIGIN: "https://api-i-test.sundsvall.se" SUNDSVALLS_KOMMUN_EXTERNAL_ORIGIN: "https://api-test.sundsvall.se" SUNDSVALLS_KOMMUN_CONSUMER_KEY: "" SUNDSVALLS_KOMMUN_CONSUMER_SECRET: "" DB_USERNAME: "dbcasemanagement" DB_PWD: "" DB_URL: "jdbc:mariadb://saas728.sundsvall.se:3306/ms-casemanagement" DB_HIBERNATE_GENERATION: "none"
Jenkins
Sätt upp en Jenkins-pipeline för att kunna köra bygget. Idag konfigurerar vi våra pipelines i Jenkins-GUI’t i väntan på att vi ska få till en proxy mot Jenkins update center.
Sätt upp en pipeline för varje instans (sandbox, test och produktion) av applikationen. Här visas sandbox som exempel.
Logga in i VPN klienten (Cisco AnyConnect) och surfa sedan in på Jenkins: http://saas728.sundsvall.se:8080/
Klicka på “Skapa nytt Item” uppe till vänster
Ange ett namn på pipelinen med formatet <applikationsnamn> - <instans>. T.ex. DemoApplication - Sandbox
Längst ned - Välj att kopiera från en befintlig pipeline:
Verifiera att rätt label används (maskinen det ska byggas på).
För produktion gäller SAAS021. För test och sandbox gäller SAAS728.Credentials som ska användas till alla Github-repos är:
Se till så att användaren “api-support-jenkins” har behörighet till ditt Github-repo.
Under “Bygge” behöver du byta ut namn och sökvägar till det som stämmer för din applikation:
När du har kontrollerat att allt stämmer så kan du skrolla längst ned och klicka “Apply” för att spara din pipeline.
Nu kan du antingen starta din pipeline manuellt eller så startas din pipeline automatiskt beroende på om du angett någon “Build trigger”.
Exponera URL
För att det ska gå att komma åt applikationen utifrån så måste applikationen exponeras via en URL.
Test: https://microservices-test.sundsvall.se/casemanagementservice/
Sandbox: https://microservices-test.sundsvall.se/sandbox/casemanagementservice/
Produktion: https://microservices.sundsvall.se/casemanagementservice/
För detta krävs konfigurering av HAProxy och det utförs efter en beställning till Mario Mancilla (Unlicensed) .