Thank you for your interest in contributing to GitHub Workflows & Actions!
.
├── actions/ # All reusable actions
│ ├── action-name/
│ │ ├── action.yml # Action definition
│ │ ├── readme.md # Documentation
│ │ └── examples/ # Usage examples
│ └── internal/ # Internal composite actions
├── .github/workflows/ # CI/CD workflows
├── Taskfile.yml # Development tasks
└── README.md # Main documentation- Task CLI
- Docker
- Git
Fork and clonethe repositoryCreate a feature branch:
git checkout -b feature/my-new-actionRun linting:
task yamllintTest your changesusing example workflows
- Create directory structure:
actions/my-new-action/
├── action.yml
├── readme.md
└── examples/
└── base.yml- Follow existing patterns:
- Look at docker-build-push as reference
- Use composite actions for shell scripts
- Validate all inputs
- Provide clear error messages
- Documentation requirements:
- Complete
readme.mdwith inputs/outputs tables - Practical usage examples
- Prerequisites and limitations
- Testing:
- Add example workflow in
examples/ - Test manually with the example
- Ensure
task yamllintpasses
All actions must include these standard inputs:
show_summary:
description: 'Print summary in the job summary'
required: false
default: 'true'- Generate job summary using
$GITHUB_STEP_SUMMARY - Respect
show_summaryinputs - Include key outputs, status, and relevant details
- YAML: Follow
.yamllint.ymlrules - Shell scripts: Use
set -euo pipefail - Security: Follow principle of least privilege
- Error handling: Fail fast with clear messages
- Test thoroughly:
task yamllint- Commit with clear messages:
git commit -m "[feat] add new action for xyz"- Push and create PR:
- Describe what the action does
- Include usage examples
- Reference any related issues
Open an issue or start a discussion!