<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Anuj Gupta</title>
    <description>The latest articles on DEV Community by Anuj Gupta (@anujgupta345).</description>
    <link>https://dev.to/anujgupta345</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2996162%2Ff36913a2-b321-48b5-88c1-0e05a62db74c.jpg</url>
      <title>DEV Community: Anuj Gupta</title>
      <link>https://dev.to/anujgupta345</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/anujgupta345"/>
    <language>en</language>
    <item>
      <title>Basic Setup of Jenkins for CI/CD</title>
      <dc:creator>Anuj Gupta</dc:creator>
      <pubDate>Mon, 31 Mar 2025 05:04:33 +0000</pubDate>
      <link>https://dev.to/anujgupta345/basic-setup-of-jenkins-for-cicd-cfg</link>
      <guid>https://dev.to/anujgupta345/basic-setup-of-jenkins-for-cicd-cfg</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br&gt;
Jenkins is a widely used open-source automation server that facilitates continuous integration and continuous deployment (CI/CD). This guide provides a step-by-step approach to installing, configuring, and troubleshooting Jenkins on a Linux-based system.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;1. Installing Jenkins&lt;/strong&gt;&lt;br&gt;
Prerequisites&lt;br&gt;
Ensure that your system is up to date before installing Jenkins:&lt;br&gt;
sudo apt update &amp;amp;&amp;amp; sudo apt install -y openjdk-11-jdk&lt;br&gt;
Download and Install Jenkins&lt;br&gt;
Execute the following commands to install Jenkins:&lt;br&gt;
wget -q -O - &lt;a href="https://pkg.jenkins.io/debian-stable/jenkins.io.key" rel="noopener noreferrer"&gt;https://pkg.jenkins.io/debian-stable/jenkins.io.key&lt;/a&gt; | sudo tee /usr/share/keyrings/jenkins-keyring.asc &amp;gt; /dev/null&lt;br&gt;
echo "deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] &lt;a href="https://pkg.jenkins.io/debian-stable" rel="noopener noreferrer"&gt;https://pkg.jenkins.io/debian-stable&lt;/a&gt; binary/" | sudo tee /etc/apt/sources.list.d/jenkins.list &amp;gt; /dev/null&lt;br&gt;
sudo apt update &amp;amp;&amp;amp; sudo apt install -y jenkins&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Start and Enable Jenkins&lt;/strong&gt;&lt;br&gt;
Run the following commands to start Jenkins and enable it to launch on startup:&lt;br&gt;
sudo systemctl start jenkins&lt;br&gt;
sudo systemctl enable jenkins&lt;br&gt;
Check Jenkins Status&lt;br&gt;
To verify that Jenkins is running correctly:&lt;br&gt;
sudo systemctl status jenkins&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;2. Installing Required Plugins&lt;/strong&gt;&lt;br&gt;
To fully utilize Jenkins, install the necessary plugins:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Navigate to Manage Jenkins &amp;gt; Manage Plugins&lt;/li&gt;
&lt;li&gt; Install the following:
o   Git Plugin
o   Pipeline Plugin
o   Qt Integration Plugin (if available)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To ensure Qt is installed:&lt;br&gt;
sudo apt install -y qtbase5-dev qtchooser qt5-qmake qttools5-dev-tools&lt;br&gt;
qmake --version&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;3. Configuring Git Repository for Jenkins&lt;/strong&gt;&lt;br&gt;
Setting Remote Repository&lt;br&gt;
git remote -v&lt;br&gt;
git remote set-url origin &lt;a href="https://github.com/new-repo.git" rel="noopener noreferrer"&gt;https://github.com/new-repo.git&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;4. Configuring Firewall and External Access&lt;/strong&gt;&lt;br&gt;
Allow Jenkins Through Firewall&lt;br&gt;
sudo ufw allow 8080/tcp&lt;br&gt;
sudo ufw reload&lt;br&gt;
Accessing Jenkins from a Remote System&lt;br&gt;
Find your public IP:&lt;br&gt;
curl ifconfig.me&lt;br&gt;
Access Jenkins via:&lt;br&gt;
http://:8080&lt;/p&gt;

