Recently Developer Circles Facebook has concluded its Open Source Immersion Program, and we at DevC Pune thought to make a repository to recognize all the PRs made by the community during this program and decided to make a repository which has leader-board for the same, but collecting all the data was difficult and there comes GitHub workflows to the rescue which made ease the process of collecting data about PR and publishing on the repository. Enough with the stories! Let's talk about what we actually did.
Before starting let's understand what is a workflow and how it works.
- Instead of
onHoveretc we have events like:
- When an event occurs, the workflow has a list of
jobsto be executed, in a job we can do some processing, and use some
actions, which are just like functions in our regular programming language.
## How does a GitHub Workflow works?
Every workflow needs to have a
.yml which contains various sections of identifying the event and list of jobs reacting based upon the event. The yml file can even call another script to do some processing. When a job is executed it creates an instance of you repo on cloud, like a docker image, and now this is instance is just like a copy of your repo on a local machine, once you are done with processing you have to push the changes back to GitHub to see the changes. So you can use this instance to to perform anything which you do on your terminal.
- In the first line we have to specify the name of the workflow:
name: add-project # This workflow gets executed when someone opens an issue for adding a project
You can also add some comment to describe what that workflow is doing.
- We can define an event on which a workflow will be triggered like this:
on: issues: types: [opened,edited]
Now comes the list of
jobs, we can define a
jobs: add_project_job: if: startsWith(github.event.issue.title, 'add|') name: add-project runs-on: ubuntu-latest steps:
add_project_job is the name of job. We can also specify condition which decides if certain job will be executed or not.
runs-on parameter specify the environment which will be created to run the job. Next we have to define steps which will be executed inside a job.
And that is the basic structure of a GitHub workflow. We'll discuss the whole workflow in detail in the next part! Till then keep automating!