Opinionated configurable GitHub Actions Workflows
These are my personal opinionated configurable GitHub Actions Workflows, aimed at my personal needs to be the single
central point of all my GitHub Actions Workflows. Over the years most of my workflows started from one or two and
diverged in all directions, this repository is to reel that all back in one easy to maintain them for all my
repositories.
Opinionated choices
Runs On
Each workflow, well most of them, take two runs-on arguments runsOn and runsOnOrder. As the names suggest
runsOn runs as many jobs at the same time as possible where runsOnOrder runs them one by one. For most
jobs runsOn is fine, but for things like TerraForm apply, and Helm install where state somewhere is
changed and only one can run at the same time runsOnOrder is the way to go. Mainly came to this while working on
getting the workflows managing my home cluster to work as intended:
When not set they all default to ubuntu-latest which means it will run on GitHub provided Runners.
Makefile
All the quality control checks for the CI entry point are handled and controlled through Makefiles this gives each
project the control to check and assert everything relevant to it. When creating the task matrix the repositories the
Makefile is expected to have a task-list-ci command which will output a JSON array of tasks.
Sparse Checkout
Sparse checkout is used as much as possible to keep job run times as long as possible. Several of my projects have
1GB+ binary test data checked in, this takes some time to checkout, maybe even more so on Raspberry Pis. By
aggressively using the sparse-checkout checkout option actions/checkout
provides checkout times plummeted. For the biggest repo this went down to 4 seconds from 66 seconds without sparse
checkout. This resulted in a few inputs being such as ociSparseCheckout, helmSparseCheckout, and
terraformSparseCheckout. Each of those 3 is used with sparse-checkout-cone-mode: false meaning that you can use
patterns like the following in there:
sparseCheckout: |
!/*
/.terraform/*
/**/*.md
/composer.json
/composer.lockAlso since those are free form fields you're expected to put in workingDirectory and terraformDirectory your self.
For example in the case of TerraForm the full checkout step is:
- uses: actions/checkout@v4
with:
sparse-checkout-cone-mode: false
sparse-checkout: |
!${{ inputs.workingDirectory }}/*
/${{ inputs.workingDirectory }}${{ inputs.terraformDirectory }}*
${{ inputs.terraformSparseCheckout }}Versioning
Everything going through the package endpoints assumes Semantic Versioning, and has
automation to automatically decide what the appropriate version bump is. Projects use monotonically increasing release
version, r1, r2, r13, r66 etc etc.
OCI images
All images are pushing to GitHub's container registry at ghcr.io with the full repository name as image name taken
from ${{ github.repository }}. On each build image image tag will be sha-COMMIT_SHA where COMMIT_SHA is
taken from ${{ github.sha }}.
Release images are tagged with the passed milestone title as the image tag.
Entry points
There are to types of entry points supported. Package and project, the former is meant for
PHP packages/GitHub Actions/Anything-that-is-not-a-project while the latter is for websites/services.
Release Management
Each type has three entry points. The first being Release Management, which takes care of everything related to
releasing new versions and all the information and bits required for that. This includes:
- Required labels
- Package Manager/Helm/TerraForm Diff
- OCI image retaging
- Helm deploy to Kubernetes
- Setting a milestone on PR's
- Creating a GitHub release
- Generating a changelog
- Push static content to a CDN
It should be triggered for the following events:
- Closing of a milestone
- PR's for the follow types:
opened,labeled,unlabeled,synchronize,reopened,milestoned,demilestoned, andready_for_review.
CI
The other entry point is CI it does everything related to validating the current push of the code meets expectations
through a series of Makefile commands. When present CI will also build the OCI (Docker) image if
present. Any control over the different platforms the OCI image is released for is done here, the release management
doing any retagging will detect which platforms are in the image it retags and uses those without the need to
configure them.
Utils
The third entry point is Utils. It covers scheduled and event-driven maintenance that does not belong in CI or
Release Management. Packages use it for Private Packagist Conductor
on repository_dispatch with the dependency_update event type. Projects add GHCR image cleanup on push,
schedule, and workflow_dispatch in addition to Conductor when enabled.
What's included
And how to configure it.
CI
The CI entry point only takes two configuration inputs env and services, both take a JSON string as argument.
For example adding the Redis DSN to the environment is written as:
with:
env: "{\"REDIS_DSN\":\"redis://redis:6379/6\"}"While the service providing redis is written as:
with:
services: "{\"redis\":{\"image\":\"redis\",\"options\":\"--health-cmd \\"redis-cli ping\\" --health-interval 1s --health-timeout 5s --health-retries 50\"}}"Docker/OCI
The OCI image building and retagging responsibilities using Docker are split between the CI and Release Management
entry points. CI builds the images and decides what goes into them and for what platform, while Release Management
purely retags the images build by CI.
CI will only build images if you provide the Dockerfile you're using through the dockerfile input. Provide
dockerBuildTarget when using a multi-stage Docker file to build the desired target. Any additional arguments can be
passed to the Docker build command using dockerBuildExtraArguments.
By default the OCI build workflow will detect all the platforms the first upstream image found in FROM is build for
and build the image for the same platforms. If you want to override that pass an CSV of different platforms to the
ociPlatforms in put in this format: linux/amd64,linux/arm.
To speed up checking out during building ociSparseCheckout can be used to exclude any files we don't care about and
will slowdown our checkout. For example in one of my projects the tests/data/ directory contains 1GB+ binary data
for testing, I have zero need to check that out during image build. So my sparse checkout allows everything but any
file from tests/data/:
ociSparseCheckout: |
/*
!/tests/data/*To kick off retagging simple set ociRetag to true on the Release Management entry point.
Helm
When the helmDirectory is passed to the release management entry point isn't an empty string both the
Helm Diff and Helm Deploy workflows are executed against that directory.
As with any Helm chart being deployed we need to give it a name, the helmReleaseName is used to specify that.
By default a sparse checkout is performed and only the passed helmDirectory is checked out, if you need than
that you can use helmSparseCheckout with additional patterns to check out.
Helm chart repositories are detected automatically before diff and deploy. The helm-dependencies
workflow scans repository: entries in Chart.yaml, Chart.lock, and charts/*/Chart.yaml, then runs helm repo add for each
unique HTTPS repository before helm dependency build.
Repository detection runs on runsOnChaos. Helm diff, deploy, and dependency build run on runsOnOrder.
To set additional values or to overwrite existing values from values.yaml helmAdditionalArguments can be used to
pass any additional args to the diff and upgrade commands. For example to get dynamically generated values from
another job:
name: Release Management
on:
pull_request:
types:
- opened
- labeled
- unlabeled
- synchronize
- reopened
milestone:
types:
- closed
permissions:
contents: write
issues: write
pull-requests: write
packages: write
jobs:
helm-json:
name: Generate JSON for Helm
runs-on: chaos
outputs:
helm-json: ${{ steps.helm-json.outputs.helm-json }}
steps:
- run: printf "helm-json=%s" $(echo "{\"LOGLEVEL\":\"DEBUG\"}") >> $GITHUB_OUTPUT
release-management:
name: Release Management
needs:
- helm-json
secrets: inherit
uses: WyriHaximus/github-workflows/.github/workflows/project-release-management.yaml@main
with:
runsOnChaos: chaos
runsOnOrder: queue
type: kubernetes
milestone: ${{ github.event.milestone.title }}
description: ${{ github.event.milestone.description }}
kubeConfigSecret: HOME_KUBE_CONFIG
helmDirectory: deploy/helm/
helmReleaseName: my-app
helmReleaseValueName: image.tag
helmSparseCheckout: |
/deploy/helm/charts/*
helmAdditionalArguments: --set-json='application=${{ needs.helm-json.outputs.helm-json }}'
helmUpdateAppVersion: true
terraformDirectory: deploy/terraform/
terraformVars: |
kubernetes_config_path = "~/.kube/config"
kubernetes_context = "$HOME_KUBE_CONTEXT"
kubernetes_namespace = "$HOME_KUBE_NAMESPACE"
ociRetag: trueBecause these workflows provide diff comments on PR's for Helm and others we need to specify helmReleaseValueName so
we can assign the previous tag on diff and closed milestone on deploy to that value. We can't use helmAdditionalArguments for this as we
autodetect the previous tag. Similarly helmUpdateAppVersion is used to update the appVersion in Chart.yaml,
when set to true, with the same value in those two scenarios.
Linting
A few, maybe somewhat random, linters are included in the work flows. One of them checks if links in markdown
resources are responding with a ~200 status code and errors when they are no longer working.
Utils
Conductor
When disableConductor is false (the default), the Utils entry point runs Packagist Conductor
after Private Packagist dispatches a repository_dispatch event with the dependency_update type. The workflow
checks out composer.json and composer.lock, resolves the lowest supported PHP version from the lock file, and
runs Conductor in that environment.
The caller workflow needs contents: read when Conductor is enabled.
GHCR image cleanup
Project Utils can prune old container images from GHCR on push to configured branches, on a nightly schedule, and
on manual workflow_dispatch. Set disableGhcrCleanup: true to skip it. See the Projects Utils usage section below for tag
retention rules, PAT configuration, and inputs.
TerraForm
When the terraformDirectory is passed to the release management entry point isn't an empty string both the
TerraForm Diff and TerraForm Apply workflows are executed against that directory. The repository is expecting to have
the following secrets for TerraForm state storage on S3:
TERRAFORM_STATE_KEYTERRAFORM_STATE_SECRETTERRAFORM_STATE_BUCKETTERRAFORM_STATE_REGION
By default a sparse checkout is performed and only the passed terraformDirectory is checked out, if you need than
that you can use terraformSparseCheckout with additional patterns to check out. Further more terraformParallelism
and terraformLogLevel can be used to tune TerraForm's behavior.
In order to inject variables into TerraForm terraformVars is used to create terraform.tfvars in
the terraformDirectory. Variables can be hard coded but secrets are available as environment variables:
terraformVars: |
kubernetes_config_path = "~/.kube/config"
kubernetes_context = "$HOME_KUBE_CONTEXT"
kubernetes_namespace = "$HOME_KUBE_NAMESPACE"Usage
Workflow connection diagrams are generated automatically from reusable workflow uses: references when running make generate.
Packages
CI
name: Continuous Integration
on:
push:
branches:
- 'main'
- 'master'
- 'refs/heads/v[0-9]+.[0-9]+.[0-9]+'
- 'refs/heads/[0-9]+.[0-9]+.[0-9]+'
pull_request:
## This workflow needs the `pull-request` permissions to work for the package diffing
## Refs: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#permissions
permissions:
pull-requests: write
contents: read
jobs:
ci:
name: Continuous Integration
uses: WyriHaximus/github-workflows/.github/workflows/package.yaml@mainWorkflow connections
flowchart TB
package_ci["ci.yaml"] --> package_a0("WyriHaximus/github-action-composer-php-versions-in-range@v2.1.0")
package_ci["ci.yaml"] --> package_a1("actions/checkout@v7.0.1")
package_ci["ci.yaml"] --> package_a2("actions/github-script@v9.0.0")
package_ci["ci.yaml"] --> package_a3("ramsey/composer-install@4.0.0")
package_ci["ci.yaml"] --> package_a4("shivammathur/setup-php@2.37.2")
package_markdown_check_links["markdown-check-links.yaml"] --> package_a1("actions/checkout@v7.0.1")
package_markdown_check_links["markdown-check-links.yaml"] --> package_a5("umbrelladocs/action-linkspector@v1.5.5")
package_supported_threading_matrix["supported-threading-matrix.yaml"] --> package_a2("actions/github-script@v9.0.0")
package_ci["ci.yaml"] --> package_supported_threading_matrix["supported-threading-matrix.yaml"]
package_package["package.yaml"] --> package_ci["ci.yaml"]
package_package["package.yaml"] --> package_markdown_check_links["markdown-check-links.yaml"]
linkStyle 8,9,10 stroke:#22c55e,stroke-width:2px
linkStyle 0,1,2,3,4,5,6,7 stroke:#2563eb,stroke-width:2px
click package_a0 "https://github.com/WyriHaximus/github-action-composer-php-versions-in-range/releases/tag/v2.1.0" _blank
click package_a1 "https://github.com/actions/checkout/releases/tag/v7.0.1" _blank
click package_a2 "https://github.com/actions/github-script/releases/tag/v9.0.0" _blank
click package_a3 "https://github.com/ramsey/composer-install/releases/tag/4.0.0" _blank
click package_a4 "https://github.com/shivammathur/setup-php/releases/tag/2.37.2" _blank
click package_a5 "https://github.com/umbrelladocs/action-linkspector/releases/tag/v1.5.5" _blank
click package_ci "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/ci.yaml" _blank
click package_markdown_check_links "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/markdown-check-links.yaml" _blank
click package_package "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/package.yaml" _blank
click package_supported_threading_matrix "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/supported-threading-matrix.yaml" _blankInputs
| Input | Type | Description | Default |
|---|---|---|---|
| dependencyUpdaters | string | CSV list of bot AppId's that create PR's to updated dependencies like RenovateBot and DependaBot | 49699333 |
| directlyOnOsRunsOnMap | string | Map of supported-features keys to JSON arrays of runs-on labels for directly-on-os CI jobs | {"linux":["ubuntu-latest","ubuntu-24.04-arm"],"macos":["macos-latest"],"windows":["windows-latest","windows-11-arm"]} |
| env | string | Any additional environment variables | {} |
| jsonPattern | string | The pattern to match which JSON files to check | .json$ |
| markdownLinkCheckSparseCheckout | string | Additional files/patterns for the sparse checkout | |
| runsOnChaos | string | Define on which runner to run workflows where order doesn't matter should run | ubuntu-latest |
| runsOnOrder | string | Define on which runner to run workflows where order matters should run | ubuntu-latest |
| runsOnQASteps | string | Define on which runner to run workflows where QA ssteps should run | ubuntu-latest |
| services | string | Any additional services to use | {} |
| supportedChecksCommand | string | The make command to invoke listing the different tasks to run across all versions, will also act as a prefix for All, Direct on OS, Lowest, Locked, and Highest task lists. | task-list-ci |
| supportedFeaturesCommand | string | The make command to invoke listing the different tasks to run across all versions, will also act as a prefix for All, Direct on OS, Lowest, Locked, and Highest task lists. | supported-features |
| workingDirectory | string | The directory to run this workflow in |
Release Management
name: Release Management
on:
pull_request:
types:
- opened
- labeled
- unlabeled
- synchronize
- reopened
- milestoned
- demilestoned
- ready_for_review
milestone:
types:
- closed
permissions:
contents: write
issues: write
pull-requests: write
jobs:
release-management:
name: Create Release
uses: WyriHaximus/github-workflows/.github/workflows/package-release-management.yaml@main
with:
milestone: ${{ github.event.milestone.title }}
description: ${{ github.event.milestone.title }}Workflow connections
flowchart TB
package_release_management_composer_diff["composer-diff.yaml"] --> package_release_management_a0("WyriHaximus/github-action-composer.lock-diff@v2.3.0")
package_release_management_craft_release["craft-release.yaml"] --> package_release_management_a1("WyriHaximus/github-action-jwage-changelog-generator@v1.4.0")
package_release_management_craft_release["craft-release.yaml"] --> package_release_management_a2("actions/checkout@v7.0.1")
package_release_management_craft_release["craft-release.yaml"] --> package_release_management_a3("ad-m/github-push-action@v1.3.0")
package_release_management_craft_release["craft-release.yaml"] --> package_release_management_a4("dawidd6/action-delete-branch@v3.1.0")
package_release_management_craft_release["craft-release.yaml"] --> package_release_management_a5("haya14busa/action-update-semver@v1.5.1")
package_release_management_craft_release["craft-release.yaml"] --> package_release_management_a6("softprops/action-gh-release@v3.0.3")
package_release_management_helm_dependencies["helm-dependencies.yaml"] --> package_release_management_a2("actions/checkout@v7.0.1")
package_release_management_helm_diff["helm-diff.yaml"] --> package_release_management_a7("WyriHaximus/github-action-get-previous-tag@v2.0.0")
package_release_management_helm_diff["helm-diff.yaml"] --> package_release_management_a8("WyriHaximus/github-action-helm3@v4.0.2")
package_release_management_helm_diff["helm-diff.yaml"] --> package_release_management_a2("actions/checkout@v7.0.1")
package_release_management_helm_diff["helm-diff.yaml"] --> package_release_management_a9("marocchino/sticky-pull-request-comment@v3.0.5")
package_release_management_package_set_milestone_on_pr["package-set-milestone-on-pr.yaml"] --> package_release_management_a10("WyriHaximus/github-action-composer-php-versions-in-range@v2.1.0")
package_release_management_package_set_milestone_on_pr["package-set-milestone-on-pr.yaml"] --> package_release_management_a7("WyriHaximus/github-action-get-previous-tag@v2.0.0")
package_release_management_package_set_milestone_on_pr["package-set-milestone-on-pr.yaml"] --> package_release_management_a11("WyriHaximus/github-action-next-semvers@v1.2.1")
package_release_management_package_set_milestone_on_pr["package-set-milestone-on-pr.yaml"] --> package_release_management_a2("actions/checkout@v7.0.1")
package_release_management_package_set_milestone_on_pr["package-set-milestone-on-pr.yaml"] --> package_release_management_a12("dcarbone/install-jq-action@v4.0.1")
package_release_management_required_labels["required-labels.yaml"] --> package_release_management_a13("mheap/github-action-required-labels@v5.6.0")
package_release_management_set_milestone_on_pr["set-milestone-on-pr.yaml"] --> package_release_management_a14("WyriHaximus/github-action-create-milestone@v1.2.0")
package_release_management_set_milestone_on_pr["set-milestone-on-pr.yaml"] --> package_release_management_a12("dcarbone/install-jq-action@v4.0.1")
package_release_management_supported_threading_matrix["supported-threading-matrix.yaml"] --> package_release_management_a15("actions/github-script@v9.0.0")
package_release_management_terraform_diff["terraform-diff.yaml"] --> package_release_management_a2("actions/checkout@v7.0.1")
package_release_management_terraform_diff["terraform-diff.yaml"] --> package_release_management_a15("actions/github-script@v9.0.0")
package_release_management_terraform_diff["terraform-diff.yaml"] --> package_release_management_a9("marocchino/sticky-pull-request-comment@v3.0.5")
package_release_management_diff["diff.yaml"] --> package_release_management_composer_diff["composer-diff.yaml"]
package_release_management_diff["diff.yaml"] --> package_release_management_helm_diff["helm-diff.yaml"]
package_release_management_diff["diff.yaml"] --> package_release_management_terraform_diff["terraform-diff.yaml"]
package_release_management_helm_diff["helm-diff.yaml"] --> package_release_management_helm_dependencies["helm-dependencies.yaml"]
package_release_management_package_release_management["package-release-management.yaml"] --> package_release_management_craft_release["craft-release.yaml"]
package_release_management_package_release_management["package-release-management.yaml"] --> package_release_management_diff["diff.yaml"]
package_release_management_package_release_management["package-release-management.yaml"] --> package_release_management_package_set_milestone_on_pr["package-set-milestone-on-pr.yaml"]
package_release_management_package_release_management["package-release-management.yaml"] --> package_release_management_required_labels["required-labels.yaml"]
package_release_management_package_set_milestone_on_pr["package-set-milestone-on-pr.yaml"] --> package_release_management_set_milestone_on_pr["set-milestone-on-pr.yaml"]
package_release_management_package_set_milestone_on_pr["package-set-milestone-on-pr.yaml"] --> package_release_management_supported_threading_matrix["supported-threading-matrix.yaml"]
linkStyle 24,25,26,27,28,29,30,31,32,33 stroke:#22c55e,stroke-width:2px
linkStyle 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23 stroke:#2563eb,stroke-width:2px
click package_release_management_a0 "https://github.com/WyriHaximus/github-action-composer.lock-diff/releases/tag/v2.3.0" _blank
click package_release_management_a1 "https://github.com/WyriHaximus/github-action-jwage-changelog-generator/releases/tag/v1.4.0" _blank
click package_release_management_a10 "https://github.com/WyriHaximus/github-action-composer-php-versions-in-range/releases/tag/v2.1.0" _blank
click package_release_management_a11 "https://github.com/WyriHaximus/github-action-next-semvers/releases/tag/v1.2.1" _blank
click package_release_management_a12 "https://github.com/dcarbone/install-jq-action/releases/tag/v4.0.1" _blank
click package_release_management_a13 "https://github.com/mheap/github-action-required-labels/releases/tag/v5.6.0" _blank
click package_release_management_a14 "https://github.com/WyriHaximus/github-action-create-milestone/releases/tag/v1.2.0" _blank
click package_release_management_a15 "https://github.com/actions/github-script/releases/tag/v9.0.0" _blank
click package_release_management_a2 "https://github.com/actions/checkout/releases/tag/v7.0.1" _blank
click package_release_management_a3 "https://github.com/ad-m/github-push-action/releases/tag/v1.3.0" _blank
click package_release_management_a4 "https://github.com/dawidd6/action-delete-branch/releases/tag/v3.1.0" _blank
click package_release_management_a5 "https://github.com/haya14busa/action-update-semver/releases/tag/v1.5.1" _blank
click package_release_management_a6 "https://github.com/softprops/action-gh-release/releases/tag/v3.0.3" _blank
click package_release_management_a7 "https://github.com/WyriHaximus/github-action-get-previous-tag/releases/tag/v2.0.0" _blank
click package_release_management_a8 "https://github.com/WyriHaximus/github-action-helm3/releases/tag/v4.0.2" _blank
click package_release_management_a9 "https://github.com/marocchino/sticky-pull-request-comment/releases/tag/v3.0.5" _blank
click package_release_management_composer_diff "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/composer-diff.yaml" _blank
click package_release_management_craft_release "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/craft-release.yaml" _blank
click package_release_management_diff "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/diff.yaml" _blank
click package_release_management_helm_dependencies "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/helm-dependencies.yaml" _blank
click package_release_management_helm_diff "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/helm-diff.yaml" _blank
click package_release_management_package_release_management "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/package-release-management.yaml" _blank
click package_release_management_package_set_milestone_on_pr "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/package-set-milestone-on-pr.yaml" _blank
click package_release_management_required_labels "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/required-labels.yaml" _blank
click package_release_management_set_milestone_on_pr "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/set-milestone-on-pr.yaml" _blank
click package_release_management_supported_threading_matrix "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/supported-threading-matrix.yaml" _blank
click package_release_management_terraform_diff "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/terraform-diff.yaml" _blankInputs
| Input | Type | Description | Default |
|---|---|---|---|
| branch | string | The branch to tag the release on | |
| description | string | Additional information to add above the changelog in the release | |
| disableSetMilestone | boolean | Disable the setting of milestones | |
| initialTag | string | The tag to fallback to when no previous tag could be found. | 1.0.0 |
| labels | string | The labels to for the sections of the changelog | Bug 🐞,Configuration ⚙,Dependencies 📦,Deprecations 👋,Enhancement ✨,Feature 🏗,Security 🕵️♀️ |
| milestone | string | The milestone to tag | |
| preReleaseScript | string | Script that runs just before the release is created | |
| runsOnChaos | string | Define on which runner to run workflows where order doesn't matter should run | ubuntu-latest |
| runsOnOrder | string | Define on which runner to run workflows where order matters should run | ubuntu-latest |
Utils
Private Packagist Conductor on repository_dispatch with the dependency_update event type.
name: Utils
on:
repository_dispatch:
types:
- dependency_update
permissions:
contents: read
jobs:
utils:
uses: WyriHaximus/github-workflows/.github/workflows/package-utils.yaml@main
with:
runsOn: ubuntu-latestWorkflow connections
flowchart TB
package_utils_conductor["conductor.yaml"] --> package_utils_a0("WyriHaximus/github-action-composer-php-versions-in-range@v2.1.0")
package_utils_conductor["conductor.yaml"] --> package_utils_a1("actions/checkout@v7.0.1")
package_utils_conductor["conductor.yaml"] --> package_utils_a2("packagist/conductor-github-action@1.6.1")
package_utils_conductor["conductor.yaml"] --> package_utils_a3("shivammathur/setup-php@2.37.2")
package_utils_package_utils["package-utils.yaml"] --> package_utils_conductor["conductor.yaml"]
linkStyle 4 stroke:#22c55e,stroke-width:2px
linkStyle 0,1,2,3 stroke:#2563eb,stroke-width:2px
click package_utils_a0 "https://github.com/WyriHaximus/github-action-composer-php-versions-in-range/releases/tag/v2.1.0" _blank
click package_utils_a1 "https://github.com/actions/checkout/releases/tag/v7.0.1" _blank
click package_utils_a2 "https://github.com/packagist/conductor-github-action/releases/tag/1.6.1" _blank
click package_utils_a3 "https://github.com/shivammathur/setup-php/releases/tag/2.37.2" _blank
click package_utils_conductor "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/conductor.yaml" _blank
click package_utils_package_utils "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/package-utils.yaml" _blankInputs
| Input | Type | Description | Default |
|---|---|---|---|
| disableConductor | boolean | Disable the execution of Conductor on repository_dispatch with dependency_update as event type |
|
| runsOn | string | Define on which runner to run workflows where order doesn't matter should run | ubuntu-latest |
| workingDirectory | string | The directory to run this workflow in |
Projects
CI
name: Continuous Integration
on:
push:
branches:
- 'main'
- 'master'
- 'refs/heads/r[0-9]+'
pull_request:
## This workflow needs the `pull-request` permissions to work for the package diffing
## Refs: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#permissions
permissions:
pull-requests: write
contents: read
packages: write
jobs:
ci:
name: Continuous Integration
uses: WyriHaximus/github-workflows/.github/workflows/project.yaml@main
secrets: inherit
with:
runsOnChaos: chaos
runsOnOrder: queueWorkflow connections
flowchart TB
project_ci["ci.yaml"] --> project_a0("WyriHaximus/github-action-composer-php-versions-in-range@v2.1.0")
project_ci["ci.yaml"] --> project_a1("actions/checkout@v7.0.1")
project_ci["ci.yaml"] --> project_a2("actions/github-script@v9.0.0")
project_ci["ci.yaml"] --> project_a3("ramsey/composer-install@4.0.0")
project_ci["ci.yaml"] --> project_a4("shivammathur/setup-php@2.37.2")
project_markdown_check_links["markdown-check-links.yaml"] --> project_a1("actions/checkout@v7.0.1")
project_markdown_check_links["markdown-check-links.yaml"] --> project_a5("umbrelladocs/action-linkspector@v1.5.5")
project_oci_build_single["oci-build-single.yaml"] --> project_a1("actions/checkout@v7.0.1")
project_oci_build_single["oci-build-single.yaml"] --> project_a6("docker/login-action@v4.6.0")
project_oci_build_single["oci-build-single.yaml"] --> project_a7("docker/setup-buildx-action@v4.3.0")
project_oci_build_single["oci-build-single.yaml"] --> project_a8("docker/setup-qemu-action@v4.2.0")
project_oci_build_single["oci-build-single.yaml"] --> project_a9("wyrihaximus/github-action-oci-image-supported-platforms@v1.0.0")
project_oci_build_spread["oci-build-spread.yaml"] --> project_a1("actions/checkout@v7.0.1")
project_oci_build_spread["oci-build-spread.yaml"] --> project_a10("actions/download-artifact@v8.0.1")
project_oci_build_spread["oci-build-spread.yaml"] --> project_a11("actions/upload-artifact@v7.0.1")
project_oci_build_spread["oci-build-spread.yaml"] --> project_a6("docker/login-action@v4.6.0")
project_oci_build_spread["oci-build-spread.yaml"] --> project_a7("docker/setup-buildx-action@v4.3.0")
project_oci_build_spread["oci-build-spread.yaml"] --> project_a8("docker/setup-qemu-action@v4.2.0")
project_oci_build_spread["oci-build-spread.yaml"] --> project_a9("wyrihaximus/github-action-oci-image-supported-platforms@v1.0.0")
project_supported_threading_matrix["supported-threading-matrix.yaml"] --> project_a2("actions/github-script@v9.0.0")
project_ci["ci.yaml"] --> project_supported_threading_matrix["supported-threading-matrix.yaml"]
project_project["project.yaml"] --> project_ci["ci.yaml"]
project_project["project.yaml"] --> project_markdown_check_links["markdown-check-links.yaml"]
project_project["project.yaml"] --> project_oci_build_single["oci-build-single.yaml"]
project_project["project.yaml"] --> project_oci_build_spread["oci-build-spread.yaml"]
linkStyle 20,21,22,23,24 stroke:#22c55e,stroke-width:2px
linkStyle 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 stroke:#2563eb,stroke-width:2px
click project_a0 "https://github.com/WyriHaximus/github-action-composer-php-versions-in-range/releases/tag/v2.1.0" _blank
click project_a1 "https://github.com/actions/checkout/releases/tag/v7.0.1" _blank
click project_a10 "https://github.com/actions/download-artifact/releases/tag/v8.0.1" _blank
click project_a11 "https://github.com/actions/upload-artifact/releases/tag/v7.0.1" _blank
click project_a2 "https://github.com/actions/github-script/releases/tag/v9.0.0" _blank
click project_a3 "https://github.com/ramsey/composer-install/releases/tag/4.0.0" _blank
click project_a4 "https://github.com/shivammathur/setup-php/releases/tag/2.37.2" _blank
click project_a5 "https://github.com/umbrelladocs/action-linkspector/releases/tag/v1.5.5" _blank
click project_a6 "https://github.com/docker/login-action/releases/tag/v4.6.0" _blank
click project_a7 "https://github.com/docker/setup-buildx-action/releases/tag/v4.3.0" _blank
click project_a8 "https://github.com/docker/setup-qemu-action/releases/tag/v4.2.0" _blank
click project_a9 "https://github.com/wyrihaximus/github-action-oci-image-supported-platforms/releases/tag/v1.0.0" _blank
click project_ci "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/ci.yaml" _blank
click project_markdown_check_links "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/markdown-check-links.yaml" _blank
click project_oci_build_single "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/oci-build-single.yaml" _blank
click project_oci_build_spread "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/oci-build-spread.yaml" _blank
click project_project "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/project.yaml" _blank
click project_supported_threading_matrix "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/supported-threading-matrix.yaml" _blankInputs
| Input | Type | Description | Default |
|---|---|---|---|
| artifactRetentionDays | number | Number of days to retain uploaded artifacts | 1 |
| dependencyUpdaters | string | CSV list of bot AppId's that create PR's to updated dependencies like RenovateBot and DependaBot | 49699333 |
| disableComposerLockDiff | boolean | Disable the diffing of composer lock files | |
| disableMarkdownLinkCheck | boolean | Disable the checking of links in markdown files | |
| disableRequiredLabels | boolean | Disable failing PR's when certain labels are missing | |
| dockerBuildExtraArguments | string | Extra arguments to pass to the docker build command | |
| dockerBuildTarget | string | Value for the --target flag | |
| dockerfile | string | The Dockerfile to build | |
| env | string | Any additional environment variables | {} |
| jsonPattern | string | The pattern to match which JSON files to check | .json$ |
| markdownLinkCheckSparseCheckout | string | Additional files/patterns for the sparse checkout | |
| ociPlatformRunnerSuffixMap | string | Map that maps the platform to the runner suffix | {"linux/arm64": "-arm64", "linux/amd64": "-amd64"} |
| ociPlatforms | string | The platforms to build the OCI image for, empty means autodetect | |
| ociPushSecretSecret | string | The secret name that holds the token to push OCI images to GHCR.io | GITHUB_TOKEN |
| ociRegistry | string | The secret name that holds the token to push OCI images to GHCR.io | ghcr.io |
| ociSparseCheckout | string | Sparse checkout patterns in cone mode | |
| ociSpreadBuild | string | Spread the build OCI images over different runners | |
| runsOnChaos | string | Define on which runner to run workflows where order doesn't matter should run | ubuntu-latest |
| runsOnOrder | string | Define on which runner to run workflows where order matters should run | ubuntu-latest |
| services | string | Any additional services to use | {} |
| workingDirectory | string | The directory to run this workflow in |
Release Management
name: Release Management
on:
pull_request:
types:
- opened
- labeled
- unlabeled
- synchronize
- reopened
milestone:
types:
- closed
permissions:
contents: write
issues: write
pull-requests: write
packages: write
jobs:
release-management:
name: Release Management
secrets: inherit
uses: WyriHaximus/github-workflows/.github/workflows/project-release-management.yaml@main
with:
milestone: ${{ github.event.milestone.title }}
description: ${{ github.event.milestone.description }}
runsOnChaos: chaos
runsOnOrder: queueWorkflow connections
flowchart TB
project_release_management_composer_diff["composer-diff.yaml"] --> project_release_management_a0("WyriHaximus/github-action-composer.lock-diff@v2.3.0")
project_release_management_craft_release["craft-release.yaml"] --> project_release_management_a1("WyriHaximus/github-action-jwage-changelog-generator@v1.4.0")
project_release_management_craft_release["craft-release.yaml"] --> project_release_management_a2("actions/checkout@v7.0.1")
project_release_management_craft_release["craft-release.yaml"] --> project_release_management_a3("ad-m/github-push-action@v1.3.0")
project_release_management_craft_release["craft-release.yaml"] --> project_release_management_a4("dawidd6/action-delete-branch@v3.1.0")
project_release_management_craft_release["craft-release.yaml"] --> project_release_management_a5("haya14busa/action-update-semver@v1.5.1")
project_release_management_craft_release["craft-release.yaml"] --> project_release_management_a6("softprops/action-gh-release@v3.0.3")
project_release_management_helm_dependencies["helm-dependencies.yaml"] --> project_release_management_a2("actions/checkout@v7.0.1")
project_release_management_helm_deploy["helm-deploy.yaml"] --> project_release_management_a7("WyriHaximus/github-action-helm3@v4.0.2")
project_release_management_helm_deploy["helm-deploy.yaml"] --> project_release_management_a2("actions/checkout@v7.0.1")
project_release_management_helm_diff["helm-diff.yaml"] --> project_release_management_a8("WyriHaximus/github-action-get-previous-tag@v2.0.0")
project_release_management_helm_diff["helm-diff.yaml"] --> project_release_management_a7("WyriHaximus/github-action-helm3@v4.0.2")
project_release_management_helm_diff["helm-diff.yaml"] --> project_release_management_a2("actions/checkout@v7.0.1")
project_release_management_helm_diff["helm-diff.yaml"] --> project_release_management_a9("marocchino/sticky-pull-request-comment@v3.0.5")
project_release_management_oci_retag["oci-retag.yaml"] --> project_release_management_a10("docker/login-action@v4.6.0")
project_release_management_oci_retag["oci-retag.yaml"] --> project_release_management_a11("docker/setup-buildx-action@v4.3.0")
project_release_management_oci_retag["oci-retag.yaml"] --> project_release_management_a12("docker/setup-qemu-action@v4.2.0")
project_release_management_oci_retag["oci-retag.yaml"] --> project_release_management_a13("int128/wait-for-docker-image-action@v1.28.0")
project_release_management_oci_retag["oci-retag.yaml"] --> project_release_management_a14("nick-invision/retry@v4.0.0")
project_release_management_oci_retag["oci-retag.yaml"] --> project_release_management_a15("wyrihaximus/github-action-oci-image-supported-platforms@v1.0.0")
project_release_management_project_craft_release_cdn_build_commands["project-craft-release-cdn-build-commands.yaml"] --> project_release_management_a2("actions/checkout@v7.0.1")
project_release_management_project_craft_release_cdn_build_commands["project-craft-release-cdn-build-commands.yaml"] --> project_release_management_a16("actions/upload-artifact@v7.0.1")
project_release_management_project_craft_release_serverless["project-craft-release-serverless.yaml"] --> project_release_management_a17("WyriHaximus/github-action-composer-php-versions-in-range@v2.1.0")
project_release_management_project_craft_release_serverless["project-craft-release-serverless.yaml"] --> project_release_management_a2("actions/checkout@v7.0.1")
project_release_management_project_craft_release_serverless["project-craft-release-serverless.yaml"] --> project_release_management_a18("ramsey/composer-install@4.0.0")
project_release_management_project_craft_release_static["project-craft-release-static.yaml"] --> project_release_management_a2("actions/checkout@v7.0.1")
project_release_management_project_craft_release_static["project-craft-release-static.yaml"] --> project_release_management_a16("actions/upload-artifact@v7.0.1")
project_release_management_project_set_milestone_on_pr["project-set-milestone-on-pr.yaml"] --> project_release_management_a8("WyriHaximus/github-action-get-previous-tag@v2.0.0")
project_release_management_project_set_milestone_on_pr["project-set-milestone-on-pr.yaml"] --> project_release_management_a19("WyriHaximus/github-action-next-release-version@v1.1.0")
project_release_management_project_set_milestone_on_pr["project-set-milestone-on-pr.yaml"] --> project_release_management_a2("actions/checkout@v7.0.1")
project_release_management_required_labels["required-labels.yaml"] --> project_release_management_a20("mheap/github-action-required-labels@v5.6.0")
project_release_management_s3_upload["s3-upload.yaml"] --> project_release_management_a21("actions/download-artifact@v8.0.1")
project_release_management_s3_upload["s3-upload.yaml"] --> project_release_management_a22("aws-actions/configure-aws-credentials@v6.2.3")
project_release_management_set_milestone_on_pr["set-milestone-on-pr.yaml"] --> project_release_management_a23("WyriHaximus/github-action-create-milestone@v1.2.0")
project_release_management_set_milestone_on_pr["set-milestone-on-pr.yaml"] --> project_release_management_a24("dcarbone/install-jq-action@v4.0.1")
project_release_management_terraform_apply["terraform-apply.yaml"] --> project_release_management_a2("actions/checkout@v7.0.1")
project_release_management_terraform_diff["terraform-diff.yaml"] --> project_release_management_a2("actions/checkout@v7.0.1")
project_release_management_terraform_diff["terraform-diff.yaml"] --> project_release_management_a25("actions/github-script@v9.0.0")
project_release_management_terraform_diff["terraform-diff.yaml"] --> project_release_management_a9("marocchino/sticky-pull-request-comment@v3.0.5")
project_release_management_diff["diff.yaml"] --> project_release_management_composer_diff["composer-diff.yaml"]
project_release_management_diff["diff.yaml"] --> project_release_management_helm_diff["helm-diff.yaml"]
project_release_management_diff["diff.yaml"] --> project_release_management_terraform_diff["terraform-diff.yaml"]
project_release_management_helm_deploy["helm-deploy.yaml"] --> project_release_management_helm_dependencies["helm-dependencies.yaml"]
project_release_management_helm_diff["helm-diff.yaml"] --> project_release_management_helm_dependencies["helm-dependencies.yaml"]
project_release_management_project_craft_release_cdn_build_vitepress["project-craft-release-cdn-build-vitepress.yaml"] --> project_release_management_project_craft_release_cdn_build_commands["project-craft-release-cdn-build-commands.yaml"]
project_release_management_project_craft_release_cdn_build["project-craft-release-cdn-build.yaml"] --> project_release_management_project_craft_release_cdn_build_commands["project-craft-release-cdn-build-commands.yaml"]
project_release_management_project_craft_release_cdn_build["project-craft-release-cdn-build.yaml"] --> project_release_management_project_craft_release_cdn_build_vitepress["project-craft-release-cdn-build-vitepress.yaml"]
project_release_management_project_craft_release_cdn["project-craft-release-cdn.yaml"] --> project_release_management_project_craft_release_cdn_build["project-craft-release-cdn-build.yaml"]
project_release_management_project_craft_release_cdn["project-craft-release-cdn.yaml"] --> project_release_management_s3_upload["s3-upload.yaml"]
project_release_management_project_craft_release_kubernetes["project-craft-release-kubernetes.yaml"] --> project_release_management_helm_deploy["helm-deploy.yaml"]
project_release_management_project_craft_release_kubernetes["project-craft-release-kubernetes.yaml"] --> project_release_management_oci_retag["oci-retag.yaml"]
project_release_management_project_craft_release_kubernetes["project-craft-release-kubernetes.yaml"] --> project_release_management_terraform_apply["terraform-apply.yaml"]
project_release_management_project_craft_release_static["project-craft-release-static.yaml"] --> project_release_management_s3_upload["s3-upload.yaml"]
project_release_management_project_release_management["project-release-management.yaml"] --> project_release_management_craft_release["craft-release.yaml"]
project_release_management_project_release_management["project-release-management.yaml"] --> project_release_management_diff["diff.yaml"]
project_release_management_project_release_management["project-release-management.yaml"] --> project_release_management_project_craft_release_cdn["project-craft-release-cdn.yaml"]
project_release_management_project_release_management["project-release-management.yaml"] --> project_release_management_project_craft_release_kubernetes["project-craft-release-kubernetes.yaml"]
project_release_management_project_release_management["project-release-management.yaml"] --> project_release_management_project_craft_release_serverless["project-craft-release-serverless.yaml"]
project_release_management_project_release_management["project-release-management.yaml"] --> project_release_management_project_craft_release_static["project-craft-release-static.yaml"]
project_release_management_project_release_management["project-release-management.yaml"] --> project_release_management_project_set_milestone_on_pr["project-set-milestone-on-pr.yaml"]
project_release_management_project_release_management["project-release-management.yaml"] --> project_release_management_required_labels["required-labels.yaml"]
project_release_management_project_set_milestone_on_pr["project-set-milestone-on-pr.yaml"] --> project_release_management_set_milestone_on_pr["set-milestone-on-pr.yaml"]
linkStyle 39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61 stroke:#22c55e,stroke-width:2px
linkStyle 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38 stroke:#2563eb,stroke-width:2px
click project_release_management_a0 "https://github.com/WyriHaximus/github-action-composer.lock-diff/releases/tag/v2.3.0" _blank
click project_release_management_a1 "https://github.com/WyriHaximus/github-action-jwage-changelog-generator/releases/tag/v1.4.0" _blank
click project_release_management_a10 "https://github.com/docker/login-action/releases/tag/v4.6.0" _blank
click project_release_management_a11 "https://github.com/docker/setup-buildx-action/releases/tag/v4.3.0" _blank
click project_release_management_a12 "https://github.com/docker/setup-qemu-action/releases/tag/v4.2.0" _blank
click project_release_management_a13 "https://github.com/int128/wait-for-docker-image-action/releases/tag/v1.28.0" _blank
click project_release_management_a14 "https://github.com/nick-invision/retry/releases/tag/v4.0.0" _blank
click project_release_management_a15 "https://github.com/wyrihaximus/github-action-oci-image-supported-platforms/releases/tag/v1.0.0" _blank
click project_release_management_a16 "https://github.com/actions/upload-artifact/releases/tag/v7.0.1" _blank
click project_release_management_a17 "https://github.com/WyriHaximus/github-action-composer-php-versions-in-range/releases/tag/v2.1.0" _blank
click project_release_management_a18 "https://github.com/ramsey/composer-install/releases/tag/4.0.0" _blank
click project_release_management_a19 "https://github.com/WyriHaximus/github-action-next-release-version/releases/tag/v1.1.0" _blank
click project_release_management_a2 "https://github.com/actions/checkout/releases/tag/v7.0.1" _blank
click project_release_management_a20 "https://github.com/mheap/github-action-required-labels/releases/tag/v5.6.0" _blank
click project_release_management_a21 "https://github.com/actions/download-artifact/releases/tag/v8.0.1" _blank
click project_release_management_a22 "https://github.com/aws-actions/configure-aws-credentials/releases/tag/v6.2.3" _blank
click project_release_management_a23 "https://github.com/WyriHaximus/github-action-create-milestone/releases/tag/v1.2.0" _blank
click project_release_management_a24 "https://github.com/dcarbone/install-jq-action/releases/tag/v4.0.1" _blank
click project_release_management_a25 "https://github.com/actions/github-script/releases/tag/v9.0.0" _blank
click project_release_management_a3 "https://github.com/ad-m/github-push-action/releases/tag/v1.3.0" _blank
click project_release_management_a4 "https://github.com/dawidd6/action-delete-branch/releases/tag/v3.1.0" _blank
click project_release_management_a5 "https://github.com/haya14busa/action-update-semver/releases/tag/v1.5.1" _blank
click project_release_management_a6 "https://github.com/softprops/action-gh-release/releases/tag/v3.0.3" _blank
click project_release_management_a7 "https://github.com/WyriHaximus/github-action-helm3/releases/tag/v4.0.2" _blank
click project_release_management_a8 "https://github.com/WyriHaximus/github-action-get-previous-tag/releases/tag/v2.0.0" _blank
click project_release_management_a9 "https://github.com/marocchino/sticky-pull-request-comment/releases/tag/v3.0.5" _blank
click project_release_management_composer_diff "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/composer-diff.yaml" _blank
click project_release_management_craft_release "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/craft-release.yaml" _blank
click project_release_management_diff "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/diff.yaml" _blank
click project_release_management_helm_dependencies "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/helm-dependencies.yaml" _blank
click project_release_management_helm_deploy "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/helm-deploy.yaml" _blank
click project_release_management_helm_diff "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/helm-diff.yaml" _blank
click project_release_management_oci_retag "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/oci-retag.yaml" _blank
click project_release_management_project_craft_release_cdn "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/project-craft-release-cdn.yaml" _blank
click project_release_management_project_craft_release_cdn_build "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/project-craft-release-cdn-build.yaml" _blank
click project_release_management_project_craft_release_cdn_build_commands "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/project-craft-release-cdn-build-commands.yaml" _blank
click project_release_management_project_craft_release_cdn_build_vitepress "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/project-craft-release-cdn-build-vitepress.yaml" _blank
click project_release_management_project_craft_release_kubernetes "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/project-craft-release-kubernetes.yaml" _blank
click project_release_management_project_craft_release_serverless "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/project-craft-release-serverless.yaml" _blank
click project_release_management_project_craft_release_static "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/project-craft-release-static.yaml" _blank
click project_release_management_project_release_management "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/project-release-management.yaml" _blank
click project_release_management_project_set_milestone_on_pr "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/project-set-milestone-on-pr.yaml" _blank
click project_release_management_required_labels "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/required-labels.yaml" _blank
click project_release_management_s3_upload "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/s3-upload.yaml" _blank
click project_release_management_set_milestone_on_pr "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/set-milestone-on-pr.yaml" _blank
click project_release_management_terraform_apply "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/terraform-apply.yaml" _blank
click project_release_management_terraform_diff "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/terraform-diff.yaml" _blankInputs
| Input | Type | Description | Default |
|---|---|---|---|
| applicationType | string | The type of project this is, release and deployment wise | |
| artifactRetentionDays | number | Number of days to retain uploaded artifacts | 1 |
| awsAccessKeyIDSecret | string | The secret name that holds the AWS access key ID | CDN_HOSTED_S3_KEY |
| awsEndpointUrlSecret | string | The secret name that holds the AWS endpoint URL | CDN_HOSTED_S3_ENDPOINT |
| awsRegionSecret | string | The secret name that holds the AWS region | CDN_HOSTED_S3_REGION |
| awsSecretAccessKeySecret | string | The secret name that holds the AWS access key secret | CDN_HOSTED_S3_SECRET |
| branch | string | The branch to tag the release on | |
| cdnAwsCloudFrontDistributionIDSecret | string | The secret name that holds the AWS cloudfront distribution id | CDN_HOSTED_DISTRIBUTION_ID |
| cdnAwsS3BucketSecret | string | The secret name that holds the AWS S3 bucket name | CDN_HOSTED_S3_BUCKET |
| commands | string | The commands to execute | |
| commandsOutputPath | string | Where to get to resulting files from the commands | |
| description | string | Additional information to add above the changelog in the release | |
| disableComposerLockDiff | boolean | Disable the diffing of composer lock files | |
| disableSetMilestone | boolean | Disable the setting of milestones | |
| helmAdditionalArguments | string | The directory to run this workflow in | |
| helmDirectory | string | The directory to run this workflow in | |
| helmReleaseName | string | The name of the helm release | |
| helmReleaseValueName | string | The name of the value to use for releases | |
| helmSparseCheckout | string | Additional files/patterns for the sparse checkout | |
| helmUpdateAppVersion | boolean | Update the helm charts appVersion with the passed version | |
| initialTag | string | The tag to fallback to when no previous tag could be found. | r1 |
| kubeConfigSecret | string | The secret name that holds the kubeconfig to connect with Kubernetes | |
| labels | string | The labels to for the sections of the changelog | Bug 🐞,Configuration ⚙,Dependencies 📦,Deprecations 👋,Enhancement ✨,Feature 🏗,Security 🕵️♀️ |
| milestone | string | The milestone to tag | |
| mustCreateCommit | boolean | Create commit with release message as commit body | |
| ociPushSecretSecret | string | The secret name that holds the token to push OCI images to GHCR.io | GITHUB_TOKEN |
| ociRetag | boolean | Whether or not to retag OCI images with the release tag | |
| preReleaseScript | string | Script that runs just before the release is created | |
| runsOnChaos | string | Define on which runner to run workflows where order doesn't matter should run | ubuntu-latest |
| runsOnOrder | string | Define on which runner to run workflows where order matters should run | ubuntu-latest |
| serverlessSparseCheckout | string | Additional files/patterns for the sparse checkout | |
| staticFilesPath | string | The path to the static files to be synced to S3 | public |
| terraformDirectory | string | The directory to run this workflow in | |
| terraformLogLevel | string | Value for the TF_LOG environment value | |
| terraformParallelism | number | Value for the -parallelism plan/apply flag | 13 |
| terraformSparseCheckout | string | Additional files/patterns for the sparse checkout | |
| terraformVars | string | The directory to run this workflow in | |
| type | string | The type of project this is, release and deployment wise | kubernetes |
| vitePressDirectory | string | The directory that container VitePress | |
| workingDirectory | string | The directory to run this workflow in |
Utils
Scheduled, push, and manual utilities such as GHCR image cleanup.
name: Utils
on:
push:
branches:
- main
- master
- 'refs/heads/r[0-9]+'
workflow_dispatch:
schedule:
- cron: "13 0 * * *"
permissions:
packages: write
jobs:
utils:
secrets: inherit
uses: WyriHaximus/github-workflows/.github/workflows/project-utils.yaml@main
with:
runsOn: ubuntu-latest
disableConductor: true
ghcrCleanupKeepNTagged: 133
ghcrCleanupTokenSecret: CR_PATWorkflow connections
flowchart TB
project_utils_conductor["conductor.yaml"] --> project_utils_a0("WyriHaximus/github-action-composer-php-versions-in-range@v2.1.0")
project_utils_conductor["conductor.yaml"] --> project_utils_a1("actions/checkout@v7.0.1")
project_utils_conductor["conductor.yaml"] --> project_utils_a2("packagist/conductor-github-action@1.6.1")
project_utils_conductor["conductor.yaml"] --> project_utils_a3("shivammathur/setup-php@2.37.2")
project_utils_project_utils["project-utils.yaml"] --> project_utils_conductor["conductor.yaml"]
project_utils_project_utils["project-utils.yaml"] --> project_utils_ghcr_cleanup["ghcr-cleanup.yaml"]
linkStyle 4,5 stroke:#22c55e,stroke-width:2px
linkStyle 0,1,2,3 stroke:#2563eb,stroke-width:2px
click project_utils_a0 "https://github.com/WyriHaximus/github-action-composer-php-versions-in-range/releases/tag/v2.1.0" _blank
click project_utils_a1 "https://github.com/actions/checkout/releases/tag/v7.0.1" _blank
click project_utils_a2 "https://github.com/packagist/conductor-github-action/releases/tag/1.6.1" _blank
click project_utils_a3 "https://github.com/shivammathur/setup-php/releases/tag/2.37.2" _blank
click project_utils_conductor "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/conductor.yaml" _blank
click project_utils_ghcr_cleanup "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/ghcr-cleanup.yaml" _blank
click project_utils_project_utils "https://github.com/WyriHaximus/github-workflows/blob/main/.github/workflows/project-utils.yaml" _blankGHCR cleanup runs on every push to the configured branches (alongside CI), on the nightly schedule,
and on manual dispatch. It prunes older package versions and keeps the newest sha-* tags, so it
is safe to run in parallel with image builds.
When Conductor is enabled on repository_dispatch, the caller workflow needs contents: read
in addition to any other permissions.
GHCR cleanup tag pattern rules:
| Tag pattern | Example | Cleanup rule |
|---|---|---|
sha-* |
sha-abc1234 |
Keep 133 most recent; prune older |
r* |
r1, r42 |
Never deleted |
v* |
v1, v2.0.0 |
Never deleted |
*.*.* |
1.2.3, 4.5.6abc, 7.8.9-abc.apha-13-betazoid |
Never deleted |
| (untagged) | — | Delete all |
The default exclude regex is ^(r[0-9]+|v[0-9]+(\.[0-9]+)*|[0-9]+\.[0-9]+\.[0-9]+.*)$. Override
ghcrCleanupExcludeTagPattern, ghcrCleanupKeepNTagged, or set ghcrCleanupDisableTaggedCleanup: true
for untagged-only cleanup. Set ghcrCleanupPackageName when the GHCR package name differs from the
repository name. Each cleanup phase deletes up to 100 package versions per run via the GitHub Packages
REST API (curl), using the org or user endpoint as appropriate. Self-hosted runners do not need the
GitHub CLI installed.
The repository running the workflow must have Admin access to the GHCR package under Package
settings → Manage Actions access, unless cleanup uses the same PAT as image pushes. When CI pushes
images with a PAT via ociPushSecretSecret (for example CR_PAT), set ghcrCleanupTokenSecret to
the same secret name in the utils workflow. Packages first pushed outside Actions may need Manage
Actions access configured manually. When the package does not exist or is not accessible, cleanup is
skipped with a notice instead of failing the workflow.
Inputs
| Input | Type | Description | Default |
|---|---|---|---|
| disableConductor | boolean | Disable the execution of Conductor on repository_dispatch with dependency_update as event type |
|
| disableGhcrCleanup | boolean | Disable GHCR image cleanup on push, schedule, and workflow_dispatch |
|
| ghcrCleanupDisableTaggedCleanup | boolean | Skip tagged version cleanup; untagged-only mode | |
| ghcrCleanupExcludeTagPattern | string | Regex for tagged versions to never delete (r*, v*, and semver ..* patterns) | ^(r[0-9]+ |
| ghcrCleanupKeepNTagged | number | Keep N newest tagged versions outside the exclude pattern (133 newest sha-* tags by default) | 133 |
| ghcrCleanupMaxBatches | number | Deprecated; ignored. Kept for backward compatibility with consumers that still pass this input | 1 |
| ghcrCleanupMinUntaggedVersionsToKeep | number | Number of untagged package versions to retain | 0 |
| ghcrCleanupOwner | string | GHCR package owner; defaults to the lowercased repository owner when empty | |
| ghcrCleanupPackageName | string | GHCR package name; defaults to the lowercased repository name when empty | |
| ghcrCleanupTokenSecret | string | Secret name holding a token with packages read and delete scopes; use the same secret as ociPushSecretSecret when images are pushed with a PAT | GITHUB_TOKEN |
| runsOn | string | Define on which runner to run workflows where order doesn't matter should run | ubuntu-latest |
| workingDirectory | string | The directory to run this workflow in |
v1.0.0
- Total issues resolved: 0
- Total pull requests resolved: 187
- Total contributors: 3
Bug 🐞
Dependencies 📦
- 284: Update softprops/action-gh-release action to v3.0.3 thanks to @renovate-runner[bot]
- 273: Pin dependencies thanks to @renovate-runner[bot]
- 272: Update int128/wait-for-docker-image-action action to v1.28.0 thanks to @renovate-runner[bot]
- 271: Update docker/setup-buildx-action action to v4.3.0 thanks to @renovate-runner[bot]
- 266: Update dependency symfony/yaml to v8.1.5 thanks to @renovate-runner[bot]
- 265: Update docker/login-action action to v4.6.0 thanks to @renovate-runner[bot]
- 264: Update umbrelladocs/action-linkspector action to v1.5.5 thanks to @renovate-runner[bot]
- 259: Update aws-actions/configure-aws-credentials action to v6.2.3 thanks to @renovate-runner[bot]
- 258: Update actions/checkout action to v7.0.1 thanks to @renovate-runner[bot]
- 255: Update int128/wait-for-docker-image-action action to v1.26.0 thanks to @renovate-runner[bot]
- 253: Update aws-actions/configure-aws-credentials action to v6.2.2 thanks to @renovate-runner[bot]
- 252: Update mheap/github-action-required-labels action to v5.6.0 thanks to @renovate-runner[bot]
- 251: Update marocchino/sticky-pull-request-comment action to v3.0.5 thanks to @renovate-runner[bot]
- 249: Update docker/login-action action to v4.4.0 thanks to @renovate-runner[bot]
- 248: Update docker/setup-buildx-action action to v4.2.0 thanks to @renovate-runner[bot]
- 246: Update docker/setup-qemu-action action to v4.2.0 thanks to @renovate-runner[bot]
- 245: Update int128/wait-for-docker-image-action action to v1.25.0 thanks to @renovate-runner[bot]
- 244: Update dependency symfony/yaml to v8.1.1 thanks to @renovate-runner[bot]
- 243: Update aws-actions/configure-aws-credentials action to v6.2.1 thanks to @renovate-runner[bot]
- 242: Update dcarbone/install-jq-action action to v4 thanks to @renovate-runner[bot]
- 239: Update int128/wait-for-docker-image-action action to v1.24.0 thanks to @renovate-runner[bot]
- 238: Update softprops/action-gh-release action to v3.0.1 thanks to @renovate-runner[bot]
- 237: Update actions/checkout action to v7 thanks to @renovate-runner[bot]
- 236: Update umbrelladocs/action-linkspector action to v1.5.4 thanks to @renovate-runner[bot]
- 233: Update shivammathur/setup-php action to v2.37.2 thanks to @renovate-runner[bot]
- 232: Update int128/wait-for-docker-image-action action to v1.23.0 thanks to @renovate-runner[bot]
- 231: Update actions/checkout action to v6.0.3 thanks to @renovate-runner[bot]
- 230: Update packagist/conductor-github-action action to v1.6.1 thanks to @renovate-runner[bot]
- 229: Update aws-actions/configure-aws-credentials action to v6.2.0 thanks to @renovate-runner[bot]
- 228: Update umbrelladocs/action-linkspector action to v1.5.2 thanks to @renovate-runner[bot]
- 227: Update dependency wyrihaximus/simple-twig to v2.4.0 thanks to @renovate-runner[bot]
- 225: Update WyriHaximus/github-action-composer-php-versions-in-range action to v2.1.0 thanks to @renovate-runner[bot]
- 224: Update docker/setup-qemu-action action to v4.1.0 thanks to @renovate-runner[bot]
- 223: Update dependency symfony/yaml to v8.1.0 thanks to @renovate-runner[bot]
- 222: Update aws-actions/configure-aws-credentials action to v6.1.2 thanks to @renovate-runner[bot]
- 220: Update ad-m/github-push-action action to v1.3.0 thanks to @renovate-runner[bot]
- 218: Update docker/setup-buildx-action action to v4.1.0 thanks to @renovate-runner[bot]
- 217: Update dependency wyrihaximus/simple-twig to v2.3.0 thanks to @renovate-runner[bot]
- 215: Update docker/login-action action to v4.2.0 thanks to @renovate-runner[bot]
- 213: Update dependency symfony/yaml to v8.0.12 thanks to @renovate-runner[bot]
- 210: Update int128/wait-for-docker-image-action action to v1.22.0 thanks to @renovate-runner[bot]
- 209: Update shivammathur/setup-php action to v2.37.1 thanks to @renovate-runner[bot]
- 208: Update dependency symfony/yaml to v8.0.11 thanks to @renovate-runner[bot]
- 207: Update aws-actions/configure-aws-credentials action to v6.1.1 thanks to @renovate-runner[bot]
- 206: Update int128/wait-for-docker-image-action action to v1.21.0 thanks to @renovate-runner[bot]
- 204: Update packagist/conductor-github-action action to v1.6.0 thanks to @renovate-runner[bot]
- 203: Update umbrelladocs/action-linkspector action to v1.5.1 thanks to @renovate-runner[bot]
- 200: Update softprops/action-gh-release action to v3 thanks to @renovate-runner[bot]
- 199: Update softprops/action-gh-release action to v2.6.2 thanks to @renovate-runner[bot]
- 198: Update marocchino/sticky-pull-request-comment action to v3.0.4 thanks to @renovate-runner[bot]
- 197: Update actions/github-script action to v9 thanks to @renovate-runner[bot]
- 196: Update ad-m/github-push-action action to v1.1.0 thanks to @renovate-runner[bot]
- 194: Update marocchino/sticky-pull-request-comment action to v3 thanks to @renovate-runner[bot]
- 192: Update docker/login-action action to v4.1.0 thanks to @renovate-runner[bot]
- 191: Update dependency symfony/yaml to v8.0.8 thanks to @renovate-runner[bot]
- 186: Update WyriHaximus/github-action-composer-php-versions-in-range action to v2 thanks to @renovate-runner[bot]
- 185: Update LouisBrunner/diff-action action to v3 thanks to @renovate-runner[bot]
- 184: Update int128/wait-for-docker-image-action action to v1.18.0 thanks to @renovate-runner[bot]
- 183: Update nick-invision/retry action to v4 thanks to @renovate-runner[bot]
- 182: Update umbrelladocs/action-linkspector action to v1.4.1 thanks to @renovate-runner[bot]
- 181: Update softprops/action-gh-release action to v2.6.1 thanks to @renovate-runner[bot]
- 180: Update ramsey/composer-install action to v4 thanks to @renovate-runner[bot]
- 179: Update ramsey/composer-install action to v3.2.1 thanks to @renovate-runner[bot]
- 177: Update shivammathur/setup-php action to v2.37.0 thanks to @renovate-runner[bot]
- 175: Update mheap/github-action-required-labels action to v5.5.2 thanks to @renovate-runner[bot]
- 174: Update marocchino/sticky-pull-request-comment action to v3 - autoclosed thanks to @renovate-runner[bot]
- 170: Update docker/setup-buildx-action action to v4 thanks to @renovate-runner[bot]
- 169: Update docker/login-action action to v4 thanks to @renovate-runner[bot]
- 167: Update GitHub Artifact Actions (major) thanks to @renovate-runner[bot]
- 166: Update dependency symfony/yaml to v8.0.6 thanks to @renovate-runner[bot]
- 165: Update WyriHaximus/github-action-composer.lock-diff action to v2.3.0 thanks to @renovate-runner[bot]
- 164: Update int128/wait-for-docker-image-action action to v1.17.0 thanks to @renovate-runner[bot]
- 162: Update WyriHaximus/github-action-get-previous-tag action to v2 thanks to @renovate-runner[bot]
- 160: Update aws-actions/configure-aws-credentials action to v6 thanks to @renovate-runner[bot]
- 159: Update docker/login-action action to v3.7.0 thanks to @renovate-runner[bot]
- 158: Update WyriHaximus/github-action-composer-php-versions-in-range action to v1.16.2 thanks to @renovate-runner[bot]
- 155: Update WyriHaximus/github-action-composer-php-versions-in-range action to v1.16.1 thanks to @renovate-runner[bot]
- 154: Update actions/checkout action to v6.0.2 thanks to @renovate-runner[bot]
- 153: Update int128/wait-for-docker-image-action action to v1.14.0 thanks to @renovate-runner[bot]
- 152: Update int128/wait-for-docker-image-action action to v1.13.0 thanks to @renovate-runner[bot]
- 151: Update WyriHaximus/github-action-composer-php-versions-in-range action to v1.16.0 thanks to @renovate-runner[bot]
- 149: Update docker/setup-buildx-action action to v3.12.0 thanks to @renovate-runner[bot]
- 148: Update GitHub Artifact Actions (major) thanks to @renovate-runner[bot]
- 147: Update dependency symfony/yaml to v8.0.1 thanks to @renovate-runner[bot]
- 146: Update packagist/conductor-github-action action to v1.5.3 thanks to @renovate-runner[bot]
- 145: Update actions/checkout action to v6 thanks to @renovate-runner[bot]
- 144: Update softprops/action-gh-release action to v2.5.0 thanks to @renovate-runner[bot]
- 143: Update int128/wait-for-docker-image-action action to v1.9.0 thanks to @renovate-runner[bot]
- 141: Update dependency symfony/yaml to v8 thanks to @renovate-runner[bot]
- 140: Update shivammathur/setup-php action to v2.36.0 thanks to @renovate-runner[bot]
- 139: Update aws-actions/configure-aws-credentials action to v5.1.1 thanks to @renovate-runner[bot]
- 138: Update actions/checkout action to v6 - autoclosed thanks to @renovate-runner[bot]
- 136: Update actions/checkout action to v5.0.1 thanks to @renovate-runner[bot]
- 135: Update softprops/action-gh-release action to v2.4.2 thanks to @renovate-runner[bot]
- 134: Update WyriHaximus/github-action-composer-php-versions-in-range action to v1.15.0 thanks to @renovate-runner[bot]
- 133: Update docker/setup-qemu-action action to v3.7.0 thanks to @renovate-runner[bot]
- 131: Update GitHub Artifact Actions (major) thanks to @renovate-runner[bot]
- 129: Update umbrelladocs/action-linkspector action to v1.4.0 thanks to @renovate-runner[bot]
- 128: Update packagist/conductor-github-action action to v1.5.2 thanks to @renovate-runner[bot]
- 125: Update aws-actions/configure-aws-credentials action to v5.1.0 thanks to @renovate-runner[bot]
- 123: Update docker/login-action action to v3.6.0 thanks to @renovate-runner[bot]
- 121: Update shivammathur/setup-php action to v2.35.5 thanks to @renovate-runner[bot]
- 119: Update haya14busa/action-update-semver action to v1.5.1 thanks to @renovate-runner[bot]
- 118: Update ad-m/github-push-action action to v1 thanks to @renovate-runner[bot]
- 117: Update aws-actions/configure-aws-credentials action to v5 thanks to @renovate-runner[bot]
- 116: Update actions/github-script action to v8 thanks to @renovate-runner[bot]
- 114: Update ghcr.io/wyrihaximusnet/php Docker tag to v8.5 thanks to @renovate-runner[bot]
- 113: Update actions/github-script action to v7.1.0 - autoclosed thanks to @renovate-runner[bot]
- 112: Update softprops/action-gh-release action to v2.3.3 thanks to @renovate-runner[bot]
- 111: Update dependency symfony/yaml to v7.3.5 - autoclosed thanks to @renovate-runner[bot]
- 110: Update shivammathur/setup-php action to v2.35.4 thanks to @renovate-runner[bot]
- 109: Update dependency symfony/yaml to v7 thanks to @renovate-runner[bot]
- 108: Update dependency symfony/yaml to v6.4.24 - autoclosed thanks to @renovate-runner[bot]
- 107: Update WyriHaximus/github-action-next-semvers action to v1.2.1 thanks to @renovate-runner[bot]
- 106: Update WyriHaximus/github-action-next-release-version action to v1.1.0 thanks to @renovate-runner[bot]
- 105: Update WyriHaximus/github-action-jwage-changelog-generator action to v1.4.0 thanks to @renovate-runner[bot]
- 104: Update WyriHaximus/github-action-get-previous-tag action to v1.4.0 thanks to @renovate-runner[bot]
- 103: Update WyriHaximus/github-action-create-milestone action to v1.2.0 thanks to @renovate-runner[bot]
- 102: Update WyriHaximus/github-action-composer.lock-diff action to v2.2.2 thanks to @renovate-runner[bot]
- 101: Update WyriHaximus/github-action-composer-php-versions-in-range action to v1.14.0 thanks to @renovate-runner[bot]
- 100: Update umbrelladocs/action-linkspector action to v1.3.7 thanks to @renovate-runner[bot]
- 99: Update softprops/action-gh-release action to v2.3.2 thanks to @renovate-runner[bot]
- 98: Update shivammathur/setup-php action to v2.35.3 thanks to @renovate-runner[bot]
- 97: Update ramsey/composer-install action to v3.1.1 thanks to @renovate-runner[bot]
- 96: Update packagist/conductor-github-action action to v1.4.0 thanks to @renovate-runner[bot]
- 95: Update mheap/github-action-required-labels action to v5.5.1 thanks to @renovate-runner[bot]
- 94: Update marocchino/sticky-pull-request-comment action to v2.9.4 thanks to @renovate-runner[bot]
- 93: Update haya14busa/action-update-semver action to v1.3.0 thanks to @renovate-runner[bot]
- 92: Update docker/setup-qemu-action action to v3.6.0 thanks to @renovate-runner[bot]
- 91: Update docker/setup-buildx-action action to v3.11.1 thanks to @renovate-runner[bot]
- 90: Update docker/login-action action to v3.5.0 thanks to @renovate-runner[bot]
- 89: Update dcarbone/install-jq-action action to v3.2.0 thanks to @renovate-runner[bot]
- 88: Update dawidd6/action-delete-branch action to v3.1.0 thanks to @renovate-runner[bot]
- 87: Update aws-actions/configure-aws-credentials action to v4.3.1 thanks to @renovate-runner[bot]
- 86: Update actions/upload-artifact action to v4.6.2 thanks to @renovate-runner[bot]
- 85: Update WyriHaximus/github-action-helm3 action to v4.0.2 thanks to @renovate-runner[bot]
- 84: Update nick-invision/retry action to v3.0.2 thanks to @renovate-runner[bot]
- 83: Update actions/github-script action to v7.0.1 thanks to @renovate-runner[bot]
- 82: Update actions/download-artifact action to v5 thanks to @renovate-runner[bot]
- 81: Update actions/checkout action to v5 thanks to @renovate-runner[bot]
- 52: Update LouisBrunner/diff-action action to v2.2.0 thanks to @renovate[bot]
- 50: Update dependency wyrihaximus/simple-twig to v2.2.1 thanks to @renovate[bot]
- 45: Update dcarbone/install-jq-action action to v3 thanks to @renovate[bot]
- 37: Update ramsey/composer-install to v3 thanks to @WyriHaximus
- 31: Update docker/setup-qemu-action action to v3 thanks to @renovate[bot]
- 30: Update docker/setup-buildx-action action to v3 thanks to @renovate[bot]
- 19: Update WyriHaximus/github-action-helm3 action to v4 thanks to @renovate[bot]
- 15: Update actions/checkout action to v4 thanks to @renovate[bot]
Enhancement ✨
- 168: Update docker/setup-qemu-action action to v4 thanks to @renovate-runner[bot]
- 71: Figure out ZTS or NTS when figuring out package version thanks to @WyriHaximus
- 69: CI: Split tasks between targeted tasks that run only on the targeted (and lowest) PHP version, and others that run on all versions thanks to @WyriHaximus
- 68: Add serverless project support thanks to @WyriHaximus
- 66: Add non-Docker action support thanks to @WyriHaximus
- 61: Add Utils entry point with Conductor as first workflow thanks to @WyriHaximus
- 49: Switch composer diff back to tagged release thanks to @WyriHaximus
- 48: Documentation thanks to @WyriHaximus
- 47: Sparse checkout ALL THE THINGS thanks to @WyriHaximus
- 46: Sparse checkout for markdown files thanks to @WyriHaximus
- 40: Move diffs to release management thanks to @WyriHaximus
- 39: Deploy kubernetes workflow thanks to @WyriHaximus
- 35: Fix: github-action-craft-release.yaml thanks to @WyriHaximus
- 33: Set Git actor before running pre-release script thanks to @WyriHaximus
- 32: Add run shell before release thanks to @WyriHaximus
- 29: GitHub Action Release Workflows (Docker + Composit) thanks to @WyriHaximus
- 28: Revert "Attempt to combine hardcoded extensions around dynamic extension list" thanks to @WyriHaximus
- 27: Attempt to combine hardcoded extensions around dynamic extension list thanks to @WyriHaximus
- 26: Clean up YAML and JSON linting thanks to @WyriHaximus
- 25: Set shivammathur/setup-php
ini-filetodevelopmentto get deprecation warnings thanks to @WyriHaximus - 24: Fix on OS tests never running thanks to @WyriHaximus
- 23: [CI] Pass custom env variables thanks to @WyriHaximus
- 22: [CI] Add services support thanks to @WyriHaximus
- 21: Only run directly on OSes if unit-testing-raw exists in the Makefile thanks to @WyriHaximus
- 18: Add Helm Diff workflow thanks to @WyriHaximus
- 14: Introduce NTS and ZTS detection thanks to @WyriHaximus
- 12: Release management workflow thanks to @WyriHaximus
- 11: Required labels thanks to @WyriHaximus
- 10: Create release workflow thanks to @WyriHaximus
- 9: Add the option to specify the working directory thanks to @WyriHaximus
- 8: Make it possible to disable specific jobs thanks to @WyriHaximus
- 7: Add Package entry point thanks to @WyriHaximus
- 6: Configure Renovate thanks to @renovate[bot]
- 5: Add Package entry point thanks to @WyriHaximus
- 4: Add CI workflow thanks to @WyriHaximus
- 3: Add set milestone on PR based on specific rules thanks to @WyriHaximus
- 2: Add Markdown Check Links thanks to @WyriHaximus
- 1: Add composer diff workflow thanks to @WyriHaximus
