Skip to content

Latest commit

 

History

History
321 lines (211 loc) · 11.4 KB

README.md

File metadata and controls

321 lines (211 loc) · 11.4 KB

Build Status Software License Commits since latest release Discord Twitter

Shared GitHub Actions

This repository is a collection of reusable workflows and composite actions, specifically designed for use in cycle projects.

These tools encapsulate common and repetitive tasks, allowing for easy integration into multiple projects. This approach not only reduces the need to rewrite code but also ensures standardized operations across all Cycle repositories.


📋 Table of Contents


🚀 Getting Started

To use these workflows and actions, reference them directly from your project's workflows. Detailed instructions for each are provided below.


💻 Composite Actions

Composite Actions are a powerful feature of GitHub Actions that allow you to create reusable actions using a combination of other actions, shell commands, or both.

This enables you to encapsulate a sequence of steps into a single action, making your workflows more modular, easier to maintain, and reducing duplication across your projects.

Composite Actions can accept inputs and use outputs, making them highly flexible and adaptable to various use cases.

Check each action's README file for detailed instructions on how to use it.

Action Description
composer/get-cache-directory Gets the Composer cache directory path and exports it as env variable.
composer/get-root-version determines the Composer root version based on the specified branch and exports it as env variable.
composer/install Installs dependencies with Composer based on the specified dependency level.
phive/install Install dependencies with Phive.

💻 Workflows

Read more about reusing workflows.

→ Auto Label and Release Management

apply-labels.yml:

Automatically applies labels to pull requests based on modified paths.

This workflow triages pull requests and applies labels based on the paths that are modified in the pull request. This can help to categorize your pull requests and make it easier to identify the type of changes included.

To use this workflow, set up a .github/labeler.yml file with your configuration in your project. For more information on how to configure the labeler, see: https://github.com/actions/labeler/blob/master/README.md

Here is an example of how to use this workflow:

.github/workflows/apply-labels.yml
---

on:
  pull_request:

name: 🏷️ Add labels

jobs:
  label:
    uses: cycle/gh-actions/.github/workflows/apply-labels.yml@master
    with:
      os: ubuntu-latest
    secrets:
      token: ${{ secrets.GITHUB_TOKEN }}

...
.github/labeler.yml
---

"type: bug":
    - head-branch: ['^bug', '^fix', 'bug', 'fix']

"type: enhancement":
    - head-branch: ['^feature', '^feat', 'feature']

"type: documentation":
    - changed-files:
          - any-glob-to-any-file: ['assets/**/*', '.github/*', './*.md']

"type: maintenance":
    - changed-files:
          - any-glob-to-any-file: ['tests/**/*', '.github/workflows/*']

...

Real-world examples can be found in the wayofdev/laravel-package-tpl repository.


auto-merge-release.yml:

This workflow automatically merges releases. This workflow utilizes peter-evans/enable-pull-request-automerge to auto-merge releases that are created by googleapis/release-please.

Here is an example of how to use this workflow:

.github/workflows/auto-merge-release.yml
---

on:  # yamllint disable-line rule:truthy
  pull_request:

permissions:
  pull-requests: write
  contents: write

name: 🤞 Auto merge release

jobs:
  auto-merge:
    uses: cycle/gh-actions/.github/workflows/auto-merge-release.yml@master
    with:
      os: ubuntu-latest
      pull-request-number: ${{ github.event.pull_request.number }}
      actor: lotyp
      merge-method: merge
    secrets:
      # to trigger other workflows, pass PAT token instead of GITHUB_TOKEN
      token: ${{ secrets.PERSONAL_GITHUB_TOKEN }}

...

Real-world examples can be found in the wayofdev/laravel-package-tpl repository.


→ Code Architecture

create-arch-diagram.yml:

This workflow leverages the codesee-io/codesee-action action to automatically generate architecture diagrams for your codebase whenever a pull request is made.

CodeSee is an open-source tool that helps visualize your codebase and its dependencies, making it easier for new contributors to understand the project or for maintaining a clear view of your project's architecture over time.

Here is an example of how to use this workflow:

.github/workflows/create-arch-diagram.yml
---

on:  # yamllint disable-line rule:truthy
  push:
    branches:
      - develop
  pull_request_target:
    types:
      - opened
      - synchronize
      - reopened

name: 🤖 CodeSee

permissions: read-all

jobs:
  codesee:
    uses: cycle/gh-actions/.github/workflows/create-arch-diagram.yml@master
    with:
      os: ubuntu-latest
      continue-on-error: true
    secrets:
      codesee-token: ${{ secrets.CODESEE_ARCH_DIAG_API_TOKEN }}

...

Real-world examples can be found in the wayofdev/laravel-package-tpl repository.


→ Static Analysis

shellcheck.yml:

This workflow uses redhat-plumbers-in-action/differential-shellcheck to run shell script analysis.

Here is an example of how to use this workflow:

.github/workflows/shellcheck.yml
---

on:  # yamllint disable-line rule:truthy
  pull_request:

name: 🐞 Differential shell-check

permissions:
  contents: read

jobs:
  shellcheck:
    uses: cycle/gh-actions/.github/workflows/shellcheck.yml@master
    with:
      os: ubuntu-latest
      severity: warning
    secrets:
      token: ${{ secrets.GITHUB_TOKEN }}

...

Real-world examples can be found in the wayofdev/laravel-package-tpl repository.


🔒 Security Policy

This project has a security policy.


🙌 Want to Contribute?

Thank you for considering contributing to the cycle community! We are open to all kinds of contributions. If you want to:

You are more than welcome. Before contributing, kindly check our contribution guidelines.

Conventional Commits


🌐 Social Links

  • Twitter (X): Follow our organization @SpiralPHP.
  • Discord: Join our community on Discord.

🫡 Contributors

Contributors Badge


🧱 Useful Resources


🤝 License

Licence