Loading...

Blog > Google Summer of Code '21 - Proposal

Google Summer of Code '21 - Proposal

Google Summer of Code '21 - Proposal

This is the proposal which I submitted to CNCF for GSoC 2021. I proposed to work on the CNB - Jenkins Plugins. I have explained the problem, my interest, implementation, motivation, timeline, and references in this proposal

Published: April 13, 2021

Last updated: March 16, 2024

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

  1. 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.

  2. 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).

  3. 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.

  4. PROBLEM

    Writing a plugin necessary for Jenkins users to use buildpacks in their pipelines.

  5. 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.

  6. 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.

    https://www.w3schools.io/file/yaml-java-read-write/

    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.

    https://www.jenkins.io/doc/developer/tutorial/create/

    As a result, we will have a plugin such as a Docker Pipeline Plugin.

  7. 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.

  8. 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.

  9. REFERENCES

    [1]Cloud Native Buildpacks.

    [2]https://circleci.com/developer/orbs/orb/buildpacks/pack

SOURCES

Categories

Google Summer of CodeCNCFJenkinsBuildpacks2021