&lt;p&gt;Configure Jenkins for External Access&lt;br&gt;
Edit the Jenkins configuration file:&lt;br&gt;
sudo nano /etc/default/jenkins&lt;br&gt;
Modify the HTTP_HOST setting:&lt;br&gt;
HTTP_HOST=0.0.0.0&lt;br&gt;
Restart Jenkins:&lt;br&gt;
sudo systemctl restart jenkins&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;5. Setting Up Ngrok for External Access&lt;/strong&gt;&lt;br&gt;
Running Ngrok&lt;br&gt;
ngrok http 8080&lt;br&gt;
Copy the Forwarding URL from Ngrok (e.g., &lt;a href="https://xyz.ngrok-free.app" rel="noopener noreferrer"&gt;https://xyz.ngrok-free.app&lt;/a&gt;).&lt;br&gt;
Configuring GitHub Webhook&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Navigate to GitHub → Repository → Settings → Webhooks.&lt;/li&gt;
&lt;li&gt; Click Add Webhook.&lt;/li&gt;
&lt;li&gt; Set the Webhook URL to:&lt;/li&gt;
&lt;li&gt; &lt;a href="https://xyz.ngrok-free.app/github-webhook/" rel="noopener noreferrer"&gt;https://xyz.ngrok-free.app/github-webhook/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; Choose application/json as the content type.&lt;/li&gt;
&lt;li&gt; Select Just the push event.&lt;/li&gt;
&lt;li&gt; Click Add Webhook (Ensure status turns green ✅).&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;&lt;strong&gt;6. Setting Up Jenkins Pipeline with GitHub&lt;/strong&gt;&lt;br&gt;
Creating a Jenkinsfile&lt;br&gt;
Create a file named Jenkinsfile in your repository root with the following content:&lt;br&gt;
pipeline {&lt;br&gt;
    agent any&lt;br&gt;
    stages {&lt;br&gt;
        stage('Checkout') {&lt;br&gt;
            steps { git '&lt;a href="https://github.com/anujgupta345/CPP_QT_MULTITHREADING_LINUX.git" rel="noopener noreferrer"&gt;https://github.com/anujgupta345/CPP_QT_MULTITHREADING_LINUX.git&lt;/a&gt;' }&lt;br&gt;
        }&lt;br&gt;
        stage('Build') {&lt;br&gt;
            steps {&lt;br&gt;
                sh 'export QTDIR=/usr/lib/qt5'&lt;br&gt;
                sh 'export PATH=$QTDIR/bin:$PATH'&lt;br&gt;
                sh 'qmake IPC.pro'&lt;br&gt;
                sh 'mkdir -p build'&lt;br&gt;
                sh 'make clean &amp;amp;&amp;amp; make -j$(nproc)'&lt;br&gt;
            }&lt;br&gt;
        }&lt;br&gt;
        stage('Archive Artifacts') {&lt;br&gt;
            steps { archiveArtifacts artifacts: 'build/Desktop_Qt_6_8_3-Debug/IPC', fingerprint: true }&lt;br&gt;
        }&lt;br&gt;
        stage('Deploy') {&lt;br&gt;
            steps {&lt;br&gt;
                sh 'chmod +x build/Desktop_Qt_6_8_3-Debug/IPC'&lt;br&gt;
                sh 'mkdir -p $WORKSPACE/build'&lt;br&gt;
                sh 'cp build/Desktop_Qt_6_8_3-Debug/IPC $WORKSPACE/build'&lt;br&gt;
                sh 'echo "Application deployed successfully!"'&lt;br&gt;
            }&lt;br&gt;
        }&lt;br&gt;
        stage('Run Application') {&lt;br&gt;
            steps { sh 'nohup $WORKSPACE/build/IPC &amp;gt;$WORKSPACE/build/app.log 2&amp;gt;&amp;amp;1 &amp;amp;' }&lt;br&gt;
        }&lt;br&gt;
    }&lt;br&gt;
}&lt;br&gt;
Push the Jenkinsfile to your GitHub repository in the root folder.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;7. Additional Jenkins Configuration&lt;/strong&gt;&lt;br&gt;
• Modify Manage Jenkins → Configure System settings as needed.&lt;br&gt;
• Update your .bashrc file if environment variables are required.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;8. Troubleshooting Steps&lt;/strong&gt;&lt;br&gt;
Checking Logs&lt;br&gt;
sudo journalctl -u jenkins -f&lt;br&gt;
Verifying Jenkins is Running on Port 8080&lt;br&gt;
ss -tulnp | grep 8080&lt;br&gt;
Checking Firewall Rules&lt;br&gt;
sudo ufw status&lt;br&gt;
Setting Up Ngrok on Linux&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Run Ngrok:&lt;/li&gt;
&lt;li&gt; ngrok http 8080&lt;/li&gt;
&lt;li&gt; Copy the Forwarding URL (e.g., &lt;a href="https://d776-2409-40f2-216c.ngrok-free.app" rel="noopener noreferrer"&gt;https://d776-2409-40f2-216c.ngrok-free.app&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt; Use this URL in your GitHub Webhook Settings.&lt;/li&gt;
&lt;li&gt; Access Jenkins externally without using localhost.
________________________________________&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
By following this guide, you will have a fully functional Jenkins CI/CD pipeline integrated with GitHub. The setup ensures seamless automation for your Qt-based projects, including building, testing, and deploying applications efficiently.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Need Help?&lt;/strong&gt;&lt;br&gt;
If you encounter any issues, refer to Jenkins logs and firewall settings or reconfigure Ngrok. For advanced configurations, consult Jenkins Documentation.&lt;/p&gt;

&lt;p&gt;Screenshots:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzqllsp5es93xhg03hxv1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzqllsp5es93xhg03hxv1.png" alt="Image description" width="800" height="145"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa0l1bjknsk5yjk795jgz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa0l1bjknsk5yjk795jgz.png" alt="Image description" width="800" height="359"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftln6ydv3bm3u80zjfrqg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftln6ydv3bm3u80zjfrqg.png" alt="Image description" width="800" height="318"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgk5t854uisddi67dntsp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgk5t854uisddi67dntsp.png" alt="Image description" width="800" height="301"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuilkwgevtjjidim8rh0z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuilkwgevtjjidim8rh0z.png" alt="Image description" width="800" height="580"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwtqs6xe2x2w3ka1ui44g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwtqs6xe2x2w3ka1ui44g.png" alt="Image description" width="800" height="328"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fes9nql7tvhcv881whbvf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fes9nql7tvhcv881whbvf.png" alt="Image description" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>jenkins</category>
      <category>cicd</category>
      <category>github</category>
      <category>linux</category>
    </item>
  </channel>
</rss>
