Skip to content

Instantly share code, notes, and snippets.

@fatiiates
Last active April 16, 2022 18:28

Revisions

  1. fatiiates revised this gist Aug 20, 2021. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions GSoC 21' Jenkins Plugins.md
    Original file line number Diff line number Diff line change
    @@ -27,14 +27,14 @@ The project provides a pipeline DSL plugin that allows users to use buildpacks w
    **Mentor**

    Full Name: Javier ROMERO
    E-mail: [j.romero.1214@gmail.com](mailto:j.romero.1214@gmail.com)
    E-mail: [root@jromero.codes](mailto:root@jromero.codes)
    GitHub: [jromero](https://github.com/jromero)
    Web: https://why.jromero.codes/

    **Student**

    Full Name: Fatih ATES
    E-mail: [fatiiates@gmail.com](mailto:jfatiiates@gmail.com)
    E-mail: [fatiiates@gmail.com](mailto:fatiiates@gmail.com)
    GitHub: [fatiiates](https://github.com/fatiiates)
    Web: https://fatiiates.github.io/

  2. fatiiates revised this gist Aug 20, 2021. 1 changed file with 62 additions and 5 deletions.
    67 changes: 62 additions & 5 deletions GSoC 21' Jenkins Plugins.md
    Original file line number Diff line number Diff line change
    @@ -2,6 +2,18 @@

    The project provides a pipeline DSL plugin that allows users to use buildpacks while developing a pipeline script in Jenkins.

    # CONTENT

    - [ABSTRACT](#abstract)
    - [CONTENT](#content)
    - [LINKS](#links)
    - [GENERAL INFO](#general-info)
    - [PHASES](#phases)
    - [WHAT DID I DO ?](#what-did-i-do-)
    - [HOW IT WAS DONE ?](#how-it-was-done-)
    - [FUTURE WORKS](#future-works)
    - [CONCLUSION](#conclusion)

    ## LINKS

    [GSOC 2021 JENKINS PLUGINS PROPOSAL - FATIH ATES](https://docs.google.com/document/d/1TgUSIgDRFDt7bHzU37zPzfUYww0Ahrh_ndp_UubuV7w/edit?usp=sharing)
    @@ -62,17 +74,62 @@ I developed [this](https://github.com/jromero/buildpacks-jenkins-plugin) Jenkins

    [This repository](https://github.com/jromero/java-buildpack-client) is the same PR sent to the java-buildpack-client repository. It is a repository created to include in pom.xml as if from a maven repository. Development was made on this repository until the PR was accepted. How it is included from Jitpack.io can be seen in [this line](https://github.com/jromero/buildpacks-jenkins-plugin/blob/9fa65dc3560b4ebd98fda3ab778bf744d0405c71/pom.xml#L156).

    ## HOW DID I DO ?
    ## HOW IT WAS DONE ?

    **Research Cloud Native Buildpacks**

    First, I sought answers to questions such as what Buildpacks are and how
    they work. Since I'm using the Heroku platform, I had some ideas about Buildpacks. To correct my misunderstandings and learn more about the tool, I first watched the talks on their page (especially the "Pack to the Future" presentation was very good), then read the documentation from top to bottom.

    **Setup Jenkins development environment and test Docker daemon access**

    After the research process was completed, we started the implementation. Jenkins, Docker, JDK 8 and Maven had to be installed on my computer in order to get into the implementation process. I used a machine with Ubuntu installed for development. I had Docker and JDK 8 on my machine as I used it before. Additionally I installed Jenkins and Maven. After installing the environment, I read the documents prepared about the Jenkins pipeline and got information about the pipelines. Then I moved on to the development step.

    Being able to develop a plugin for Buildpacks was based on accessing the Docker socket. I tested that we can access the Docker socket by restricting the file permissions of the Docker socket, and when we restricted the permissions, we were getting an error, but if we gave 777, we could easily access it. Setting the permissions of the Docker socket file to 777 can compromise your system. So we solved this by including the Jenkins user in the Docker group. Then I gained some experience about Buildpacks, Docker, Jenkins pipelines by using sample applications.

    **Research for Docker daemon integration options (libraries)**

    We searched for references to be able to use docker with java codes in a Jenkins plugin. As a result of my research, we decided that people trying to directly access the docker socket are constantly having problems, and we described it as a worst case. Then we found the docker-workflow and docker-build-step plugins. We decided to use the docker-build-step plugin and then we completed the library search.

    **Define a DSL for the plugin**

    We would either start development directly or proceed by planning. We preferred to go with a plan and first of all we designed DSL. We created a DSL based on pack-cli's features and Buildpacks docs. We now had a fully defined DSL. However, it would be pointless to try to realize all these features in one, so we divided the DSL into phases.

    **Implement DSL and test integration**

    They have prepared a nice guide for developing a plugin. However, this only allows you to create a startup application. Basically two files are needed to define a DSL expression. The first is a Groovy script named provider(Buildpacks) and a Java class as providernameDSL(BuildpacksDSL). Groovy and Java compatibility allow us to pass any data in the pipeline to the Java class. I tested that we could get the parameters by printing the parameters to the console.

    After passing the values ​​to Java, we started working with containers. I tried to implement the system using the docker-build-step plugin that we found before. But no matter how hard I tried, I couldn't do it. I tried to implement it by doing research and development for a long time, but I could not succeed. We asked questions in the forums, tried to get support from developer groups. We even tried to reach the providers of some plugins. Then, one day, we got an e-mail that the mailing list java-buildpack-client was ready. I tested the demo application directly. It totally works. But before creating a dependency in this way, I did some research on docker-build-step for the last time. As a result of my research, I found that this plugin is more suitable for a step rather than a DSL pipeline. Since we couldn't see a sample plugin around using this plugin, we decided to eliminate this method.

    **Work with snowdrop community to make snowdrop/java-buildpack-client compatible with Jenkins**

    We chose to use java-buildpack-client but this required us to act with the Snowdrop community. Jenkins plugins were working with Java 8 while Java-buildpack-client was running with Java 11. This was preventing us from compiling the project. I have created an issue about whether the system can be adapted to Java 8. But they said they were busy and I would save time if I tried it myself, so I did. I struggled to get java-buildpack-client to be implemented in java 8. I was able to apply it to java 8 with a small change. Then I sent it to the repository as a PR.

    However, there was still a problem. Logs are only printed to console and Jenkins was not able to capture them. I contacted the Snowdrop community again by opening an issue. After doing some research, I saw that they defined a logger and we implemented this logger in a class and transferred the logs to Jenkins.

    Another problem was that including java-buildpack-client from a local maven repository was counterproductive. I sent them a new message asking when they could review the PR. Unfortunately they won't be able to review it anytime soon. We opened a new repository and transferred the client here and started to include it from the remote server with Jitpack.io.

    **Integrate snowdrop/java-buildpack-client with our Jenkins plugin**

    The java-buildpack-client was really well designed. The comments of the codes, the readme file, everything that can happen in a code were obvious. Now what I was going to do was pass the DSL variables as a parameter to the java-buildpack-client. Afterwards, we confirmed that the system is working in the development environment and we compiled an hpi file and tested it on the local Jenkins server. In this way, we ensured that the plugin was integrated into Jenkins, and then I prepared a comprehensive Readme.md file.

    **Add support for environment variables.**

    After we got a working plugin, we started adding new features. Undoubtedly, one of the most important features is environment variables. So we added this as the first feature.

    This feature can be defined with two different parameters. env and envFile. The env parameter takes a string or a string expression and contains string data in the format "env1=test". envFile file takes a relative path according to github repository. The envFile file parameter gets a file path relative to the github repository containing the env variables. Env variables are supposed to strictly conform to the format. So I wrote a function to parse those that fit a format and those that don't. A dependency could have been added instead, but it's a simple thing anyway. If there was no problem with the values, it would take all the values ​​to the local variable and then transfer them to the /platform/env directory in the container with the provide of java-buildpack-client. This is the process required for envs to be used during build.

    Buildpacks works like this: basically a builder image is determined, a name is given to the newly created image, and when you give the path of the application, the builder image is run and the lifecycle is run in it, it performs lifecycle operations and creates the OCI image with the desired name.
    After this feature was added, it was made available in v0.1.1

    Firstly, we should be able to access the docker socket in Jenkins. This was requested as the first step and we successfully passed this step by proving that we had access. Afterwards, I was presented with two options: the first was to start developing directly and to learn while developing the system. Second was to define DSL and find library or Jenkins plugin to be able to use docker socket. I chose the second one. Then we defined a DSL by taking pack-cli as an example and divided it into three [phases](#phases). It would be great if I could put forward a plugin that could run the 1st stage until the first evaluation, unfortunately, I could not fulfill this request because it coincided with my exam week. After passing the first assessment, my relationship with the school was over for this period and we completed [phase-1](#phases) in a short time by communicating on Slack almost every day. Later, we made it a plugin that supports ```environment variables```, which is one of the most important stages of the build phase. Finally, we decided to add a UI component, and I've included a guiding example so that global configurations can be included in the system.
    ------------------------

    We have created a comprehensive ```Readme.md``` file because we are aware of how difficult the tools with poor documentation can be for people. I would like to thank **@jromero** for her endless patience and helpfulness. Thank you Google.
    I would like to thank my mentor **@jromero(my mentor)** for his endless patience and helpfulness.
    I would also like to thank **@cmoulliard**, **@BarDweller**, and **@aemengo** for their help.
    Thank you Google.

    Buildpack Jenkins Plugin made with ❤️

    ## Future Works
    ## FUTURE WORKS

    [Phase-1](#phases) already completed [here](https://github.com/jromero/buildpacks-jenkins-plugin/releases/tag/v0.1.0).

  3. fatiiates revised this gist Aug 19, 2021. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion GSoC 21' Jenkins Plugins.md
    Original file line number Diff line number Diff line change
    @@ -68,7 +68,7 @@ Buildpacks works like this: basically a builder image is determined, a name is g

    Firstly, we should be able to access the docker socket in Jenkins. This was requested as the first step and we successfully passed this step by proving that we had access. Afterwards, I was presented with two options: the first was to start developing directly and to learn while developing the system. Second was to define DSL and find library or Jenkins plugin to be able to use docker socket. I chose the second one. Then we defined a DSL by taking pack-cli as an example and divided it into three [phases](#phases). It would be great if I could put forward a plugin that could run the 1st stage until the first evaluation, unfortunately, I could not fulfill this request because it coincided with my exam week. After passing the first assessment, my relationship with the school was over for this period and we completed [phase-1](#phases) in a short time by communicating on Slack almost every day. Later, we made it a plugin that supports ```environment variables```, which is one of the most important stages of the build phase. Finally, we decided to add a UI component, and I've included a guiding example so that global configurations can be included in the system.

    We have created a comprehensive ```Readme.md``` file because we are aware of how difficult the tools with poor documentation can be for people. I would like to thank **@jromero** for her endless patience and helpfulness. Thank you google.
    We have created a comprehensive ```Readme.md``` file because we are aware of how difficult the tools with poor documentation can be for people. I would like to thank **@jromero** for her endless patience and helpfulness. Thank you Google.

    Buildpack Jenkins Plugin made with ❤️

  4. fatiiates revised this gist Aug 19, 2021. 1 changed file with 17 additions and 7 deletions.
    24 changes: 17 additions & 7 deletions GSoC 21' Jenkins Plugins.md
    Original file line number Diff line number Diff line change
    @@ -6,9 +6,9 @@ The project provides a pipeline DSL plugin that allows users to use buildpacks w

    [GSOC 2021 JENKINS PLUGINS PROPOSAL - FATIH ATES](https://docs.google.com/document/d/1TgUSIgDRFDt7bHzU37zPzfUYww0Ahrh_ndp_UubuV7w/edit?usp=sharing)
    [FULL DEFINED PIPELINE DSL](https://hackmd.io/NIfdbyRNRcGpBtaNjIyvrQ?view)
    [Buildpacks PLUGIN's README](https://github.com/fatiiates/buildpacks-jenkins-plugin/blob/main/README.md)
    [Jenkins Buildpacks Plugin Repository](https://github.com/fatiiates/buildpacks-jenkins-plugin)
    [Latest Version(v0.1.1)](https://github.com/fatiiates/buildpacks-jenkins-plugin/releases/tag/v0.1.1)
    [Buildpacks PLUGIN's README](https://github.com/jromero/buildpacks-jenkins-plugin/blob/main/README.md)
    [Jenkins Buildpacks Plugin Repository](https://github.com/jromero/buildpacks-jenkins-plugin)
    [Latest Version(v0.1.1)](https://github.com/jromero/buildpacks-jenkins-plugin/releases/tag/v0.1.1)

    ## GENERAL INFO

    @@ -41,7 +41,7 @@ Web: https://fatiiates.github.io/

    #### **buildpacks-jenkins-plugin**

    I developed [this](https://github.com/fatiiates/buildpacks-jenkins-plugin) Jenkins plugin from scratch.
    I developed [this](https://github.com/jromero/buildpacks-jenkins-plugin) Jenkins plugin from scratch.

    ### **Other Repositories**

    @@ -60,13 +60,23 @@ I developed [this](https://github.com/fatiiates/buildpacks-jenkins-plugin) Jenki

    #### **java-buildpack-client(clone)**

    [This repository](https://github.com/fatiiates/java-buildpack-client) is the same PR sent to the java-buildpack-client repository. It is a repository created to include in pom.xml as if from a maven repository. Development was made on this repository until the PR was accepted. How it is included from Jitpack.io can be seen in [this line](https://github.com/fatiiates/buildpacks-jenkins-plugin/blob/9fa65dc3560b4ebd98fda3ab778bf744d0405c71/pom.xml#L156).
    [This repository](https://github.com/jromero/java-buildpack-client) is the same PR sent to the java-buildpack-client repository. It is a repository created to include in pom.xml as if from a maven repository. Development was made on this repository until the PR was accepted. How it is included from Jitpack.io can be seen in [this line](https://github.com/jromero/buildpacks-jenkins-plugin/blob/9fa65dc3560b4ebd98fda3ab778bf744d0405c71/pom.xml#L156).

    ## HOW DID I DO ?

    Buildpacks works like this: basically a builder image is determined, a name is given to the newly created image, and when you give the path of the application, the builder image is run and the lifecycle is run in it, it performs lifecycle operations and creates the OCI image with the desired name.

    Firstly, we should be able to access the docker socket in Jenkins. This was requested as the first step and we successfully passed this step by proving that we had access. Afterwards, I was presented with two options: the first was to start developing directly and to learn while developing the system. Second was to define DSL and find library or Jenkins plugin to be able to use docker socket. I chose the second one. Then we defined a DSL by taking pack-cli as an example and divided it into three [phases](#phases). It would be great if I could put forward a plugin that could run the 1st stage until the first evaluation, unfortunately, I could not fulfill this request because it coincided with my exam week. After passing the first assessment, my relationship with the school was over for this period and we completed [phase-1](#phases) in a short time by communicating on Slack almost every day. Later, we made it a plugin that supports ```environment variables```, which is one of the most important stages of the build phase. Finally, we decided to add a UI component, and I've included a guiding example so that global configurations can be included in the system.

    We have created a comprehensive ```Readme.md``` file because we are aware of how difficult the tools with poor documentation can be for people. I would like to thank **@jromero** for her endless patience and helpfulness. Thank you google.

    Buildpack Jenkins Plugin made with ❤️

    ## Future Works

    [Phase-1](#phases) already completed [here](https://github.com/fatiiates/buildpacks-jenkins-plugin/releases/tag/v0.1.0).
    [Phase-1](#phases) already completed [here](https://github.com/jromero/buildpacks-jenkins-plugin/releases/tag/v0.1.0).

    So, the next step is to transfer the features in pack-cli to the jenkins plugin, that is, to complete [Phase-2](#phases). Some progress has been made in this phase, and the latest version can be found [here](https://github.com/fatiiates/buildpacks-jenkins-plugin/releases/tag/v0.1.1).
    So, the next step is to transfer the features in pack-cli to the jenkins plugin, that is, to complete [Phase-2](#phases). Some progress has been made in this phase, and the latest version can be found [here](https://github.com/jromero/buildpacks-jenkins-plugin/releases/tag/v0.1.1).

    After [Phase-2](#phases) is completed, the process now comes to [Phase-3](#phases). [Phase-3](#phases), again, includes adding some features to the DSL from pack-cli, giving colored outputs in console outputs, connecting the logs of java-buildpack-client to jenkins and discussing what can be added.

  5. fatiiates renamed this gist Aug 17, 2021. 1 changed file with 20 additions and 8 deletions.
    28 changes: 20 additions & 8 deletions GsOC 21' Jenkins Plugins.md → GSoC 21' Jenkins Plugins.md
    Original file line number Diff line number Diff line change
    @@ -7,7 +7,8 @@ The project provides a pipeline DSL plugin that allows users to use buildpacks w
    [GSOC 2021 JENKINS PLUGINS PROPOSAL - FATIH ATES](https://docs.google.com/document/d/1TgUSIgDRFDt7bHzU37zPzfUYww0Ahrh_ndp_UubuV7w/edit?usp=sharing)
    [FULL DEFINED PIPELINE DSL](https://hackmd.io/NIfdbyRNRcGpBtaNjIyvrQ?view)
    [Buildpacks PLUGIN's README](https://github.com/fatiiates/buildpacks-jenkins-plugin/blob/main/README.md)
    [Jenkins Buildpacks Plugin Repository](https://github.com/fatiiates/buildpacks-jenkins-plugin)
    [Jenkins Buildpacks Plugin Repository](https://github.com/fatiiates/buildpacks-jenkins-plugin)
    [Latest Version(v0.1.1)](https://github.com/fatiiates/buildpacks-jenkins-plugin/releases/tag/v0.1.1)

    ## GENERAL INFO

    @@ -28,7 +29,6 @@ Web: https://fatiiates.github.io/
    ## PHASES

    1. **Phase** A user is able to provide a Buildpacks specific DSL that specifies a builder, a path, and image name which results in an image created as \<image name>.

    2. **Phase** A user should be able to fully use [defined DSL](https://hackmd.io/NIfdbyRNRcGpBtaNjIyvrQ?view) expressions.

    3. **Phase** What can be added in addition to DSL ? For example: colorful outputs, connected [java-buildpack-client](https://github.com/snowdrop/java-buildpack-client) outputs to plugin...
    @@ -37,6 +37,18 @@ Web: https://fatiiates.github.io/

    ## WHAT DID I DO ?

    ### **My Repositories**

    #### **buildpacks-jenkins-plugin**

    I developed [this](https://github.com/fatiiates/buildpacks-jenkins-plugin) Jenkins plugin from scratch.

    ### **Other Repositories**

    #### **java-buildpack-client**

    [The repository](https://github.com/snowdrop/java-buildpack-client) is a java client for buildpacks developed by the snowdrop team.

    **Issues:**
    1. https://github.com/snowdrop/java-buildpack-client/issues/12 (Closed)
    2. https://github.com/snowdrop/java-buildpack-client/issues/13 (Closed)
    @@ -46,22 +58,22 @@ Web: https://fatiiates.github.io/

    1. https://github.com/snowdrop/java-buildpack-client/pull/14 (Under review)

    **Commits:**
    #### **java-buildpack-client(clone)**

    1. https://github.com/fatiiates/buildpacks-jenkins-plugin/commits?author=fatiiates
    [This repository](https://github.com/fatiiates/java-buildpack-client) is the same PR sent to the java-buildpack-client repository. It is a repository created to include in pom.xml as if from a maven repository. Development was made on this repository until the PR was accepted. How it is included from Jitpack.io can be seen in [this line](https://github.com/fatiiates/buildpacks-jenkins-plugin/blob/9fa65dc3560b4ebd98fda3ab778bf744d0405c71/pom.xml#L156).

    ### FUTURE WORKS
    ## Future Works

    [Phase-1](#phases) already completed [here](https://github.com/fatiiates/buildpacks-jenkins-plugin/releases/tag/v0.1.0).

    So, the next step is to transfer the features in pack-cli to the jenkins plugin, that is, to complete [Phase-2](#phases).
    So, the next step is to transfer the features in pack-cli to the jenkins plugin, that is, to complete [Phase-2](#phases). Some progress has been made in this phase, and the latest version can be found [here](https://github.com/fatiiates/buildpacks-jenkins-plugin/releases/tag/v0.1.1).

    After [Phase-2](#phases) is completed, the process now comes to [Phase-3](#phases). [Phase-3](#phases), again, includes adding some features to the DSL from pack-cli, giving colored outputs in console outputs, connecting the logs of java-buildpack-client to jenkins and discussing what can be added.

    When it comes to the last phase, named by [Phase-4](#phases), the plug-in is operational with all DSL features. Only the routine checks of the plugin, the newly added features to the buildpacks system are also included in the plugin, and the innovations/requirements brought to the plugins by Jenkins are applied to the plugin. This step will continue as long as the ecosystem lives...

    ### CONCLUSION
    ## CONCLUSION

    Terminal commands were already available in Jenkins. So this allowed you to use the pack command. However, when you want to write a pipeline script, it didn't give a chance to have a system that works compatible with jenkins. In addition, it was a non-recommended use.

    Jenkins pipeline DSL Buildpacks plugin allows you to use buildpacks compatible with Jenkins. The base system([Phase-1](#phases)) is currently available. What needs to be done is to fix the bugs and add new features.
    Jenkins pipeline DSL Buildpacks plugin allows you to use buildpacks compatible with Jenkins. The base system([Phase-1](#phases)) is currently available. What needs to be done is to fix the bugs and add new features.
  6. fatiiates revised this gist Aug 14, 2021. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion GsOC 21' Jenkins Plugins.md
    Original file line number Diff line number Diff line change
    @@ -6,7 +6,7 @@ The project provides a pipeline DSL plugin that allows users to use buildpacks w

    [GSOC 2021 JENKINS PLUGINS PROPOSAL - FATIH ATES](https://docs.google.com/document/d/1TgUSIgDRFDt7bHzU37zPzfUYww0Ahrh_ndp_UubuV7w/edit?usp=sharing)
    [FULL DEFINED PIPELINE DSL](https://hackmd.io/NIfdbyRNRcGpBtaNjIyvrQ?view)
    [Buildpacks PLUGIN's README](https://github.com/fatiiates/buildpacks-jenkins-plugin/blob/main/README.md)
    [Buildpacks PLUGIN's README](https://github.com/fatiiates/buildpacks-jenkins-plugin/blob/main/README.md)
    [Jenkins Buildpacks Plugin Repository](https://github.com/fatiiates/buildpacks-jenkins-plugin)

    ## GENERAL INFO
  7. fatiiates revised this gist Aug 14, 2021. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions GsOC 21' Jenkins Plugins.md
    Original file line number Diff line number Diff line change
    @@ -7,6 +7,7 @@ The project provides a pipeline DSL plugin that allows users to use buildpacks w
    [GSOC 2021 JENKINS PLUGINS PROPOSAL - FATIH ATES](https://docs.google.com/document/d/1TgUSIgDRFDt7bHzU37zPzfUYww0Ahrh_ndp_UubuV7w/edit?usp=sharing)
    [FULL DEFINED PIPELINE DSL](https://hackmd.io/NIfdbyRNRcGpBtaNjIyvrQ?view)
    [Buildpacks PLUGIN's README](https://github.com/fatiiates/buildpacks-jenkins-plugin/blob/main/README.md)
    [Jenkins Buildpacks Plugin Repository](https://github.com/fatiiates/buildpacks-jenkins-plugin)

    ## GENERAL INFO

  8. fatiiates revised this gist Aug 14, 2021. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion GsOC 21' Jenkins Plugins.md
    Original file line number Diff line number Diff line change
    @@ -57,7 +57,7 @@ So, the next step is to transfer the features in pack-cli to the jenkins plugin,

    After [Phase-2](#phases) is completed, the process now comes to [Phase-3](#phases). [Phase-3](#phases), again, includes adding some features to the DSL from pack-cli, giving colored outputs in console outputs, connecting the logs of java-buildpack-client to jenkins and discussing what can be added.

    When it comes to the last phase, named by [Phase-4](#phases), the plug-in is operational with all DSL features. Only the routine checks of the plugin, the newly added features to the buildpacks system are also included in the plugin, and the innovations/requirements brought to the plugins by Jenkins are applied to the plugin. This step will continue as long as the
    When it comes to the last phase, named by [Phase-4](#phases), the plug-in is operational with all DSL features. Only the routine checks of the plugin, the newly added features to the buildpacks system are also included in the plugin, and the innovations/requirements brought to the plugins by Jenkins are applied to the plugin. This step will continue as long as the ecosystem lives...

    ### CONCLUSION

  9. fatiiates revised this gist Aug 14, 2021. 1 changed file with 8 additions and 34 deletions.
    42 changes: 8 additions & 34 deletions GsOC 21' Jenkins Plugins.md
    Original file line number Diff line number Diff line change
    @@ -27,55 +27,29 @@ Web: https://fatiiates.github.io/
    ## PHASES

    1. **Phase** A user is able to provide a Buildpacks specific DSL that specifies a builder, a path, and image name which results in an image created as \<image name>.

    2. **Phase** A user should be able to fully use [defined DSL](https://hackmd.io/NIfdbyRNRcGpBtaNjIyvrQ?view) expressions.

    3. **Phase** What can be added in addition to DSL ? For example: colorful outputs, connected [java-buildpack-client](https://github.com/snowdrop/java-buildpack-client) outputs to plugin...

    ## RELATED WORK
    4. **Phase** This phase, includes the integration of the constantly evolving Buildpacks features into the Jenkins Buildpacks plugin and making improvements and bug fixes on the plugin according to the constantly improving Jenkins system. This step never ends.

    ## WHAT DID I DO ?

    **Issues:**
    1. https://github.com/snowdrop/java-buildpack-client/issues/12 (Closed)
    2. https://github.com/snowdrop/java-buildpack-client/issues/13 (Closed)
    3. https://github.com/snowdrop/java-buildpack-client/issues/15 (Open)

    **PRs:**
    **PR:**

    1. https://github.com/snowdrop/java-buildpack-client/pull/14 (Under review)

    **Commits:**

    1. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/30e59f58e21d50f2eac13d1857b9257786bf3719
    2. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/75a980d7410d0e5a0ae77d25ae02869bf5b35635
    3. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/0879d76bc65c2e6ebadf2b940d39171f9a325e54
    4. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/70e0d8fe8d31df36a1b842d8b12dc5ca37bca42e
    5. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/ea00b0e8d1a5c8bcbc20349141b29d5dd4aa16e8
    6. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/2ae96eb0e6c340dd661a620f0076d7555d095fd5
    7. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/62aa3691539af7ad71301ea81daec62cb169a381
    8. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/d3f00e995d55fe6e8194bc26f5b28a187e1181c8
    9. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/ddfc5035bb414ccdfbb1fb3e3ec207da85e9bfae
    10. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/d448dc37fc4133b831b6c6b44a98ba8107147c0e
    11. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/1d7c3f2bafeb0d79c773d83a2a32da26bad73ce1
    12. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/419b2d05258d96e0714013368aad31559f1cc784
    13. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/3c049cbc983a5b1befa4239f5af91e11e44c35a5
    14. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/7268c4d7329fd80794f644b420cee1771efe1f35
    15. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/f150c4f809e2f3921f0e047d85079b2f8f4b7f15
    16. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/0fbf1d19566f1ab8d0fb14e4d2e9922b81daf0c0
    17. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/66b5e40d04ea97e41529701bb638ba0dc9f7c4db
    18. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/7e0344be9c86c1bdae8ebaecd1c2966d2e481c01
    19. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/4062ecde775fda07f7b6d0b27f57366ed614bef9
    20. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/121bb801ae8aa0a6641e321fbef09be592146e3a
    21. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/3575657fe348d527b7951c0df0a528702376f91c
    22. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/70308985093b99284f6f9aae1857f3bbfe2ced0f
    23. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/187aaf71e0dc86134b12e54a6fa8289542eee5c0
    24. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/fa6661fcbefb8f194e0da5859d2d8a825977b2aa
    25. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/84705e33ca893d84994b9340d850359693734a73
    26. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/3a1cb41c09922ffb8fc4c773c77e049530acfd90
    27. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/5acad1f6ad887026dcd2592eb3f0563eb974564c
    28. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/6c2fe915e75eccab9bc66690515a7f1cccfe5821
    29. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/980223dc4aedf40ed6d5ad5b1019ceb75d0c65e3
    30. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/b543c8171d12d6664ef2f68785b7388bc6de943e

    ### Future Work
    1. https://github.com/fatiiates/buildpacks-jenkins-plugin/commits?author=fatiiates

    ### FUTURE WORKS

    [Phase-1](#phases) already completed [here](https://github.com/fatiiates/buildpacks-jenkins-plugin/releases/tag/v0.1.0).

  10. fatiiates revised this gist Aug 14, 2021. 1 changed file with 8 additions and 0 deletions.
    8 changes: 8 additions & 0 deletions GsOC 21' Jenkins Plugins.md
    Original file line number Diff line number Diff line change
    @@ -77,6 +77,14 @@ Web: https://fatiiates.github.io/

    ### Future Work

    [Phase-1](#phases) already completed [here](https://github.com/fatiiates/buildpacks-jenkins-plugin/releases/tag/v0.1.0).

    So, the next step is to transfer the features in pack-cli to the jenkins plugin, that is, to complete [Phase-2](#phases).

    After [Phase-2](#phases) is completed, the process now comes to [Phase-3](#phases). [Phase-3](#phases), again, includes adding some features to the DSL from pack-cli, giving colored outputs in console outputs, connecting the logs of java-buildpack-client to jenkins and discussing what can be added.

    When it comes to the last phase, named by [Phase-4](#phases), the plug-in is operational with all DSL features. Only the routine checks of the plugin, the newly added features to the buildpacks system are also included in the plugin, and the innovations/requirements brought to the plugins by Jenkins are applied to the plugin. This step will continue as long as the

    ### CONCLUSION

    Terminal commands were already available in Jenkins. So this allowed you to use the pack command. However, when you want to write a pipeline script, it didn't give a chance to have a system that works compatible with jenkins. In addition, it was a non-recommended use.
  11. fatiiates revised this gist Aug 14, 2021. 1 changed file with 2 additions and 1 deletion.
    3 changes: 2 additions & 1 deletion GsOC 21' Jenkins Plugins.md
    Original file line number Diff line number Diff line change
    @@ -75,9 +75,10 @@ Web: https://fatiiates.github.io/
    29. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/980223dc4aedf40ed6d5ad5b1019ceb75d0c65e3
    30. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/b543c8171d12d6664ef2f68785b7388bc6de943e

    ### Future Work

    ### CONCLUSION

    Terminal commands were already available in Jenkins. So this allowed you to use the pack command. However, when you want to write a pipeline script, it didn't give a chance to have a system that works compatible with jenkins. In addition, it was a non-recommended use.

    Jenkins pipeline DSL Buildpacks plugin allows you to use buildpacks compatible with Jenkins. The base system is currently available. What needs to be done is to fix the bugs and add new features.
    Jenkins pipeline DSL Buildpacks plugin allows you to use buildpacks compatible with Jenkins. The base system([Phase-1](#phases)) is currently available. What needs to be done is to fix the bugs and add new features.
  12. fatiiates created this gist Aug 14, 2021.
    83 changes: 83 additions & 0 deletions GsOC 21' Jenkins Plugins.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,83 @@
    ## ABSTRACT

    The project provides a pipeline DSL plugin that allows users to use buildpacks while developing a pipeline script in Jenkins.

    ## LINKS

    [GSOC 2021 JENKINS PLUGINS PROPOSAL - FATIH ATES](https://docs.google.com/document/d/1TgUSIgDRFDt7bHzU37zPzfUYww0Ahrh_ndp_UubuV7w/edit?usp=sharing)
    [FULL DEFINED PIPELINE DSL](https://hackmd.io/NIfdbyRNRcGpBtaNjIyvrQ?view)
    [Buildpacks PLUGIN's README](https://github.com/fatiiates/buildpacks-jenkins-plugin/blob/main/README.md)

    ## GENERAL INFO

    **Mentor**

    Full Name: Javier ROMERO
    E-mail: [j.romero.1214@gmail.com](mailto:j.romero.1214@gmail.com)
    GitHub: [jromero](https://github.com/jromero)
    Web: https://why.jromero.codes/

    **Student**

    Full Name: Fatih ATES
    E-mail: [fatiiates@gmail.com](mailto:jfatiiates@gmail.com)
    GitHub: [fatiiates](https://github.com/fatiiates)
    Web: https://fatiiates.github.io/

    ## PHASES

    1. **Phase** A user is able to provide a Buildpacks specific DSL that specifies a builder, a path, and image name which results in an image created as \<image name>.
    2. **Phase** A user should be able to fully use [defined DSL](https://hackmd.io/NIfdbyRNRcGpBtaNjIyvrQ?view) expressions.

    3. **Phase** What can be added in addition to DSL ? For example: colorful outputs, connected [java-buildpack-client](https://github.com/snowdrop/java-buildpack-client) outputs to plugin...

    ## RELATED WORK

    **Issues:**
    1. https://github.com/snowdrop/java-buildpack-client/issues/12 (Closed)
    2. https://github.com/snowdrop/java-buildpack-client/issues/13 (Closed)
    3. https://github.com/snowdrop/java-buildpack-client/issues/15 (Open)

    **PRs:**

    1. https://github.com/snowdrop/java-buildpack-client/pull/14 (Under review)

    **Commits:**

    1. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/30e59f58e21d50f2eac13d1857b9257786bf3719
    2. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/75a980d7410d0e5a0ae77d25ae02869bf5b35635
    3. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/0879d76bc65c2e6ebadf2b940d39171f9a325e54
    4. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/70e0d8fe8d31df36a1b842d8b12dc5ca37bca42e
    5. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/ea00b0e8d1a5c8bcbc20349141b29d5dd4aa16e8
    6. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/2ae96eb0e6c340dd661a620f0076d7555d095fd5
    7. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/62aa3691539af7ad71301ea81daec62cb169a381
    8. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/d3f00e995d55fe6e8194bc26f5b28a187e1181c8
    9. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/ddfc5035bb414ccdfbb1fb3e3ec207da85e9bfae
    10. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/d448dc37fc4133b831b6c6b44a98ba8107147c0e
    11. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/1d7c3f2bafeb0d79c773d83a2a32da26bad73ce1
    12. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/419b2d05258d96e0714013368aad31559f1cc784
    13. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/3c049cbc983a5b1befa4239f5af91e11e44c35a5
    14. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/7268c4d7329fd80794f644b420cee1771efe1f35
    15. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/f150c4f809e2f3921f0e047d85079b2f8f4b7f15
    16. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/0fbf1d19566f1ab8d0fb14e4d2e9922b81daf0c0
    17. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/66b5e40d04ea97e41529701bb638ba0dc9f7c4db
    18. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/7e0344be9c86c1bdae8ebaecd1c2966d2e481c01
    19. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/4062ecde775fda07f7b6d0b27f57366ed614bef9
    20. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/121bb801ae8aa0a6641e321fbef09be592146e3a
    21. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/3575657fe348d527b7951c0df0a528702376f91c
    22. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/70308985093b99284f6f9aae1857f3bbfe2ced0f
    23. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/187aaf71e0dc86134b12e54a6fa8289542eee5c0
    24. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/fa6661fcbefb8f194e0da5859d2d8a825977b2aa
    25. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/84705e33ca893d84994b9340d850359693734a73
    26. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/3a1cb41c09922ffb8fc4c773c77e049530acfd90
    27. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/5acad1f6ad887026dcd2592eb3f0563eb974564c
    28. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/6c2fe915e75eccab9bc66690515a7f1cccfe5821
    29. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/980223dc4aedf40ed6d5ad5b1019ceb75d0c65e3
    30. https://github.com/fatiiates/buildpacks-jenkins-plugin/commit/b543c8171d12d6664ef2f68785b7388bc6de943e


    ### CONCLUSION

    Terminal commands were already available in Jenkins. So this allowed you to use the pack command. However, when you want to write a pipeline script, it didn't give a chance to have a system that works compatible with jenkins. In addition, it was a non-recommended use.

    Jenkins pipeline DSL Buildpacks plugin allows you to use buildpacks compatible with Jenkins. The base system is currently available. What needs to be done is to fix the bugs and add new features.