Fullname: FATIH ATES
GSoC Display Name: FATIH ATES
E-mail: [email protected]
Portfolio: https://fatiiates.github.io/
GitHub: https://github.com/fatiiates
LinkedIn: https://www.linkedin.com/in/fatiiates/
Medium: https://fatiiates.medium.com/
Resume: Link to Resume
SHORT DESCRIPTION
I am a 3rd year student at Bursa Technical University(Turkey), working toward my bachelor’s degree in Computer Engineering with heavy emphasis on programming and software development. I have been developing myself on Cloud Infrastructure and Unix systems for one and a half years. And I have knowledge of the Java programming language.
GSOC PROPOSAL DATA
I was in the BTU DSC core team for a year. And now I am developing software for Professor Turgay Tugay BILGIN project, supported by TUBITAK. Everything I do is in my portfolio (Projects I developed, Resume, University Background).
CNB and Jenkins Plugins
Cloud Native Buildpacks turn your code into OCI-compliant containers. They examine your source code, build it, and create a container image with all the required dependencies to run your application.[1]
Jenkins is an open source CI server written in Java to create a chain of actions to automatically perform the CI process. Jenkins supports software creation, testing, documentation, deployment, and the entire software development lifecycle.
PROBLEM
Writing a plugin necessary for Jenkins users to use buildpacks in their pipelines.
INTEREST
I reviewed your issue on github. The proposed solution seems reasonable. Additionally, I reviewed the packages created for CircleCI. I've read blogs about topics like writing plugins on Jenkins and I'm interested in your project because I want to learn about CI processes in a sense.
IMPLEMENTATION
In the proposed solution, we will prepare a plugin with DSL syntax like Docker Pipeline plugin. And we will perform operations in Java language by interpreting these entered scripts like an interpreter.
I want to give an example from the plugin made for CircleCI before.[2] Suppose we choose yaml format as DSL. When you are given a yaml script like the one below.
We can parse the yaml file to classes as described in the following link.
And then we'll have the inputs. There is only one job here(buildpacks/build). This job has two variables. It could also have a list or other parameters as environment variables. However, the basic command is as follows.
Then it may be enough to run the following command with Java.
pack build --builder heroku/buildpacks:18 myimage
Thus, our docker image is made ready with buildpacks.
Now that these operations are done, we need to create a plugin on Jenkins.
We will create a plugin as described in the jenkins tutorial.
As a result, we will have a plugin such as a Docker Pipeline Plugin.
MOTIVATION
I am currently in 3rd grade and can implement various web applications and take care of services. However, this is not enough. The applications I develop are independent of cloud logic. I'm learning k8s right now and I'm thinking of working as a DevOps Engineer in the future. And so I need to master the CI / CD processes and I will be doing an internship at a company this summer, which means there are a lot of engineers I can consult with on problems that I will have difficulty solving. In addition, although I have COVID-19, I am in the city where my university is located and I can meet with the Professors at my school whenever I want, so I get their support. But my main motivation is to be an open source supporter.
TIMELINE
- MAY 17 - JUNE 7
Meeting with the community, exchanging ideas, conducting solution-oriented resource research, learning your documentation rules and preparing a requirement analysis and a strategic plan.
- JUNE 7 - JUNE 14
A DSL syntax must be created or we can use a prebuilt syntax.
- JUNE 14 - JUNE 21
Interpretation will be performed on the Java programming language according to the agreed syntax.
- JUNE 21 - JULY 05
The operations to be performed according to the interpretation process will be coded with the Java programming language.
- JULY 05 - JULY 12
Testing and documentation of the code obtained.
- JULY 12 - JULY 16
Situation assessments with mentors. Defining the next process. Innovations, additions and documentation planning to be made.
- JULY 16 - JULY 30
Implementing the obtained code to Jenkins.
- JULY 30 - AUGUST 16
Comprehensive testing and documentation of the code obtained.
- AUGUST 16 - AUGUST 23
Delivery of the entire project and documentations and sending final evaluations.
- AUGUST 23 - AUGUST 30
Mentors submit their final evaluation.
- AUGUST 31
Announcement of the results.
REFERENCES