I created a CI/CD pipeline using Jenkins to handle the integration and deployment of my Node-App project. This project will be a central HTTP server which will be used for some of my future projects.
The Node-App interfaces with a MySQL database using Knex to execute queries. As part of the CI/CD pipeline I utilised Mocha to handle automated testing.</p>
I used an Apache reverse proxy to forward traffic to the Jenkins web interface (\jenkins), the PhpMyAdmin interface (for MySQL) (\phpmyadmin), a general php webpage (\php) or to the Node-App routes (\).
August 31, 2021
In this post I finally revisit my server app and update Jenkins to the latest version and some other maintenance and improvement tasks.
August 28, 2021
I changed the domain used for my server and reconfigured Apache2 to have a homepage to link to all the services now running on it - phpmyadmin, jenkins, the node-app and now the homepage.
August 23, 2021
In this post I return to my server app to make some much-needed maintenance updates and prepare it for changes I’ll be making to the budget API.
September 08, 2020
In this post I replaced the Knex library I was using to construct queries with straight SQL queries using the normal mysql library using pooled connections and promises.
March 17, 2020
With all the changes made in the last few posts, obviously my Hello World tests would now fail and I needed to write new ones to verify the authentication was working correctly.
February 25, 2020
I’d previously installed mysql but the authentication I added in my last blog post just kept everything in memory so far so in this post I’ll be using the MySQL database connected to Node using Knex to construct queries.
February 18, 2020
After installing MySQL I realised that I needed a better solution than just storing plaintext usernames and passwords in an authentication table. So while I’m on my security-spree I’ve decided to implement the authentication middleware for the Node App including salting and hashing passwords using bcrypt
and issuing JSON Web Tokens (JWT) to authenticate subsequent requests.
February 16, 2020
With my server now secured I’m installing MySQL and phpMyAdmin for the database and to view and configure it via a GUI.
February 15, 2020
In my last blog post I registered a new domain name and installed a Let’s Encrypt certificate to configure HTTPS, but now I reconfigured it so Jenkins would be secured too and could be reached on https://imade-aserver.xyz/jenkins
.
February 04, 2020
Today I’m adding HTTPS support to my new All in One Server by registering a domain name and installing an SSL certificate from Lets Encrypt.
January 21, 2020
In this post I’m basically starting the CI/CD pipeline from scratch on a new server - this time I’ll keep it running 24/7 so I can get moving on the projects that will interact with it. This involves setting up Jenkins and the CI/CD pipeline again, configuring Apache as a reverse proxy and finally adding an SSL certificate to implement HTTPS for added security.
December 10, 2019
I want to add HTTPS support to the node-app server so today I configured an Apache Reverse Proxy to redirect traffic from port 80 and 443 (HTTP and HTTPS) to my node-app which runs on port 3000.
October 15, 2019
After getting my CI/CD pipeline up and running, I needed an easier way to create droplets from snapshots so that process wasn’t so time-consuming.
October 01, 2019
Now that the Continuous Integration part of my pipeline was working, today I got the Continuous Delivery/Deployment part working to automatically deploy to the live server.
September 17, 2019
Last time I did the initial configuration of Jenkins but I’m having a few issues. Today I’ll be troubleshooting these issues and making sure GitHub and Jenkins are hooked up correctly, and that all the automated tests run and pass successfully.
September 03, 2019
Today I’m carrying on with my CI/CD pipeline by creating the Jenkins server that will do the automated testing and deployment of the Node-App.
August 20, 2019
In my last blog post I set up the HelloWorld Node.js app on a Digital Ocean droplet. Today, I had a few security and access issues when re-creating the server using the snapshot I took previously.
August 06, 2019
Jenkins is an open source automation server that can be used to set up a Continuous Integration/Continuous Delivery (CI/CD) pipeline to streamline the deployment process. I wanted to set it up for my next project; a Node.js server that I could use for a lot of my future projects - I want to create a RESTful API that I can use for any of my projects that need to communicate with a central server.