Skip to content

ZeroGachis/.github

Repository files navigation

Template Github Workflows

Template Workflows

This repository contains a set of templates for Github workflows adapted to Smartway context.

Below is the list of available templates and associated documentations:

Name Path Description Documentation
Android Format Version Code .github/workflows/android-format-version-code.yml Generates version code for Android applications Documentation
ArgoCD Sync .github/workflows/argocd_sync.yml Synchronizes applications with ArgoCD Documentation
Build Image .github/workflows/build-image.yml Builds and validates Docker images Documentation
Build Xamarin Libs .github/workflows/build-xamarin-libs.yml Builds Xamarin libraries Documentation
Create APK Artifact .github/workflows/create-apk-artifact.yml Creates Android APK artifacts Documentation
Create Go-To-Prod PR .github/workflows/create-gotoprod-pr.yml Creates production deployment pull requests Documentation
Delete Docker Image .github/workflows/delete-docker-image.yml Deletes Docker images from registry Documentation
.NET Build .github/workflows/dotnet-build.yml Builds and tests .NET applications Documentation
.NET Publish .github/workflows/dotnet-publish.yml Publishes .NET packages Documentation
Dockerfile Linter .github/workflows/dockerfile-linter.yml Lints Dockerfile syntax Documentation
GitHub Release Notes .github/workflows/gh-release-notes.yml Generates GitHub release notes Documentation
GitHub Release Please .github/workflows/gh-release-please.yml Automates release process Documentation
Infra Cost .github/workflows/infra-cost.yml Calculates infrastructure costs Documentation
Publish APK to S3 .github/workflows/publish-apk-s3.yml Publishes Android APKs to S3 Documentation
Python Publish .github/workflows/python-publish.yml Publishes Python packages Documentation
Push Image GHCR to ECR .github/workflows/push-image-ghcr-to-ecr.yml Pushes images from GHCR to ECR Documentation
Release Tag .github/workflows/releasetag.yml Generates release tags Documentation
Run AWS .github/workflows/run-aws.yml Executes AWS commands Documentation
Run Docker .github/workflows/run-docker.yml Runs Docker containers Documentation
Run Docker with DB .github/workflows/run-docker-with-db.yml Runs Docker containers with database Documentation
Run Docker Upload Artifact .github/workflows/run-docker-upload-artifact.yml Runs Docker and uploads artifacts Documentation
Run Python .github/workflows/run-python.yml Executes Python scripts Documentation
Run Pytest .github/workflows/run-pytest.yml Runs Python tests Documentation
Send Slack Notification .github/workflows/send_slack_notif.yaml Sends Slack notifications Documentation
Send Slack Message .github/workflows/send_slack_message.yaml Sends Slack messages Documentation
Send Slack Github Actions Status .github/workflows/send_slack_gha_status.yaml Sends Slack notifications Documentation
Terraform .github/workflows/terraform.yml Manages Terraform infrastructure Documentation
Terraform Check Kube Enabled .github/workflows/terraform_check_kube_enabled.yml Checks Kubernetes enablement for Terraform Documentation

Each workflow template has its own dedicated documentation page with detailed information about inputs, outputs, and usage examples.

Release Management

This project uses Release Please from Google to automate the release process. The tool handles versioning and changelog generation based on commit messages.

Conventional Commits

To ensure releases are generated correctly, we follow the Conventional Commits specification. Commit messages should be structured as follows:

  • feat: A new feature
  • fix: A bug fix
  • docs: Documentation only changes
  • style: Changes that do not affect the meaning of the code (white-space, formatting, etc.)
  • refactor: A code change that neither fixes a bug nor adds a feature
  • perf: A code change that improves performance
  • test: Adding missing or correcting existing tests
  • build: Changes that affect the build system or external dependencies
  • ci: Changes to our CI configuration files and scripts
  • chore: Other changes that don't modify src or test files
  • revert: Reverts a previous commit

Example:

feat: add new workflow to handle peppermint

Breaking Changes and Major Versions

When introducing breaking changes, follow these steps to ensure a new major version is released:

  1. Prefix the commit message with BREAKING CHANGE:: Indicate that the commit introduces breaking changes.
  2. Describe the breaking change in the commit message: Provide details about what changes are being made and how they affect existing functionality.
  3. Merge the commit: Once the breaking change commit is merged, Release Please will automatically create a new major version.

Example commit message for a breaking change:

feat!: add new workflow to handle peppermint

BREAKING CHANGE: This update changes the way the Datadog monitor module interacts with the API, requiring updates to existing configurations.

The ! after feat indicates a breaking change, and the BREAKING CHANGE: section provides details about the change.