This repository hosts Reusable GitHub Workflows.
The repository includes:
add-to-projectworkflow: when a new issue or PR is added to a repository, it is also added - by default - to the SynchroGuard platform project or to the project defined byproject-urlinput parameter with statusnew. When a new PR is added, the PR is assigned to its creator. When a PR is set to ready, reviewers fromreviewers-teaminput parameter (default valuebackend-devs) orreviewers-individuals(comma separated) are added.check-prworkflow: when a new PR is added to a repository or any change occurs to the PR, the PR is validated to be sure that labels are valid.clean-up-storageworkflow: when a new PR is closed, related cache and artifact are deleted.deploymentworkflow: commit a container image tag in the k8s-deployments repositorymarkdownworkflow: lint all Markdown documents and checks that the links referenced in the documents are valid. Ifskip-spell-check: false, also, a spell checker is executed.release-notesworkflow: automatically updates release notes using PR titles and labels.golangworkflow: lint, test and benchmark Go Applications. The workflow includes authentication to GitHub Container Registry in case tests rely on private images. To retrieve the images, you need also to setread permissionfor the repository on the package. The workflow also scans for vulnerabilities.dockerworkflow: build and push Docker images and scans for vulnerabilities.clean-up-dockerworkflow: when a PR is closed, related docker images and untagged ones are deletedlicensingworkflow: add licensing information in file headers and check dependencies licensing compatibility.- 'new-release` workflow: create a new release (optionally updating packaging file version).
Some of these workflows are configured as starter workflows
in the .github repository, so that you can add them at any time
from the actions page.
-
The new workflow need to be callable, i.e., include:
on: workflow_call:
This type of trigger can also be used to specify input parameters, as discussed in Reusable GitHub Workflows documentation. In which case we recommend to also include default values.
-
Ideally, the workflow should be tested in this repository itself before being used in other repositories. In relation to this, it is then important that you trigger it with events such as
issuesorpull_requestand that, for these events, that do not support input parameters, you find a way to pass default values. See markdown workflow for one of the possible way to solve the issue. -
Once the new workflow is available in the main branch, you can call it using something like:
jobs: add-to-project: uses: zaphiro-technologies/github-workflows/.github/workflows/add-to-project.yaml@main secrets: inherit
Of course, you can also test it from a branch, in which case you can replace
mainwith the branch name.
Should you wish to advertise the re-usable workflow to your organization
developers in the new action page:
-
You need to create a template in the
.githubrepository in the folderworkflow-templates:name: Project Management on: issues: types: - labeled pull_request: branches: [$default-branch] types: - labeled workflow_call: jobs: add-to-project: uses: zaphiro-technologies/github-workflows/.github/workflows/add-to-project.yaml@main secrets: inherit
-
You need to create a linked
.properties.jsonfile including the related metadata:{ "name": "Zaphiro Project Management", "description": "Zaphiro Project Management starter workflow.", "iconName": "octicon project", "categories": ["Automation", "utilities"], }
For icons, we leverage octicon icons.
You can find more information in starter workflows documentation.
To support it in your repo, you need to download and install the grammar check
script in your repository. You can customise parameters or
just use what's in the script. In the GitHub action mode (the default mode), the
script uses the set of parameters included in .gramma.json.
You can include files that you want to be ignored in the
.grammarignore file.
To use the local mode, that uses additional rules, run:
./grammar-check.sh -m localTo check a single file using the interactive mode, run:
./grammar-check.sh -m local -f filename.mdTo check a list of file using the interactive mode, run:
./grammar-check.sh -f "filename1.md filename2.md"