TL;TR
Go to see Contributions Summary
☑️ Who We Are
The ArgoWorkflows OSS 2023
team have 18 member. (1 Mentor, 17 Mentees)
Our Team met for participant to Open Source Contribution Academy (opens in a new tab).
A competition for junior developers with the theme How can I contribute well to open source?
This event is a competition where some mentors
and about 20 mentees
are paired up and the goal is to contribute together and achieve results for four months.
We participated in this event on the open source topic of ArgoWorkflows.
Most of us were afraid to even use git at first. but we made succeeded in making various contributions over the past three months.
Let me introduce our achievements.
☑️ What is ArgoWorkflows
Before the achievements introduction, Lets know about what is ArgoWorkflows
.
Argo Workflows is a container-based workflow engine, an open source project that can run parallel jobs on Kubernetes. Each workflow step is defined as a container, and multi-step workflows can be modeled as a series of jobs, or dependencies between tasks can be executed using a Directed Acyclic Graph (DAG).
In other words, Argo Workflows makes it faster and easier to simple workflows tasks, as well as complex tasks for machine learning or data processing, on Kubernetes.
Argo Workflows is a graduated project of the Cloud Native Computing Foundation (CNCF).
To become a graduated project, it must pass all tests conducted by the CNCF to meet their rigorous standards. Being recognized as a graduated project means that Argo meets the highest standards for clear governance and committer processes, healthy growth, and security and compliance adherence. Since the rigorous standards, only about 13% of projects registered with the CNCF succeed in graduating.
In fact, it took about 5 years for the Argo project to be recognized as a graduated project, with over 7,000 contributors, over 11,000 PRs, and over 370,000 contributions.
Moreover, the Argo project is a very active and up-to-date open source, with over 2300 companies contributing to the code and over 8300 people contributing to the code.
Argo Workflows is recognized as the most representative workflow engine in the cloud native community.
Many companies around the world officially have introduced and used Argo Workflows. This is means that Argo Workflows can solve issues with workload in big companies.
The following major companies are using Argo Workflows.
... and over 200 other global companies
Some alternative tools to Argo Workflows include Apache Airflow, Tekton, and Prefect.
Argo Workflows is a Kubernetes-native engine that makes it easy to orchestrate container-based workflows and manage resources. Apache Airflow, similiar but different to Argo Workflows, is a standalone application and does not inherently utilize the capabilities of Kubernetes. As a result, Airflow can more difficult to resource management and scalability than Argo Workflows.
Also, Argo Workflows can perform a various of tasks such as CI/CD as well as data pipelines because it runs each workflow step as an independent container. This is possible due to use the power of Container and Kubernetes, than it can run anything without restrictions.
☑️ Key Accomplishments
UI/UX improvements
The Argo Workflows project is actively contributing to UI/UX improvement
as the main topic for contribution.
As proof of this, you can also check the dashboard for UI/UX improvement tracking.
Our team has also made many UI improvements along these project goals.
Key improvements for UI/UX
- Search by name for WorkflowTemplates in UI (opens in a new tab)
- show history about completed runs in each cron workflow (opens in a new tab)
- Improvements to DataPciker (opens in a new tab)
- UI toolbar sticky (opens in a new tab)
- ... and Various other bug fixes
Improving core functionality
As contributions accumulate, our understanding of the project increased and we got more confidence. We were increasingly able to contribute not only UI/UX improvements, but also the core functionality of the workflow engine.
What’s new in Argo Workflows v3.5 (opens in a new tab)
The core logic of the workflow engine is install as a CRD in Kubernetes and has a significant impact on the behavior and performance of a Kubernetes cluster. So, Contributing to workflow engine is quite difficult.
because it requires a high level of implementation and active participation in testing and policy discussions with maintainers.
It was challenge for us, but our team was able to make key contributions to the Argo Workflows 3.5 release. Also We were mentioned to the Argo official blog by contributing very important features to Template Spec
, Authentication
, and Controller
.
Even after the release of Argo Workflows 3.5, we made many contributions such as CI and test environments for DX improvements
, new features in the Nix
, Controller
, and Template specifications
, updating GoLang version
.
With more contributions, We are making progress in making Argo workflows a much better tool in next release.
Close communication with the maintainer group
Our team was very fortunate that the Argo Workflows project got a new leader in May of this year, Yuan Tang (opens in a new tab), and the breath of contributions across the project really accelerated.
Normally, in a large project like this, it would take quite a long time for reviews making it difficult to a lot of contributions. However, Thanks to the talented project head and his team, all of the ArgoWorkflows team members who participated in this competition learned a lot, experienced a lot, and grew through a lot of contributions in a short time.
Opportunities for contributions existed outside Issue and PR pages.
We were able to have the valuable experience of being in open source project, such as deciding on a policy for processing logic in the project to resolve issues and experiencing being assigned and working on other related issues.
Now, We introduce our contributions during the project.
Contribute Info
GitHub | Type | Summary |
---|
☑️ Contribution Academy progress and activity details
From not knowing anything about Git to becoming an open source contributor
Of the 17 Masters stage participants, 12 of our team were made up of members who had no experience in proper collaboration/code review through GIT.
As it is a CRD that runs on Kubernetes as an engine, it is a project that requires a high level of understanding of Kubernetes, but there were only 4 members with proper experience using Kubernetes.
At first, I had no idea how to start and was at a loss, but as a result of practicing Git with a mentor and performing various tasks and studying in the practice REPO to become familiar with containers and Kubernetes, I gradually became familiar with the tool called Argo Workflows. It has begun.
As a result, at the time of writing this report, we had the enjoyable experience of creating PRs for all 17 Masters stage participants.
Summary of contribution activities |
Additionally, contribution activities, which I had not been able to actively do at first because I was busy familiarizing myself with the tool and acquiring background knowledge, accelerated over time.
In the end, the members' skills are growing so quickly that in September, in just the first week, they were able to match the number of PRs that were close to the PRs contributed during the previous month.
Monthly Activity Graph |
Introducing the various activities our team has performed to achieve the current contribution activities.
Repository creation and contribution activities to practice using Git
Repository address: https://github.com/ArgoWorkflows-OSS/argoworkflows-oss.github.io (opens in a new tab)
Goal: Update member profile of issue template Select issue and create first PR according to issue content.
- Goal Details
- Edit/add the two files below to create a PR that updates user information.
- `docs/users/users.md`
- `docs/users/[name].md`
- [How to link PR and issues using keywords](https://docs.github.com/ko/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue Please refer to #linking-a-pull-request-to-an-issue-using-a-keyword) to connect the issue and PR. (Manual connection x)
To raise PR and merge, please refer to the points below.
- Since you do not have permission to create or push branches in the repo, you must fork and then work on it.
- Please refer to [PR’s Naming Convention](https://flank.github.io/flank/pr_titles/).
- [DCO](https://github.com/apps/dco) Please commit by referring to the conditions for passing the bot's check.
- Please understand how to commit using [GPG](https://www.44bits.io/ko/post/add-signing-key-to-git-commit-by-gpg) and create a signed commit.
- It would be good if [Commit Message Convention](https://www.conventionalcommits.org/en/v1.0.0/) could also be applied. Even if you don't have to follow it, please avoid making commit messages that are too meaningless. (Optional)
Operation of a special class on container basics
Page address: https://github.com/ArgoWorkflows-OSS/container-playground (opens in a new tab)
Goal: Create your own service and configure CI for containerization
- Goal Details
Create your own web service and write a Docker file that can be containerized.
To pass the assignment, please be sure to follow the instructions below.
- Directory and file placement
- When developing a personal service, be sure to create your own GitHub account directory and write code under it.
- `Dockerfile` must be located at the top level of your directory. (If this condition is not met, CI may fail.)
- You can freely create other files under your own directory except for the location of `Dockerfile`.
- However, the image must be built successfully when you run the `docker build -t [image name] .` command at the top level of your directory.
- Behavior of built images
- Personal web service must operate on port 8080.
- The built image must be serviced without problems when the `docker run -d -p [forwarding port number]:8080 [image name]` command is executed without any additional parameters.
- Web service development language and service structure
- It doesn’t matter which language or framework you prefer.
- It doesn’t matter if you create a simple API service with no UI or design.
- However, you must create two required APIs. (I don't care about the response value.)
1. /api/v1/[your github account]
2. /healthcheck
- (Optional) It is better to optimize the Docker image. ([Reference](https://thearchivelog.dev/article/optimize-docker-image/))
- [How to link PR and issues using keywords](https://docs.github.com/ko/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue Please refer to #linking-a-pull-request-to-an-issue-using-a-keyword) to connect the issue and PR. (Manual connection x)
Opening and conducting an issue hackathon within the team
Intra-team hackathon to designate issues and solve each group issue within a period of time
Join to Contributor / Community meetings
Argo Workflows OSS team page creation and operation
Page address: https://argoworkflows-oss.github.io/ (opens in a new tab)
Production framework: nextra
Conduct offline meeting activities at least once a week
Regular meeting activities
- We selected every Sunday as a regular offline meeting date and conducted regular meeting activities.
- We conducted various communication activities such as exploring issues to be resolved through group activities, sharing our own experience in resolving issues, and discussing errors that occurred during the process.
- Detailed information about offline regular meetings can be found through the link here (opens in a new tab).
Presentation activity on topics of interest
- During offline meetings, I gave presentations on topics of interest to me.
- Topic of interest presentation topic and presenter
order Title Presenter Announcement date 1 Case study of Argo Workflows adoption at Carrot Market Yeom Geun-cheol July 15 2 WebRtc concept and use cases for real-time communication Song Hye-min July 30 3 How to link Argo Workflows and Keyclock Soon yeong-Choi July 30 4 Implementing CI/CD with Argo Project Hak jun-Kim August 6 5 Presentation of eBPF concept, filter development method, and use cases Seong rak-Jeong August 6 6 History of containers and creating containers without Docker Yeom Geun-cheol August 13 7 Platform builder that allows developers to load test themselves & K6 load test PoC announcement Ah Da-hye August 20 8 Considerations on the container ecosystem Yeom Geun-cheol August 27 9 Github Actions Installing and operating self-hosted in Kubernetes Cheong woon-Seo September 2nd
Gathering together and coding individually
- We gathered together irregularly and did our own coding.
- We conducted technical exchanges, including analyzing the structure and issues of ArgoWorkflow.
☑️ Participant contribution details
0. GeunCheol Yeom(Mentor)
🌵 Participation Review
I met ArgoWorkflows last year, and many things changed
I participated as a mentor at this event, but I feel like I'm the one learning and getting more out of it.
I would like to sincerely thank the mentees who participated in the event and did their best until the end, and I hope that we can continue to be colleagues in open source activities together.
During the event, I was able to think about the culture of the open source ecosystem once again, and I was able to study various techniques for utilizing Git that I thought I knew in the CI environment.
I feel more passionate about the ArgoWorkflows project, and I'm not sure what opportunities there will be in the future, but I'd like to contribute to more diverse areas.
1. ByeongSun Gang
🌿 Personal Activity Report
Collapse/Expand
-
Personal achievements
-
Documentation contribution
#11762
Remove helm installation guide and Add helm documentation link (opens in a new tab)- We need to install helm for MinIO configuration, but the helm installation guide only shows the configuration related to mac, so we fixed it to access the helm official documentation.
-
Documentation contribution
#11735
Add installation option description (opens in a new tab)- We added a detailed description of the managed namespace option.
- I learned from a maintainer that there is a Documentation convention (opens in a new tab) for Kubernetes here.
-
Contribution Preparation Courses and Activities
- Learn the basics of Github
- My mentor gave me an assignment to update my profile. I familiarized myself with the concepts of GPG and DCObot to become more familiar with github.
- Docker Beginner Special Class
- We had an activity to create a docker image using Dockerfile. I learned the concepts by reading the materials organized by my mentor. In addition, when creating the image, I tried to apply multi stage build (opens in a new tab) to include only the features needed for execution.
- After the lab, my mentor walked me through Overlay FS (opens in a new tab) one by one, showing me how the images are created. This was really informative...
- Learning the basics of Kubernetes
- Before contributing, I took the time to study the basics of Kubernetes.
- Argo workflows
- template and self-study (opens in a new tab).
- Mentee Hakjun showed me the pipeline for deploying on GCP using ArgoCD and Argo Workflows (opens in a new tab).
- Learn the basics of Github
-
Participation in OSS meetup activities
- Mentors and mentees gave presentations on various topics. It was a good time to hear what problems they are facing in the real world besides contributing and how they solved them.
-
Participating in the hackathon
- Mentee Sungrak helped me a lot. He shared the issues he thought were okay and always encouraged me to challenge myself.
- He recommended the issue
#11609
Compile expr in config (opens in a new tab), so I tried it. - I spent some time analyzing the issue by teaching myself Golang (opens in a new tab).
- It was a good time to become more familiar with golang.
-
🌵 Participation Review
- Participant Review
- As a junior developer, this activity is not just for contributing, it's a great way to see what developers are thinking about and how they grow.
- I got so much help and I'm always grateful. It was a great time to meet so many nice people.
- I'm glad I took the first step in getting acquainted with containers.
- Future plans.
- I will continue to be interested in and contribute to all open source projects that I use in my development.
- I will apply Argo workflows to real projects and find ways to contribute more!
🌵 Personal Summary
Contribute Info
GitHub | Type | Summary |
---|
2. SiOn Kang (opens in a new tab)
🌿 Personal Activity Report
Collapse/Expand
- 1 issue, 3 PRs
- Modified GitHub Actions log name to improve readability
- https://github.com/argoproj/argo-workflows/pull/11670 (opens in a new tab)
- Among the steps performed in publish-release, Run actions/cache@v3 is performed a total of three times.
- Each person has a different role, but the same name is used, so the part where it may feel like the same task is being done three times has been changed to a name that fits each role.
- Delete cache logic that does not require GitHub Actions
- https://github.com/argoproj/argo-workflows/pull/11754 (opens in a new tab)
- Fixed an error that occurred due to overlapping cache because caching is performed by default unless the cache option is set to false in setup-go actions.
- Upgrade all checkout@v3 that uses the deprecated NodeJS 16 version to checkout@v4.
- https://github.com/argoproj/argo-workflows/pull/11782 (opens in a new tab)
- Since NodeJS will soon end its security support, changes have been made to use actions using the latest version.
🌵 Participation Review
I enjoyed last year's experience so much that I decided to participate again this year, but this year was a great experience again with a different feel from last year. Thanks to all the passionate team members and active projects, I was able to maintain interest in the project without losing tension, and I am very happy that I have a colleague with whom I can share not only the project but also related stories.
🌵 Personal Summary
Contribute Info
GitHub | Type | Summary |
---|
3. YoungGil Kwon
🌿 Personal Activity Report
Collapse/Expand
[Project Contributions]
- 'Bug modification' Argo Workflow Datpicker improvement (completed)
Improve the ui of datepick, one of the filter functions of the workflow list page
Issue Link
UI: Datepicker Style Malfunction Issue · Issue #11476 · argoproj/argo-workflows (opens in a new tab)
PR Link
- 'Bug modification' Cronworkflow's State filter initial value setting (completed)
Fixed a bug where the status filter in the cronworkflow is rendered regardless of the initial value
Issue Link
ui: Cron workflow initial filter value · Issue #11685 · argoproj/argo-workflows (opens in a new tab)
PR Link
https://github.com/argoproj/argo-workflows/pull/11686 (opens in a new tab)
- 'Fix the bug' Remove webpack-related alerts from the initial page (in progress)
To remove web pack monitoring that occurs when loading argo workflow ui
Currently testing the dependence and functionality of the associated libraries
- 'Improvement' Improvement of login page (in progress)
Issues that improve the existing login page in Argo Workflow in the same form as the Argo CD
We will analyze the login capabilities provided by current workflow and apply new designs and designs afterwards
Issue Link
Similar login page to Argo CD · Issue #10816 · argoproj/argo-workflows (opens in a new tab)
[Project Activity History]
7.8 Opening Ceremony (Project Introduction and Self-Introduction)
- Opening ceremony
- Time for self-introduction using nicknames
- A rough introduction to the project
- a majority vote for the rules of gathering activity
- The next meeting activity will be held from 1 p.m. on Saturday (07/15) unlike the regular schedule, depending on the majority vote of the participants at the opening ceremony. The planned activity topic is:
- Time to review or talk about *common activities** for the next week
- Time to communicate about topics of interest
- You can also set up the development environment according to your progress. (Optional)
- (Common activities will be organized and shared within tomorrow's work hours.)
7.15 First Meeting (Introduction to Development Environment Settings and Workflow Features)
- Open Up to the First Meeting
- Development Environment Settings (dev-container)
- Playground Mission (DCO Bot Check Passed, Commit Using GPG, Commit Message Convention)
- I created a playground before I immediately challenged a real open-source project. The first goal is to do issues/PR/commitments, etc., from an outsider's perspective on the project in this Playground. It's simple, but there may be unexpected gateways for the first time, so please focus. If we resolve the first issue early, we will give you additional instructions. Haha
- 저장소: https://github.com/ArgoWorkflows-OSS/ArgoWorkflows-OSS (opens in a new tab)
- Objective: Select member profile update issue in issue template and generate first PR according to issue content.
7.23 Second meeting (share issues of interest)
- Gathering at Seongsu to conduct the second meeting (provided by Musinsa-Andahye Mentee)
- Introduce issues of interest, share issues with each other
8.6 Fourth meeting
Presentation activities
- argo event와 workflow, cd연동
- eBpf
8.13 Fifth Meeting
Presentation activities
- webRTC
8.20 6th Meeting
presentation activityEast
- Platform builder & K6 load test PoC for developers to load test themselves
[Project Activities]
- [Learning to contribute]
- Kubernetes Architecture Lecture - YouTube link (opens in a new tab)
- Kubernetes Resources Lecture - YouTube link (opens in a new tab)
- Go Playground - https://go.dev/play/ (opens in a new tab)
- Learnings and impressions
- I realized that domain knowledge in the field is important to contribute to the project. I wanted to simply contribute to web services, but it was not easy to set up the environment due to lack of knowledge about Kubernetes.
- I learned that big open source projects use things like DCO/GPG, and I was able to learn how open source projects are managed and operated.
- Issues and PR details
🌵 Participation Review
For me, the idea of contributing to open source brings up a lot of mixed feelings. Contributing to open source with other developers and experiencing the sharing and collaborative culture of open source is a great joy and reward for developers. However, the uncertainty and fear that I had experienced when contributing several times before was a big barrier that made me hesitate to try again. When I decided to participate for the third time, I said to myself, "Excuses like "I'm a student, I don't know enough, I'm busy preparing for a job, etc." don't work anymore. I must succeed this time'. I can still remember the promise I made to myself when I started, which made it all the more overwhelming and exciting. When I was applying for projects, I had to decide whether I wanted to work on something I knew or something new. I applied for a project related to devops, a field I hadn't been exposed to before, in order to educate myself and work harder. It didn't take long for me to regret this decision. There was a lot to learn before I could even contribute, and a lot of time was wasted in building the basic environment of the project. However, when the development environment was built with other team members, sharing each other's difficulties every day and actively trying to help each other, it was an exciting time. Errors and bugs that occurred in my work always made me sensitive and annoyed, but in the academy, it was like a mission that I could do, and the process was fun like a game. Now that I'm writing this recap, I'm very proud of my contributions and I'm grateful to my colleagues and mentors who helped me along the way. In the future, I will think about how I can apply the argo-workflow project to my work and actively contribute to the issues that arise. I would also like to contribute to new projects if there are other good projects. Thank you.
🌵 Personal Summary
Contribute Info
GitHub | Type | Summary |
---|
4. SuBin Kim (opens in a new tab)
🌿 Personal Activity Report
Collapse/Expand
- Personal performance
- Contributing one 'issue' and one 'PR'
- Preparation for Countryview
- Viewed: OSSCA Basic Training uploaded to YouTube. I've used it a lot before, such as Git and Vim, and I knew the concept, but I was able to know and understand a lot of parts that I didn't know or roughly used.
- In the 'ArgoWorkflows-OSS/ArgoWorkflows-OSS' repository, we performed an example of Git configuration settings and linking and closing Issue and PR. Argo Workflows must have all commitments signed with gpg private key and signed off when creating PR. Otherwise, it will fail in the GitHub CI. Before I actually contributed to Argo Workflows, it helped me greatly to set up a local Git environment in advance and create a simulated PR.
- You have set up the Argo Workflows development environment. At first, I set it up with devcontainer, and then I used Nix. Argo Workflows requires multiple components in the development environment, including React UI, Argo Server, and MySQL, making it difficult to configure the development environment, but we were able to fully configure it over several weeks.
- Countryview progress
- Fix 'Bug Fix' Fix go build
- The existing code base was using Go 1.20, but there was a problem with using Go 1.19 in the Nix build file. Previously, the build was fine, but when I started using the newly added grammar in Go 1.20, I encountered problems with the Nix build.
- Using '_module.args', I modified Go 1.20 to be the default and modified the Nix build.
- Automatic update of 'function improvement' Nix go vendor hash
- This is an issue that I learned when I set up the development environment during the preparation of the contention. Nix pursues a reproducible build, but when GitHub's Dependency Hash value is not changed together when GitHub's Dependency Abot automatically raises the Go module version.
- This often requires developers to manually calculate and update Nix's go vendor hash when setting up a development environment, and we are looking for workable ways to improve it.
- In order to find a solution with the contributors, an issue was created by collecting the contents of existing PRs and Comments.
- Developers are reflecting it manually without solving it in other open-source projects, so after contributing to Argo Workflows, I think I can contribute to other projects as well.
- 'Improvement' 'CHANGELOG.md '
- Markdownlint is a tool that forces documents in a project to be written in a consistent format and makes them easier to read and modify.
- Previously, we used Markdownlint to configure the linker settings for the Project Markdown document, but we improved the 'CHANGELOG.md ' file, which is automatically generated using the script, because it does not comply with the linker rules.
- New 'CHANGELOG.md ' changes created by the changed script are contained in this PR. → → https://github.com/argoproj/argo-workflows/pull/11773 (opens in a new tab)
- 'Improvement' document style improvement
- We've improved the style of some documents that don't follow Markdownlint, and we've shared that we'll revise the documents that are automatically generated later in PR.
- Fix 'Bug Fix' Fix go build
🌵 Participation Review
- Review of participation in the program
- It would have been impossible if I had tried to contribute by myself, but I think I was able to prepare and contribute while gathering with mentor and other mentees to study and contribute.
- It was great to understand the Argo Project ecosystem and community, and to understand Argo Workflows much deeper than before.
- Planning future contributions
- We will discuss the solution with the contributors in the issue we have created and implement it will be implemented.
- Afterwards, we will improve the Nix development environment and gradually transfer the devcontainer development environment to Nix.
- The documents related to Nix are poor, so we are going to improve the documents.
🌵 Personal Summary
Contribute Info
GitHub | Type | Summary |
---|
5. HakJun Kim
🌿 Personal Activity Report
Collapse/Expand
refactory
fix: Upgrade Go to v1.21 Fixes #11556[**Merged]**
- Argo Workflows are developed in Go language.
- An issue was issued to upgrade Go Version from 1.20 → 1.21, so we decided to resolve it.
- During the ‘Issue Hackathon’ period, we presented the issue and worked with the same team members to resolve the issue and conduct PR.
- As a result, it was a glorious time to have my first PR and my first contributor badge.
presentation
- During the Challenges period, we had time to present at an offline meeting the results of CI/CD implementation using Argo Projects.
- It was a useful time to organize my thoughts during the presentation, talk with each other, and understand DevOps and the Argo Project ecosystem.
Issue Hackathon
- An ‘Issue Hackathon’ was held under the leadership of a mentor with the opinion of Da-hye A to reduce entry barriers and motivate contribution activities.
- Under the leadership of our mentor, we became a team with Seongrak, Moonyoung, and Byeongseon.
- During this period, I achieved the resolution of the go 1.20 → 1.21 upgrade issue that I suggested.
- We attempted to resolve the issue of adding Prometheus Metric values built into Argo Workflows, but were discontinued due to the high level of difficulty. However, through this process, I had a great experience breaking down my stereotype that Prometheus requires a separate exporter to be installed and expanding my horizons. plan to add workflow labels to the metric? · Issue #9849 · argoproj/argo-workflows(opens in a new tab) (opens in a new tab)
- We are trying to resolve the following issue: Compile
expr
in config · Issue #11609 · argoproj/argo-workflows (opens in a new tab)
Beginner’s Special Class - Container Playground
- Argo Workflows is an open source that runs in the Kubernetes native environment.
- The mentor opened the Kubernetes Study, saying that knowledge of Kubernetes would be helpful in approaching our project.
- The first mission was to create a Web Container that satisfied the conditions presented.
- It made me reflect on how I usually write Dockerfiles thoughtlessly, and it was a good time to learn about the relationship between multi-staging, build speed, and how to write Dockerfiles.
🌵 Participation Review
Participation review
First of all, I am very satisfied. I don't think it can be compared to the person I am today, who didn't know much about the open source ecosystem in the early days of contribution. The reason I'm so satisfied First, we are smart team members. Every week, there were many presentations on various topics, technologies used by people in the workplace, technologies of interest, etc. It was a premium lecture that could not be heard anywhere else, and it was a very helpful time. Second, we have reliable team members. As someone with little development experience, I was a little scared of this contribution period. However, thanks to many people, including our leader mentee, Seongrak, who actively provided information when they posted questions on Slack, I was able to smoothly overcome the problems I experienced. Third, it is a comfortable meeting space and reliable support. We met every Sunday at the open-up space in Seocho. It was really clean, probably because it was a new building, and the coffee and snacks in the bathroom were just brilliant. Also, it was nice to be able to eat really delicious lamb skewers during the mid-day company dinner.
Future plans
Through this year's contribution activities, I was able to clearly understand the open source ecosystem. The only thing I regret is that it was scary in the beginning? It's about being active passively and my cute little coding skills that I couldn't help but be passive about. Because the period of contribution activities was truly valuable, I would like to make up for my shortcomings and participate next year as well.
🌵 Personal Summary
Contribute Info
GitHub | Type | Summary |
---|
6. JinSu Park (opens in a new tab)
🌿 Personal Activity Report
Collapse/Expand
Improvements A new feature to support Secrets as a type of parameters (link (opens in a new tab))
The original Argo Workflow allowed you to define arguments directly when passing them to the WorkflowTemplate, or you could set it to reference a ConfigMap. However, unlike other tools that support the common kubernetes ecosystem, the ability to reference Secrets was not supported.
We started getting feature requests https://github.com/argoproj/argo-workflows/issues/5506에서 (opens in a new tab) for this, and we've implemented it and created a Draft PR.
This feature was not easy to develop, especially since it required redefining things like the CustomResourceDefinition interface in Kubernetes, and figuring out the entire lifecycle of how a workflow is created, injected with sidecars, and created as a Pod.
However, as we implemented the feature, we were able to gain a deeper understanding of how workflows are eventually transformed into pods and containers, and the logic behind how workflows templatize context and arguments internally.
Create Issue` Incorrect creator labels on a resubmitted Workflow (link (opens in a new tab))
Argo Workflow has a feature called Resubmit that recreates and runs a Workflow based on the same template. In the case of a resubmitted Workflow, the k8s object label related to the user who created the Workflow was not set based on the resubmitted user, but was set to the existing incorrect value.
As a result, if the user who ran a workflow was different from the user who resubmitted the workflow, the workflow created by the resubmission would have an incorrect workflow creation user-related k8s object label.
We raised an issue about this.
Bugfix: fix: Apply the creator labels about the user who resubmitted a Workflow (link (opens in a new tab))
We created a Pull Request to resolve the issue (bug) we created earlier.
We fixed the bug by labeling the correct Workflow constructor k8s object based on the resubmitted user information only, without considering the information of the existing Workflow executor when resubmitting.
As an example of the change, we showed how a Workflow executed by a user named foo would be resubmitted by a user named bar, and how the creator-related label would be different if it was resubmitted by an unauthenticated user.
We also found that there were a lot of other code that was impacted, so we wrote test code to make it more stable.
Improvements
feature: Propagate creator labels of a CronWorkflow to the Workflow to be scheduled (link (opens in a new tab))
If the CronWorkflow was created by a logged-in user, the CronWorkflow will be labeled with a k8s object for the constructor. However, there was an issue that the k8s object label would not be attached to Workflows that are created periodically based on the settings of CronWorkflow.
Therefore, we have improved Workflows created with CronWorkflow to propagate CronWorfklow's constructor label.
Issue.
Insufficient logging in /oauth2/callback handler when using SSO Authentication (link (opens in a new tab))
We tried to activate the Authentication with Single Sign On (SSO) feature in Argo Workflows using the Identity Provider open source product called Keycloak, but we experienced a significant delay in the activation process due to the lack of logs. Therefore, we opened an issue on the topic of enhancing the logging of the feature activation operation.
Feature.
feature: Improve logging in the oauth2 callback handler (link (opens in a new tab))
This is the pull request that resolved the issue mentioned above (block link (opens in a new tab)). We improved the feature to output error logs for each error case that occurs while using OAuth2 Protocol for SSO.
Also, to make it easier for reviewers to review the pull request, we've added code verification to make the pull request more convincing.
Study`
docs: Add a user named Park Jinsoo (link (opens in a new tab))
At the beginning of the event, we practiced creating a pull request by adding an introduction about myself to the member profile of a repository that my mentor created for us to get acquainted with GitHub.
🌵 Participation Review
It was a great opportunity for me to become a contributor to a well-known open source project after having been a user of many open source projects for my work and hobbies.
With the help of my mentor, I was able to get started in open source contributing with Argo Workflow, overcome my fear of live video meetings between contributors, and develop the habit of reading code written by others.
I'm now very interested in Argo Workflow, as well as other cloud-native, open source favorites like Argo Rollouts and Istio, and I've been communicating with contributors frequently via Slack.
Before I started contributing to open source, I'm sure I would have been reluctant to do so. But now I don't feel intimidated by this communication at all, and in the future I hope to contribute as much to Argo Rollouts and Istio as I did to Argo Workflow!
I would like to thank the organizers and mentors for all their hard work over the years. Thank you.
🌵 Personal Summary
Contribute Info
GitHub | Type | Summary |
---|
7. ChungWun Seo
🌿 Personal Activity Report
Collapse/Expand
- individual performance
- 1
PR
Open
- 1
- Countryview preparation process
- We checked the shared video of the basic Git strategy shared by the OSSCA Secretariat and combined the new parts we missed with the existing concepts to enhance our understanding and application of Git.
- The team's 'ArgoWorkflows-OSS/ArgoWorkflows-OSS' repository allowed us to learn the gpg private keys, issues, PR titles, etc., which are essential for open-source attributes, by actually performing missions and gaining experience.
- dWe used devcontainer to build and test Argo Workflow's local development environment, and to test the requirements for actually doing the content. The portability tool for multiple library dependencies made it very easy to use.
- Content progress
- Modifying fields example in formula docs
- https://github.com/argoproj/argo-workflows/pull/11748 (opens in a new tab)
- An example of a document that does not use Cron Workflow was included in the 'CronWorkflowSpec' and 'CronWorkflowStatus' fields in the existing official document, causing confusion in finding the required data.
- So, in the 'CronWorkflowSpec' and 'CronWorkflowStatus' fields, we only allowed examples using CronWorkflow to find the data we needed.
- Modifying fields example in formula docs
🌵 Participation Review
- Program Participation Review
- Mentors and mentees led the meeting so well that I wondered if there would be another meeting where I could get to know and understand the open-source ecosystem in depth.
- As an individual, I was very disappointed. I could have invested a little more time and actively participated in the meeting to make it a better meeting as well as personal growth, but it was a period that left a lot of regret because of various external factors and my own laziness.
- Future Contribution Plan
- With great confidence that open-source attributes are no longer scary (?) things, we will be able to explore open-source beyond the Argo ecosystem and be more interested in the CNCF ecosystem.
- Based on the fact that we can make contributions through previous PR records and the help of the main container without having to look at the source from the beginning, we plan to actively continue our contribution beyond the psychological hurdle of the country.
🌵 Personal Summary
Contribute Info
GitHub | Type | Summary |
---|
8. HaeMin Song
🌿 Personal Activity Report
Collapse/Expand
Contribution Activities
Mutex check happens after memoization cache check and lock info missing from UIBug Fix
Issue #11219 (opens in a new tab) PR #11456 - Merged/Included in 3.4.10 release (opens in a new tab)
I managed to modify Argo Workflow to simultaneously utilize the Synchronization and Cache functionalities.
This bug manifested when using both the Synchronization and Memoize keywords in Argo Workflow, causing it not to operate correctly.
The expected behavior was for the Mutex Synchronization to function first followed by the cache, however, after Synchronization occurred, the cache failed to operate.
For instance, when there are job-1
and job-2
, if job-1
operates first due to Mutex Synchronization and writes to the cache, job-2
** should pass without operating, courtesy of the shared cache.**
I was able to fix this by adjusting the sequence of Synchronization and Cache.
While the fix was not complicated, modifying the operation.go
, one of the intricate files, allowed me to explore various features of Argo Workflow with many reviews.
Parent level memoization is brokenBug Fix
Issue #11612 (opens in a new tab) PR #11623 - Merged/Included in 3.4.11 release (opens in a new tab)
A new bug arose from the above fix. When using the Memo function in child components rather than at the Template level in Argo Workflow, a bug was reported that caused infinite pending.
I realized that there were unaddressed cases in the tests added in the previous PR. After identifying the cause of the error, I quickly patched it. I included four tests in the PR to detect such exceptions in the future.
UI: workflowDrawer's information link is not correctly workingBug Fix
Issue #11494 (opens in a new tab) PR #11495 - Merged/Included in 3.4.10 release (opens in a new tab)
I fixed an issue where the Information icon link was broken when expanding a workflow on the Argo Workflow dashboard.
I introduced code to prevent incorrect event propagation caused by nested <a>
tags. This correction ensured that clicking on the icon now directs users to the correct documentation.
Search by name for WorkflowTemplates in UIFeature Enhancement
Issue #11004 (opens in a new tab) PR #11684 - Merged/Included in 3.4.10 release (opens in a new tab)
This was a collaborative effort with two other contributors.
A helpful feature that allows templates in Argo Workflow to function through name patterns was missing.
We developed an additional feature that lets users search for templates not just by Yaml labels, but also by names.
The LIKE search, not just precise naming, will prove useful in the future.
Plans are underway to extend this search and pagination functionality to other pages, making this a particularly meaningful PR.
Add more readable Argo CLI installation guide into github documentationDocumentation Contribution
Issue #11750 (opens in a new tab) PR #11751 - Merged (opens in a new tab)
This contribution pertains to the documentation of the Argo CLI, the command-line interface used with Argo Workflows.
The current Argo CLI GitHub documentation lacked installation procedures, making it challenging for first-time users to determine how to install the Argo CLI. Initially, users had to directly navigate to the Release Note or the Quick Start page. By adding an Installation section to the Argo CLI page alongside the existing Usage details, I aimed to enhance user convenience.
Workflow templating is skipped when whitespace is added to template parametersBug Fix
Issue #11767 (opens in a new tab) PR #11781 - Merged (opens in a new tab)
In Argo Workflow, when authoring a workflow template, the placeholder in the form {{parameter}}
did not undergo validation when spaces were added, such as {{ parameter }}
.
The root cause was the internal validation code not trimming spaces before and after the parameter. By adding the trim function to remove spaces, I resolved this issue. This contribution also rectified other placeholder content that previously bypassed validation.
Development Activities
Contributing to the Argo Workflow OSS Common Repo
PR #22 - Merged (opens in a new tab)
I undertook a preliminary exercise for multiple people to contribute to the Argo Workflow. We simultaneously modified new and existing documents with other participants, learning the importance of Git commands and the process of rebasing.
Creating a Web Server with Dockerfile
PR #6 - Merged (opens in a new tab)
This exercise was about creating a Dockerfile that communicates with a local 8080 server and makes it accessible via localhost:8080. We simply crafted a Python server using Flask, and through the Dockerfile, we set up the environment, initiated the server, and connected the port, making the server accessible externally via Docker commands.
🌵 Participation Review
- Post-Participation Review
- While I had participated in the open-source contribution academy before, I was especially satisfied with the program, members, and content of this academy.
- It's not easy to understand the source code and start contributing in a short time, but it was an astonishing experience to be able to start contributing, even if it was a minor contribution.
- I deeply felt that the concentrated care from the mentor and the passion of other participants were genuinely helpful.
- Starting alone, I might have quickly given up and forgotten the content, but the experience was so different when progressing with others.
- Future Plans
- I plan to continue contributing to Argo Workflow and may even start contributing to other open-source projects.
- Especially now that I have learned how to approach and start with an open source I am interested in, I believe it will be a bit smoother as long as I have the passion.
- I will actively promote the fun of contributing to open source to others and confidently recommend it.
🌵 Personal Summary
Contribute Info
GitHub | Type | Summary |
---|
9. DaHae Ahn (opens in a new tab)
🌿 Personal Activity Report
Collapse/Expand
Document modification
The running-locally (opens in a new tab) part of the official document is not intuitive for people who are new to Dev-container and Makefile, and is broken.
There were links, so I uploaded pr #11405 (opens in a new tab) and contributed to editing the official document.
Issue Contribution
Although incomplete
, this is an issue where secret information can be exposed through commands such as echo within Argo-workflows workflows or Pods within workflows [#8685](https://github.com/argoproj/ (opens in a new tab) argo-workflows/issues/8685), so I tried to solve it.
I invested about 3 hours a day for 4 days, for a total of 12 hours, on this issue, but I have not yet been able to resolve it. (Intermediate commit (opens in a new tab))
- We added
ARGO_HIDE_SECRETS
, an environment variable that can be injected when running Argo-workflows, across a total of 11 files, and set the option totrue
by default.- The above environment variables can be entered from the command line or added as settings when running Argo-workflows.
- If you set
ARGO_HIDE_SECRETS=false
, "You are running with logging include secrets. Be careful." A log saying was recorded. - If information corresponding to Secret is included in the workflow or pod log, the code has been modified to mask SecretValue.
- We wrote test code and verified that the above function works as intended.
- However, since the above function did not work as intended, I started exploring the process of recording logs. I found out that the logrus (opens in a new tab) library used in the Go language uses io.Writer from the io (opens in a new tab) package. .
Assignment Performance
For the Argo-workflows team, the mentor created the OSS-Argo-workflows repository and assigned several tasks.
- In the actual Argo-workflows repo, I learned through assignments how to upload a PR by following the principles (presigned commit, gpg check) that must be followed when uploading a PR, and how to resolve git conflicts.
- In order to upload pr from the actual Argo-workflows repo, modify the code and check whether Argo-workflows is working properly, you must run Argo-workflows with a Dev Container in the local environment. -Our team was given the task of carrying out this process ourselves, and along the way, we helped each other with members who had difficulty performing it. I summarized how to perform the method in a blog post and shared it with my team members.blog (opens in a new tab)
🌵 Participation Review
While participating in the open source contributionthon, I met amazing mentors and team members. We met offline every week, shared issues we had contributed to, and made presentations that were helpful to our work in turns every week.
Also, at the last minute, we created an ‘Issue Hackathon’ where we split into groups to focus on solving issues. As a result, more than 4 PRs were merged from the Argo-workflows team itself, and I was able to focus my time on one issue and dig deep into open source.
Since I was considering a career developing in the Go language, it was a really valuable experience to see and modify production-level Go code. It makes me wonder if I could belong to the same group as these hard-working people.
Even after Masters is over, I plan to dig into the issues I was trying to solve above until the end, and I plan to upload one more development pr.
And if I get the chance, I would like to participate in the 2024 Open Source Contribution Thon.
Thank you for providing a great opportunity and venue.
🌵 Personal Summary
Contribute Info
GitHub | Type | Summary |
---|
10. JiWan Ahn
🌿 Personal Activity Report
Collapse/Expand
1. Open Source's first contribution
For the first time, I made a documented contribution to ArgoWorkflows. We've fixed the parts on the official site where there's room to confuse whether it's an image or a video, so that users know it's definitely a video. docs: modify demo image in intermediate-inputs.md #11755 (opens in a new tab)
2. Learn how to contribute to open source by watching other members' activities
Through this Open Source Country View Line Academy, I learned how to contribute to open source and how to find issues. The summary is as follows.
- There are many issues than the main logic, or UI parts, or UI parts, or UI parts.
- There are many issues that can contribute to the open source sufficiently, even if you are a professional knowledge of the open source or a practitioner in another field (ex. UI issue)
- When you want to contribute, you first comment that you want to solve this issue directly to the issue and then start working.
- This part was a little strange, but in the case of Argo Workflow, it was a little strange that the person in charge was assigned when making a contribution. Something I don't know? Or, it seems to assign a person in charge when you feel unfamiliar.
- There are many different people. Some people write just one line, and some people write very kindly comments.
I learned how to contribute directly to the issue by looking at other members' issue hackathons. In particular, I found the issue of "Pagination" very interesting among other members' issues. I didn't notice when I was using argo workflow, but I realized that it was possible to contribute to places that could pass by by catching that page-nation is inconsistent and making issues.
3. Development container construction
Personally, I set up the development environment by flying devcontainer myself. In fact, there were countless errors in the process, and I could imagine that other developers would come and squeeze their brains together if there was a bug in practice.
I found out that when you solve dependency issues and later someone else makes an issue on my project, you use development containers to ensure you're working in the same environment, and I thought I'd have to use development containers in other projects I'm working on (discord bot-related projects).
After the interim report, rather than changing my mind a little and feeling intimidated, I wanted to take the opportunity to overhear how other current employees operate the service in practice. In fact, mentees presented various topics, and I was able to hear interesting topics such as load tests and explanations about ebpf in the company. I think it was a very valuable presentation that was hard to hear while attending school.
4. Mastering the Verified Commit method using GPG Sign and uploading the introduction to Team GitHub
Until now, I've been committing without a separate GPG Key, but in the process of uploading the member introduction, I checked the DCObot and GPG and kept getting blocked, so I learned how to create a Verified commit and uploaded the introduction to Team GitHub Repo. In the process, I solved it with the help of the same team member while constantly stopping whenever I committed.
🌵 Participation Review
In fact, until I wrote the interim report, this activity was too high for my level and others were so good that I felt intimidated by myself, but thanks to the mentor's individual counseling and encouragement, I have since tried to participate in the regular meeting harder.
I saw a lot of issues in Argo Workflow and looked for it to contribute to anything, but I couldn't touch it because it was so complicated and I didn't know the Go language. Instead, I felt like I entered the world of open source by looking at other people's contributions, even though I may not be able to contribute directly.
Another person's most memorable contribution was "Page Nation." I was impressed to see that some parts of Argo Workflow are page-nations, some parts are not, and some parts are not title-free, but you found a problem of consistency in the UI, and you found a team member in the issue hackathon to solve this problem.
When I was looking for something to contribute, I tried to find issues related to logic, but it was too difficult and I couldn't figure out how it worked, but I can't believe it can contribute like that…I thought that I didn't have to be so scared of contributions than I thought.
As everyone else, including you, is an incumbent and is very talented, I learned a lot from going to the meeting. You can see the differences between theory and practice, how workflows are being used in practice, especially why the really universal airflow that I'm studying these days isn't being used very much in practice.
To be honest, as I participated in open-source competition, I also have a desire to contribute at least one issue. As there is not much time left, my plan is to contribute at least one small issue before the end of the activity, and now the semester is waiting, so I want to have as much time to learn as possible to go to regular meetings and learn even if the semester begins.
🌵 Personal Summary
Contribute Info
GitHub | Type | Summary |
---|
11. YoonWoo You (opens in a new tab)
🌿 Personal Activity Report
Collapse/Expand
1. Create a beginner's dockerfile
- Create your own web service, build an image via dockerfile, and run a container.
- Build your service using a framework and language of your choice, I used Nest.js.
2. Learn the Nest.js framework
- Nest.js Learning Repository (opens in a new tab)
- Since I only knew the front end, I quickly learned to create a simple API service using the
3. PR after creating the dockerfile
- I created a docker file to build the image, verified that the service is working, and raised a PR, but the build test of the github action fails.
- Remove the --production option and it passes the test, but the image is not optimised. Ask your mentor for advice
- Start troubleshooting based on your mentor's feedback
4. Trouble Shooting
- I tried to install node_modules for production only to reduce the size when creating images with dokerfile, but it didn't pass the github action.
- After a lot of shovelling, I realised that a module called nest-cli is required for nest build, but it was in the devdependency, so I changed it and it worked. (My mentor gave me a hint, but I didn't understand and shovelled it in)
- The reason I was confused was that I had nest-cli installed globally on my MacBook.
5. Open source contributor activity [UI: The position sticky on the workflow toolbar is not working]
- Fixed a bug where the position of the toolbar when selecting a checkbox in the workflows-list was not fixed at the top.
- Read the issue (opens in a new tab)
- Read the PR (opens in a new tab)
[before]
- The top toolbar was not visible when checkboxes were selected and scrolling.
- Fixed an issue with the existing
position : sticky
not being applied by changing it toposition : fixed
.
[after]
- After checking a checkbox, you can pin the toolbar to the top of the scroll to fire events for that list without having to scroll further.
[UI - show history about completed runs in each cron workflow]
- Work with a good improvement found by a Uijeong Issue to add a list to the
cron-workflows-detail
component to view the history of a given workflow. - Read the issue (opens in a new tab)
- Read the PR (opens in a new tab)
[before]
- There was nothing on the existing
cron-workflows-detail
page, but the
[after]
- Added a history
workflows
to the correspondingcron-workflows
and an example of when there is no history. - This PR is still under verification
🌵 Participation Review
It was a great experience.
Unfortunately, when I got a job, I became busy and lacked knowledge of server and DevOps, so I didn't participate in many contributor activities or offline gatherings.
However, I will not give up and try to contribute more to argoWorkflow by doing more front-end contributions and studying server side as well!
Thank you for making such a good activity and thank you to the mentors and mentees for helping me grow step by step even though I'm a beginner 👍
🌵 Personal Summary
Contribute Info
GitHub | Type | Summary |
---|
12. ByeongGon Lee
🌿 Personal Activity Report
Collapse/Expand
- Participate in the launching ceremony
- K8s learning
- Learn Operator concept
- Helm learning
- Learning CNI concepts
- Learning Service Mesh concepts
- Learn Argo Workflows
- Learn basic usage
- Learn skills around you
- DevContainer learning
- Nix Learning
- https://nixos.org/manual/nixos/stable/ (opens in a new tab)
- Learning MinIO
- Learn KeyCloak
- Argo Workflows contribution ‘bug fix’
- Create issue related to DevContainer malfunction https://github.com/argoproj/argo-workflows/issues/11439 (opens in a new tab)
- Issue with /etc/hosts entries being deleted when container restarts
- DevContainer malfunction resolved PR created and merge completed https://github.com/argoproj/argo-workflows/pull/11440 (opens in a new tab)
- Solved by adding —add-host option to runArgs in devcontainer.json
- Create issue related to DevContainer malfunction https://github.com/argoproj/argo-workflows/issues/11439 (opens in a new tab)
- Learn technologies around Argo Workflows
- Install and use NixOS based on what you have learned
- Research on Argo CD, Argo Events, and Argo Rollout
- Learn Keycloak
- Argo Workflows supports Keycloak integration, so I became curious and investigated Keycloak.
- Learn about the differences between OAuth2 and OIDC
- Learn about Keycloak concepts -Role -Ream -Client
- Learn how to set up Keycloak
- Learn about Keycloak API and integration methods
- Study Keycloak official documentation
- Practice installing and using Keycloak yourself
🌵 Participation Review
It was great to be motivated not only to contribute to open source but also to learn about new technologies through this Contribution Academy. It wasn't easy to participate while I was busy at work, but my long-term goal is not only to contribute to Argo Workflows in this year's contribution, but also in future contributions for the next few years. My future plans are to build not only Argo Workflows, but also other Argo Projects and apply them to my personal toy project, as well as to study more about K8s.
🌵 Personal Summary
Contribute Info
GitHub | Type | Summary |
---|
13. EuiJu Lee (opens in a new tab)
🌿 Personal Activity Report
Collapse/Expand
lint test 1. how to use Git & Commit, PR rules
-
Tasked with mastering basic Git usage and sending strict commits and pull requests for contributions.
-
In the official Argo Workflow project, it was helpful to use the Issue Template and send a PR for the issue you want to contribute to, and it was also an opportunity to learn about the existence of the Issue Template.
-
It was an opportunity to indirectly experience the elements essential for future contributions.
-
Issue creation - Member profile update - PR - Review - Merge process
2. Participate in a special beginner class - Repository for beginner special class missions(container-playground) (opens in a new tab) - The purpose was to help people who are unfamiliar with Docker or Kubernetes or who are new to it.
-
Learn about the need for Docker Image optimization while performing tasks presented by a mentor
- Since it is a process of stacking certain packages and static files by layer from the From clause, we realized that optimization is essential because the Docker image can become heavy and have a negative impact on performance improvement.
-
Mission
❗️objective❗️ Create your own web service and write a Docker file that can be containerized. To pass the assignment, please be sure to follow the instructions below. • Directory and file placement • Be sure to create your own github account directory for your own service and write it there. • The `Dockerfile` must be located at the top of your directory. (If this condition is not achieved, CI will fail.) • As long as it is under your own directory, you can freely write the rest of the files except for the location of `Dockerfile`. • However, the image must be built successfully when you execute the command `docker build -t [image name] .` at the top of your directory. • Behavior of built images • Your web service must operate on port 8080. • The built image must be serviced without problems when run with `docker run -d -p [forwarding port number]:8080 [image name]` without any additional parameters. • Web service development language and service structure • It doesn’t matter which language or framework you prefer. • It doesn't matter if you create a simple API service with no UI or design. • However, you must create two required APIs. (I don't care about the response value.) 1. /api/v1/[your github account] 2. /healthcheck • (Optional) It would be better to optimize the Docker image.([참고](https://thearchivelog.dev/article/optimize-docker-image/)) • [How to link PR and issues using keywords](https://docs.github.com/ko/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an Please refer to -issue-using-a-keyword) to connect the issue and PR. (Manual connection x) ❗️Note❗️ •It would be a good idea to refer to the documents below to understand Docker concepts and write a Dockerfile. • [Official documentation for creating a Dockerfile](https://docs.docker.com/engine/reference/builder/) • [How to use Docker for beginners](https://mysetting.io/slides/xxj85vnvey) (Content related to Docker Toolbox has been deprecated) •To raise PR and merge, please refer to the points below. • Since you do not have permission to create or push branches in the repo, you must fork and then work on it. • Please refer to [PR's naming convention](https://flank.github.io/flank/pr_titles/). • [DCO](https://github.com/apps/dco) Please commit while referring to the conditions for passing the bot's check. • Please understand how to commit using [GPG](https://www.44bits.io/ko/post/add-signing-key-to-git-commit-by-gpg) and create a signed commit. • It would be good if [Commit Message Convention](https://www.conventionalcommits.org/en/v1.0.0/) could also be applied. Even if you don't have to follow it, please avoid making commit messages that are too meaningless. (Optional)```
-
Having previous experience with the Python-based Django framework, I wrote a Docker file that creates a Django REST API.
-
I sent out a PR, but was pointed out a security issue or an error in unnecessary package import syntax.
-
This is the first time I learned that SECRET_KEY is exposed in the settings.py code of the Django project, and I will take the time to think about how to solve this security issue.
- We created a .json file containing the secret key and proceeded to refer to the json file in settings.py.
- Since the secret.json file cannot be uploaded to Commit, I learned how to ignore the json file through .gitignore, and was able to ignore unnecessary files created after executing certain commands such as dbsqlite3.
- It was an experience that made me realize that several considerations are needed to upload locally developed results to a Git project.
3. Argo Workflow Contributor
-
While looking into Argo Workflow, I came across the Argo Workflow Slack channel marked Deprecated in the Argo Workflow - Contact - Help field.
-
I thought it was a minor UI Issue, but I thought it was an opportunity to check what language the UI is displayed in and how it was developed, so I raised an issue and submitted a PR.
-
Created Issue
UI: non-existent Slack Workspace link on help page Issue (opens in a new tab)
-
When I created an issue, the Maintainer of the Argo project quickly left a comment.
-
I randomly tried to fix it with the CNCF Argo Channel link, but I received a comment from the maintainer asking me to update it with a different link.
-
-
Created PR
fix: deprecated Link(Help-Contact) Issue (opens in a new tab)
-
Argo Workflow had a UI based on React, and the directories were arranged by component, making it easy to analyze the code.
-
I didn't pass the DCO bot test because I accidentally omitted the Signed-off option during Commit
- but I learned about the ability to revert previous commits (Rebase) or merge multiple unnecessary commits into one (Squash) in GIt. And I returned the previous commit and committed it with
git commit -S -s -m "Commit Message"
.
- but I learned about the ability to revert previous commits (Rebase) or merge multiple unnecessary commits into one (Squash) in GIt. And I returned the previous commit and committed it with
-
I looked up what the comment ‘LGTM’ meant, and on Google, I used the tag LGTM to express my opinion. 'Looks Good To Me'. In other words, it was a rewarding experience because it meant it looked good.
-
The process of finding bugs or modifying the UI is important, but I think the most important thing is the process of performing contributions according to the rules set by the Argo Workflow ecosystem.
-
-
4. Participating in Argo Workflow Hackerton (Argo workflow - Hackathon held within the OSSCA team)
-
Pull Request(Merged) : feat: Search by name for WorkflowTemplates in UI (opens in a new tab)
-
Issue : Search by name for WorkflowTemplates in UI (opens in a new tab)
-
Issue Hackathon activity period
-
1st Hackathon (Hackathon Group C) : 23.08.16 - 23.08.20
-
2st Hackathon (Hackathon Group C) : 23.08.20 - 23.08.27
-
Issue content
- When there are a large number of templates in a cluster, it is good to search by name, but scrolling through all the templates is always inconvenient due to the lack of a search function.
- It was thought that the Argo Workflow UI needed a function to filter the results of workflow templates by name, so the issue was adopted as a result of a group meeting.
-
Role
- Front-End
- Creating a search field (Bar) in Argo workflow Template UI
- Analyze .get logic to analyze where the Name Pattern (Like search) is sent
- Modify workflow-template-filter.tsx and workflow-template-list.tsx in the workflow-template component directory.
- Front-End
-
Meeting details
- The meeting is held through the Slack hackathon channel, where opinions and information are shared every day.
- 1st Meeting details
1. name search function (backend) • WorkflowTemplate page • Add name search (LIKE search) • ClusterWorkflowTemplate page • Add name search (LIKE search) • CronWorkflow page • Add name search (LIKE search) 2. name search function (frontend) • WorkflowTemplate page • Add name search ui • ClusterWorkflowTemplate page • Add search sidebar (name, label) • CronWorkflow page • Add name search ui 3. pagenation (frontend) • WorkflowTemplate page • pagination based on name • ClusterWorkflowTemplate page • Add pagination • CronWorkflow page • Add pagination 4. Write test code - name search (LIKE search) - Need more analysis on what test code should be written
-
2nd discussion content
-
1st offline meeting
-
1. Co-commit method • Clone the repository https://github.com/ArgoWorkflows-OSS/argo-workflows locally. • We create a branch in the repository for our team to work on. (`master` vs `release-3.4.10`) • Work on the functions you are responsible for in the corresponding branch of the repository. (Commit by carefully following the commit rules for raising PR.) • When everyone's work is completed, 1 out of 3 people will send out a PR according to the PR template. • All 3 people can be contributors 2. Since it is a hackathon and there is a set period, we decided to first implement the workflow-template name filter, which we think is the main one among workflow-template, cluster-workflow, and cron-workflow, send a PR, and move on once the maintainer merges it. • Roles for each part • Back-End • workflow_template_server.go • Name filtering and pagination recalculation • Front-End : • workfflow-template-filter.tsx • Add Name search UI • Receiving and filtering the Name argument • workflow-template-list.tsx • Add Name state • Pass name to userEffect list • workflow-template.tsx, Utils.tsx • Passing the Name argument
-
3rd discussion details
-
2nd offline meeting
1. Offline Meeting Meeting Contents • An opinion that even cases where there is no namespace should be included in the filter. (Insufficient grounds to say to eliminate namespace - Other sites (Kubernetes Dashboard, OpenShift, Argo CD, etc.) also provide namespace without namespace) • Thoughts on whether it is possible to import and apply the logic used in continue and whether continue can be maintained as is even with custom results. • After analyzing the continue logic until Wednesday night, if it is concluded that pagination using continue is not possible, upload a question in the issue comment. • Front-end pagination (data is not reloaded, the method used in argocd) vs. server-side pagination (pagination after checking the entire list each time, will the load be okay?) • If server-side caching is implemented, is there a place to store it? 2. I decided to do a full K8s search by applying only the namespace and label every time I turned the page. 3. Additional logic implemented in offset-based pagination method • The part that didn't work • If you perform a filtered search after clicking the next page button, no data appears even if there are search results. • If you increase the number of pagination after clicking the next page button, the search results do not display properly. • What changed • As the continue value is updated on the server, when increasing the number of pages or applying filtering, there is a problem with pagination based on the continue value already set on the server. • A method of changing the continue value to be passed from the front was adopted ( When increasing the number of pages or applying filtering, set continue back to 0) 4. Pagination Test • workflow_template_server_test.go passed • (14 workflow templates registered) • Normal : UI workflow template first page • Normal : when workflow template page limit is 5, 10, 50 • Workflow template page Add workflow template on page 1 and move to page 2 • Workflow template page Delete the workflow template from page 1 and move to page 2 • Test the above with `name pattern` filtering search • Search without name pattern and then re-search by adding name pattern • After searching including the name pattern, deleting the name pattern and searching again 5. Create PR
-
-
Like filter (Name Pattern) implementation
-
ex) Workflow-template starting with sp can be searched
-
-
Result
- The implementation was a success, and we plan to modify the previously discussed cluster-template and cron-template components.
-
-
5. Learning outside of contribution activities - Completion of Google Kubernetes Study Jam training - Badge (opens in a new tab) - Architecting with Google Kubernetes Engine: Foundations Earned 7월 18, 2023 EDT - Architecting with Google Kubernetes Engine: Workloads Earned 7월 26, 2023 EDT - Architecting with Google Kubernetes Engine: Production Earned 8월 4, 2023 EDT
- The organized contents are recorded on a personal blog (velog) euijoo's Velog GCP Series (opens in a new tab)
🌵 Participation Review
-
Post-Participation Review
- Before the Academy, I only had knowledge of Argo CD, but afterward, I was able to research and analyze Argo Workflow projects and reach a level where I could think about how to utilize its powerful functions.
- When making my first contribution, I created an issue, communicated with the maintainers, modified the requested items, and created a PR, so I quickly received comments and achieved the result of merging.
- It may be a minor issue, but it was an experience that made me feel that a holistic analysis of the part I wanted to contribute was necessary.
- Not only this, it was an opportunity to analyze how the Argo workflow interacts internally by conducting an issue hackathon within the team, analyzing not only the UI, i.e. the front part, but also the logic of the back end part.
- Our group's body was a big issue, so we were able to reach our goal by holding online as well as offline meetings accordingly, and since the two members were working in the field, they kindly explained difficult parts, so it was a useful experience.
- I have a desire to continue communicating with the hackathon team members or the entire team.
-
Future plans
- Since the OSSCA period has not yet ended, we plan to continue exploring issues (Cluster-workflow-template, Cron-workflow, etc.), discover typos or translation errors in the Argo Workflow document, and continue to submit PRs.
- In addition, after the OSSCA period ends, we plan to portfolioize the contents that have been organized so far.
- As a toy project, we plan to complete data ETL work using Argo Workflow, which is currently in progress.
- If I get a job, I hope to create many insights by introducing many of Argo Workflow's functions into my field.
🌵 Personal Summary
Contribute Info
GitHub | Type | Summary |
---|
14. EuiJung Geon (opens in a new tab)
🌿 Personal Activity Report
Collapse/Expand
✅ Records about Contribution
Series | 2023 OSSCA - ddubi.log (opens in a new tab)
-> Unfortunately It is not translated..
✅ Various tasks
-
The task regarding issue/commit/PR in Github
[Summary]
- Select
the profile update
issue, fork ArgoWorkflows-OSS repository, and commit it by addingusers.md
and[name].md
underdocs/user
in the repository. After that, link the issue and submit a PR.
[Outcome]
- Select
-
Running Locally
[Summary]
- Running Argo workflows locally
- Install
Linux
onWindows
with wsl2 and run argo workflows using devcontainer cli.
[Outcome]
records: Argo Workflows running locally (opens in a new tab)
records: Argo Workflows running locally - retry (opens in a new tab)
records: Argo Workflows running locally - final (opens in a new tab)
records: Argo Workflows running locally - real final (opens in a new tab)
-
Special class for Beginners - Create my own service container image
[Summary]
Special class for Beginners
is a class for beginners(It's me) who don't know much about Container, kubernetes, argo from Argo-workflows oss team.- The task is creating my own web service, writing dockerfile for containerize the application.
- You need to understand Dockerfile, docker, images, and containers.
- In my case, build web server with express and write dockerfile.
[Outcome]
code: About task (opens in a new tab)
records: 왕초보 특별반 - 1. 나만의 서비스 컨테이너 이미지 제작 (opens in a new tab)
records: [Docker] Dockerfile 기본 명령어에 대해 알아보자 (opens in a new tab)
✅ Offline meeting
Date | Activity |
---|---|
2023.07.15 | - Introduction team - (Seminar) Introduction to Argo workflows and mentor’s application examples |
2023.07.30 | - Searching and sharing issues of the week - I was solving a local running problem. - (Seminar) HaeMin's WebRtc, Sunyeong's keyclock and argo worfklows |
2023.08.13 | - Receive feedback on Special class of beginners assignment - Searching and sharing issues of the week - (Seminar) Mentor’s special lecture on history and principles |
2023.08.20 | - Searching and sharing issues of the week - I share `Issue #11131`` - (Seminar) DaHae's ‘Platform builder & K6 execution test PoC that allows developers to perform execution tests on their own’ |
✅ Searching Issue & Creating Issue
-
Issue #11131 (opens in a new tab)
Fix Bug
[Summary]
Error occurs when
"
in a workflow input parameter fails to escape and is referenced asworkflow.parameter.json
[Outcome]
I dissmiss this issue because of the eeror occured from python environment not argo workflows.
-
Issue #11706 (opens in a new tab)
Improve UI
[Summary]
An issue that would like to add a UI that can check the history of each workflow in the cron workflow tab.
records: Argo Workflows - Issue #11706 (인생 처음으로 올린 감격적인 나의 소중한 Issue) (opens in a new tab)
[Outcome]
✅ PR open & merge
-
PR #11732 (opens in a new tab)
docs
PR Merge
[PR Summary]
PR that modifies the image in the Argo Workflows official document to clearly show that the image in Artifact Visualization is a YouTube video link.
[Outcome]
Image replacement to add a play button to the center of the image
merge complete
-
PR #11811 (opens in a new tab)
Improve UI
PR Merge
[PR Summary]
The PR tries to solve Issue #11706 (opens in a new tab)
Modify to check completed cron-workflow when you click specific cron-workflow at cron workflow page
If it cannot find a completed cron-workflow, it will be display like above
[Outcome]
Merge Complete
🌵 Participation Review
-
Review
- Actually DevOps, Infra were unfamiliar fields to me, but through the Argo workflows project, I feel more familiar with the field than before.
- I have only been learned to concepts such as Docker, Container, etc. theoretically, but I learned those concepts more easily through hands-on practice, and in addition new things (the existence of wsl...!).
- It gave me an opportunity to look back on concepts that I miss (e.g Linux authority and network.)
- Also I had a vague fear of writing an issue, but I was able to overcome that fear by writing it myself.
- At last, There are many ways to contribute and I realize it was important to try to contribute step by step.
- The first time I focused on issues that I did not sympathize with, due to my personal greed and the idea of learning while solving problems.
- However I realized regardless of the difficulty of the issue, I needed to understand the repo while solving an issue that I personally sympathized with.
- I look forward to continuing to enjoy contributing to open source!
- Actually DevOps, Infra were unfamiliar fields to me, but through the Argo workflows project, I feel more familiar with the field than before.
-
Forward Plan
- Step 1
: Time to adapt and learn about Argo Workflows / Simple contribution
: Contribute articles via Repo's TODO
: Focuse on UI improvements
- Step 2
: Focus on template,backend contribution
- Step 3
: Write an issue that would be good to solve and then contribute
Even after the open source contribution ends, the mentor plans to continue meeting regularly, and I have a goal of contributing at least one issue per month to the Argo Workflows repo this semester.
🌵 Personal Summary
Contribute Info
GitHub | Type | Summary |
---|
15. SungRock Jung
🌿 Personal Activity Report
Collapse/Expand
- git/github Getting Started
issue: https://github.com/ArgoWorkflows-OSS/argoworkflows-oss.github.io/issues/11 (opens in a new tab)
pr: https://github.com/ArgoWorkflows-OSS/argoworkflows-oss.github.io/pull/15 (opens in a new tab)
summary: Familiarize yourself with git/github, the core of code shape management in the open source ecosystem.
detail:
Much of the open source world relies on git and github for collaboration.
Therefore, in order to contribute to open source, it is necessary to familiarize yourself with git/github.
Using git/github, it was a hands-on activity to issue issues, follow commit rules, and create PRs.
-
feat: logging for client-side throttling
issue: #11387 (opens in a new tab), #11402 (opens in a new tab)
pr: #11437 (opens in a new tab)
summary: fix to figure out faster if user set certain options incorrectly
detail:
It uses a library calledclient-go
to communicate withkubernetes
.
This library provides options--qps
,-burst
forrequest limit
.
If this option is set very low, it will causethrottling
. That's why we have a separatelog level
to inform the user more quickly.
While working on this issue, I learned a lot aboutclient-go
, especially aboutRoundTrip
.
It was a shock when I realized that I could add middleware usingRoundTrip
for any object that respects thehttp request interface
provided by golang.
-
go 1.21 upgrade
issue: #11566 (opens in a new tab)
pr: #11601 (opens in a new tab)
summary: golang 1.21 ver release에 따른 version upgrade 진행
detail: As a lead mentee, I decided it would be better to have a teammate who hasn't contributed yet try to solve the issue rather than me.I shared the issue with my teammate, and I was able to support him in successfully resolving the issue.
We shared our approach to the issue in our regular weekly meeting.On weekdays, we would take questions and answer them separately in a slack channel so that everyone on the team could get experience submitting PRs.
Team members also gained invaluable experience merging PRs.
-
Debugging 설정
summary: 팀원의 argo-workflow debugging setting
detail:
For team members who are new to developing with golang, we had some difficulties setting up the debugging environment, and we worked together to solve it.During this process, I realized that I'm not very good at setting up debugging for apps that are closely related to kubernetes, and I realized that I needed to get some help with that.
🌵 Participation Review
- After
- Participating in OSSA for 13 weeks was a great experience. After applying 3 times, I was so happy to be part of a project built with my favorite community, CNCF, and my favorite language, Golang.
- Participating in argo-workflow under the CNCF umbrella through OSSCA and being able to contribute to the ecosystem of CNCF, even in a small way, was a very happy time for me. In particular, I thought it was a good experience for beginners to be able to quickly communicate with maintainers through mentoring, a system operated by argo-workflow.
- With feedback through argo-workflow's mentoring system, I quickly gained confidence and good experience through PR submission and merge, which I wanted to share with all team members as a lead mentee. Helping a team member who was new to open source contributing made me realize how much of a barrier to entry it is for people who are new to it, and it made me think about how to bring beginners into the ecosystem more reliably.
- In addition to the open source contribution activities, the team members from Developer, DevOps, and SRE roles, the different skills they use in their respective roles, and the sharing of experiences broadened my horizons.
- If I have the opportunity next year, I would definitely participate in OSSCA and continue my open source contribution activities with various people.
- Planning
- Working on this argo-workflows project has made me very interested in the projects in the argo camp.
By participating in the project, I was able to identify my shortcomings as a developer, and I plan to improve them.
Even if ossca ends, I will continue to contribute to open source under the CNCF umbrella.
- argo-workflow
- shortfalls
- Lack of understanding of kubernetes operators
- Lack of frontend knowledge
- Future plans
- The UI of argo-workflow is a bit lacking compared to other argo projects, and I'm going to try to improve it based on user feedback.
- Regarding area/artifact, I would like to extend it to use more storage.
- Regarding area/plugin, it currently only supports sidecar, but I'd like to make it easier to extend externally implemented plugins with code.
- Regarding the documentation, I'd like to think about the parts that are difficult for beginners and improve them.
- shortfalls
- argo-workflow
- Personal growth
- shortfalls
- Talking to members from different companies and lacking their own perspective on developing and keeping the service stable.
- Difficulty communicating to transfer knowledge.
- Future plans
- I'm going to study how to organize and speak about the knowledge I want to convey.
- I'm going to talk to a lot of people, share my thoughts, and try not to get caught up in otherness.
- shortfalls
- Working on this argo-workflows project has made me very interested in the projects in the argo camp.
By participating in the project, I was able to identify my shortcomings as a developer, and I plan to improve them.
Even if ossca ends, I will continue to contribute to open source under the CNCF umbrella.
🌵 Personal Summary
Contribute Info
GitHub | Type | Summary |
---|
16. MoonYoung Chae
🌿 Personal Activity Report
Collapse/Expand
Multiple Tasks
- Github Issue/Commit/PR Mission
- Learned how to use Github to contribute the ArgoWorkflow which is a large scale of open source community.
- https://github.com/ArgoWorkflows-OSS/argoworkflows-oss.github.io/issues/43 (opens in a new tab)
- https://github.com/ArgoWorkflows-OSS/argoworkflows-oss.github.io/pull/44 (opens in a new tab)
- ArgoWorkflow Running Locally
- Run ArgoWorkflow in local environment
- Understanding Argo Workflow Structure, DevContainer, Container-Based Applications, and Makefile Structure
- Make a container image
- Learned Docker File Command, Docker layer structure, optimization and caching
- https://github.com/ArgoWorkflows-OSS/container-playground/pull/16 (opens in a new tab)
- https://github.com/ArgoWorkflows-OSS/container-playground/pull/23 (opens in a new tab)
Issue analysis
- Metric issue analysis
- Analysis of issues that require improvement by many users due to issues with many Github Reactions
- Increased monitoring convenience by adding metric labels
- As a result of issue analysis, it was discovered that developing the content could cause another problem.
- When adding a metric label, a large amount of metrics are collected, which may cause performance problems due to a large amount of metric traffic flowing to existing users.
- Suggest and communicate ways to solve problems by detouring
- Confirm that the monitoring requested by the issue is possible when using a custom metric, and suggest a way to resolve it by bypassing it.
- https://github.com/argoproj/argo-workflows/issues/9849#issuecomment-1685227337 (opens in a new tab)
- Inquire some ambiguous part in the comment in code for future improvement.
- Issue analysis through issue hackathon
- Analysis of issues that require improvement by many users due to issues with many Github Reactions
Contribute
- Fixed a type of function name and vaiable name
- Fixed parts that could cause confusion to other developers
- https://github.com/argoproj/argo-workflows/pull/11604 (opens in a new tab)
- https://github.com/argoproj/argo-workflows/pull/11633 (opens in a new tab)
- https://github.com/argoproj/argo-workflows/pull/11687 (opens in a new tab)
🌵 Participation Review
I wanted to contribute to a large open source community, but I felt at a loss. It was great to be able to contribute directly through this academy. This was possible because a mentee with a lot of experience in contributing guided me step-by-step to contribute and encouraged me to take on the challenge. Through technical seminars and technical exchanges with other developers, we were able to grow together. Because ArgoWorkflow is a large-scale project, there are many difficult parts to analyze alone, but by sharing opinions with other developers, I was able to solve the problem more quickly. Since I have gained some understanding of the ArgoWorkflow project and have gained confidence through my small contribution experience, I expect that my next contribution will be easier. Even after this program ends, we plan to contribute on a larger scale by collaborating with other mentees who are interested in ArgoWorkflow.
🌵 Personal Summary
Contribute Info
GitHub | Type | Summary |
---|
17. SooNyeong Choi (opens in a new tab)
🌿 Personal Activity Report
Collapse/Expand
1. Cron workflow can not apply volumeClaimTemplates config from argo controller config map (workflowDefaults)
Issue #11344 (opens in a new tab) PR #11662 (opens in a new tab)
Issue Analysis
To understand this issue, I first needed to grasp what Default Workflows (opens in a new tab) are.
I learned that the workflowDefaults
field in the argo workflows controller configmap
allows you to set default values for workflows. Additionally, I discovered that if a workflow already has values for this field, those values take precedence.
For example, after configuring the configmap
as follows, when you create a Workflow,
# This file describes the config settings available in the workflow controller configmap
apiVersion: v1
kind: ConfigMap
metadata:
name: workflow-controller-configmap
data:
# Default values that will apply to all Workflows from this controller, unless overridden on the Workflow-level
workflowDefaults: |
metadata:
annotations:
argo: workflows
labels:
foo: bar
spec:
ttlStrategy:
secondsAfterSuccess: 5
parallelism: 3
it will be automatically created with the values set in the workflowDefaults
field, like this:
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: gc-ttl-
annotations:
argo: workflows
labels:
foo: bar
spec:
ttlStrategy:
secondsAfterSuccess: 5 # Time to live after workflow is successful
parallelism: 3
The issue was related to an error occurring when adding the volumeClaimTemplates
value to workflowDefaults
, causing errors when creating CronWorkflows
or Workflows
.
The error message indicated, does not contain declared merge key: name.
Upon checking the code, it was found that the error occurred in the StrategicMergePatch
function, which is related to Kubernetes' patch
strategy.
VolumeClaimTemplates []apiv1.PersistentVolumeClaim `json:"volumeClaimTemplates,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,6,opt,name=volumeClaimTemplates"`
The issue arose from the fact that the VolumeClaimTemplates
type defined in Workflows
used name as the patchMergeKey
.
However, upon inspecting the PersistentVolumeClaim
type below, it was found that name
was not present. In other words, the problem occurred because a value was defined as the patchMergeKey
that was not part of the structure.
type PersistentVolumeClaim struct {
metav1.TypeMeta `json:",inline"`
// Standard object's metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
// +optional
metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
// spec defines the desired characteristics of a volume requested by a pod author.
// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
// +optional
Spec PersistentVolumeClaimSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"`
// status represents the current information/status of a persistent volume claim.
// Read-only.
// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
// +optional
Status PersistentVolumeClaimStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
}
Issue Resolution
I removed the patchMergeKey
from VolumeClaimTemplates
.
However, the reason patchMergeKey
was added to VolumeClaimTemplates
was to maintain consistency with conventions used for Volumes
.
Since this issue is related to policies, it indeed requires further discussion.
This was my first PR to the ArgoWorkflows project, and it's great that i was able to identify the cause of an issue that was causing inconvenience for many people.
2. Search by name for WorkflowTemplates in UI
Issue #11004 (opens in a new tab) PR #11684 (opens in a new tab)
Issue Analysis
This issue was worked on by a team of three people.
WorkflowTemplates
do not have a search function based on 'name', so to find a specific WorkflowTemplates
, you could only search based on label
.
So, many users were feeling inconvenienced, and it was an issue related to 'feature improvement' that they would like to provide a function to search based on 'name'.
Issue Resolution
We added additional logic to filter the results of WorkflowTemplates retrieved through the Kubernetes API based on their 'name', successfully implementing this feature.
However, there was one issue.
Existing pagination was implemented using Kubernetes' own continue
value, so if Kubernetes results were custom manipulated like this, Kubernetes pagination could not be used.
We had a lot of concerns about how to solve this, but We solved the problem by applying logic to implement cursor pagination using Kubernetes' resourceVersion
.
It was so fun to be able to discuss it with others instead of alone.
I also felt good about providing some really needed functionality to the ArgoWorkflows project.
3. A problem that is not initialized when changing the number of page limits
Issue #11702 (opens in a new tab) PR #11703 (opens in a new tab)
Issue Analysis
While resolving the Search by name for WorkflowTemplates in UI
issue, i discovered a new pagination bug.
When changing the number of pages, the continue
value used for pagination was not initialized in the UI, so the data was not displayed properly.
Issue Resolution
I was able to solve the problem by simply modifying the logic to initialize offset
when a change in page number is detected in the UI code.
It was only a one-line code change, but this one line solved a problem that was quite inconvenient.
4. Pagination may not work correctly for archived workflows
Issue Analysis
Issue #11715 (opens in a new tab) PR #11761 (opens in a new tab)
This issue was directly communicated to us by Maintainer @terrytangyuan through Slack.
It felt like I was contacted by my favorite celebrity and I was so happy that I almost flew away. I suppressed my happy and excited heart and analyzed the issue.
Workflows
and ArchivedWorkflows
were previously separated into different pages, but starting from the master
version, Workflows
and ArchivedWorkflows
are combined into one page, and the logic has been modified to show ArchivedWorkflows
together if they exist.
However, when Workflows
and ArchivedWorkflows
were merged into one, a problem occurred with pagination.
The two resources also used completely different pagination. Workflows
was using the continue
value, which is Kubernetes' own pagination, and ArchivedWorkflows
used its own database, so it was using the database to perform pagination using the offset
method.
However, while passing the continue
value used in Workflows
to ArchivedWorkflows
as is, a problem occurred where ArchivedWorkflows
was not searched at all.
Issue Resolution
I was able to resolve the issue by referring to the pagination logic that was implemented while resolving the Search by name for WorkflowTemplates in UI
issue.
Since the two resources have no choice but to use different methods of pagination, rather than using pagination before merging the two resources, use a method of first searching the entire resource and merging the two resources and finally applying the pagination logic. I did it.
I was able to solve the problem of ArchivedWorkflows
not being searched, but fetching and merging the entire list every time the page is changed is a performance concern, so i'm thinking about a way to test performance.
I plan to switch to front-end pagination if performance testing indicates that it's not working well.
It was great to be able to solve a critical issue, and I felt proud and fun because I felt like I was contributing properly to the ArgoWorkflows project as a contributor.
5. Relocation of Commit Guidelines Information in the Documentation
Issue #11700 (opens in a new tab) PR #11701 (opens in a new tab)
Issue Analysis
The ArgoWorkflows project has a README document for developers attempting to contribute.
However, it does not mention specific guidelines for commits.
@GeunSam2 mentor mentioned that it was inconvenient when initially attempted to contribute and had difficulty finding commit guidelines.
Issue Resolution
Upon hearing this feedback, I made a modification to the contribution README by adding a link to commit guidelines.
This change aims to make it easier for developers who want to contribute to ArgoWorkflows.
In this PR, a maintainer provided a code suggestion, which was intriguing and enjoyable for me as I was encountering the code suggestion feature for the first time.
🌵 Participation Review
If someone were to ask me what I did best this year, I would confidently say that it was my participation in the ArgoWorkflows project contribution activities.
Meeting various developers in the same field, forming a sense of empathy, and engaging in discussions with them was truly enjoyable. Hearing stories about different companies was also quite interesting.
During our weekly meetings, it wasn't just about working together; our mentors always conducted insightful seminars. Sundays became genuinely enjoyable, and time flew by.
Meeting such capable mentors was a delight. I received advice on the concerns I had as a junior developer, my future direction, and how to study effectively as a developer, which made me happy.
I always wanted to try contributing, but I was afraid to tackle such a big project. However, facing these challenges with such great mentees and mentors made my fears disappear.
Submitting numerous PRs and communicating with maintainers was also a lot of fun, and it was really satisfying to see my code being incorporated.
Thanks to this experience, I gained the confidence to contribute not only to ArgoWorkflows but also to other projects.
I have no intention of stopping my contributions after this period ends. I plan to continue contributing to ArgoWorkflows while looking for opportunities to contribute to Kubernetes and Argo CD projects used by my company.
🌵 Personal Summary
Contribute Info
GitHub | Type | Summary |
---|