Github Actions - Continuous Integration

What is Github Actions ?

Github Actions is a CI/CD tools that allows us to automate the tasks from development to deployment. Github Actions are configured as workflows. Github picks workflow information stored in .yml files from .github/workflows directory in root of the repository. Also an important point to note is that workflow directory should be in the default branch (master) of the repository. More about Github Actions can be found here.

Comparing Github Actions with GoCD

GoCD vs Github Actions

Some limitations with Github Actions:

  1. Github Actions does not support configuration for triggering a workflow when change happens in a different repository.
    Workaround: One of the workaround is to use repository_dispatch event type. Repository Dispatch is done by making a POST request to a specific API endpoint exposed by Github API. More about repository_dispatch can be found here. Reference for creating an event can be found here.
    Problems: In order to trigger the API, it needs a Github Personal Access Token (PAT), which is to be created by the organisation owner and added as a secret to the organisation. Also repository dispatch validates only if the specified repo exists or not and raises the event and returns 204, it does not validate whether a trigger has happened or not.

  2. No Value Stream Mapping visualisation as in GoCD.
    Need to go-through the workflow YML scripts in .github/workflows directory in root of each repo.

  3. When a secret is set and it is used in actions, then wherever the secret's value appears, it is redacted in all occurences.
    Let say you have a secret with value demo, and if it is found in the name of the action, then that too gets redacted.

  4. There is no template like configuration in Github Actions


Diagrammatic Explanation of current Bahmni GoCD based build and new Github Actions based build (In-development)