1. Architecture
- Source Repository for store source code (Github)
- Jenkins server for master server handle Pipeline CICD (using local)
- Docker host to clone source, build, test for CI (using local)
- Server to deploy Laravel app for CD (VPS || Cloud)
2. Install tools & prepare source code
- Prepare source code Laravel
- Install Docker in local
- Install Jenkins using Docker in local: Using Docker plugin | Docker pipeline plugin
- Setup Docker cloud agent for CI (to clone source, build, test)
- Setup Permanent Agent server (using VPS) for CD (to deploy Laravel app)
|| Cloud Agent server (using AWS||GCP||Azure) for CD (to deploy Laravel app)
3. Setup Pipeline CICD
- Create job DeployLaraveApp
+ Type: pipeline
+ Trigger: schedule to check source change || when source code change (case Jenkin server not using in local by using webhook in github)
+ Using jenkinFile
- Run build when trigger happen.
-------------------------
Detailed instructions
* Prerequisite
- Install Jenkins, Docker
* Source Repository (Github)
- Source Laravel
- dockerfile/ docker_compose file
- Jenkinfile
* Setup Docker cloud agent for CI (to clone source, build, test)
+ Using: Docker Pipeline Plugin in Jenkins
Or using: Docker Cloud Agent in Jenkins
* Setup Permanent Agent server (using VPS) for CD (to deploy Laravel app)
* Create job DeployLaraveApp
* Using Ngrok for Jenkins in localhost: https://ngrok.com
- run: ngrok http http://localhost:8090
- endpoint page: https://dashboard.ngrok.com/cloud-edge/endpoints
* Setting webhook github for Jenkins in localhost
- When create Pipeline:.../ Build Triggers: select Github hook trigger for GITScm polling.
- Add webhook in Github: Select Repository/ Setting/ Webhooks/ Add webhook/ Payload Url: enter url get from Ngrok (for jenkins localhost)/: {JenkinServer}/github-webhook/ / Content type: application/json / Which event would you like to trigger this webhook: Let me select individual events: Enable Pull request, Pushes.. / Add webhook.
* Set permission for jenkin handle with /var/www
- Copy source code from workspace in jenkins to VPS server
- When install nginx/ apache2, then auto create group www-data
- or using this: groupadd www-data
- Add user jenkin to this group:
- Change owner directory, change permission
Thank you.
No comments:
Post a Comment