piotrpress/github-composer

This Composer plugin adds support for using GitHub Workflow Artifacts as Composer Repositories.

v2.0.0 2024-02-20 14:51 UTC

This package is auto-updated.

Last update: 2024-10-20 16:32:41 UTC


README

This Composer plugin adds support for using GitHub Workflow Artifacts as Composer Repositories.

It also provides GitHub Workflows to build and update the Composer repository based on packages from GitHub repositories.

Example composer.json

{
  "repositories": [
    {
        "type": "composer",
        "url": "github.artifacts://PiotrPress/packages"
    }
  ]
}

Installation

  1. Add the plugin as a global composer requirement:
$ composer global require piotrpress/github-composer
  1. Allow the plugin execution:
$ composer config -g allow-plugins.piotrpress/github-composer true

Authentication

Add GitHub API authentication credentials:

$ composer config --global http-basic.github.com x-oauth-basic <token>

NOTE: using --global option is recommended to keep credentials outside of project's files.

Arguments:

Workflows

This plugin also comes with two Reusable Workflows designed to build and update the packages.json artifact based on packages from GitHub repositories belonging to the provided owner.

Build

Add a .github/workflows/build.yml file with the content below to the GitHub repository where the artifact containing the list of packages should be kept.

name: Build packages.json
on: 
  workflow_dispatch:
  repository_dispatch:
    types: [ Update packages.json ]
jobs:
  build:
    uses: piotrpress/github-composer/.github/workflows/build.yml@master
    secrets:
      token: ${{ secrets.token }}
    with:  
      owner: ${{ vars.owner }}

NOTE: by using the workflow_dispatch event, this workflow can also be triggered manually.

Workflow secrets and variables:

  • secrets.token - required: false, the token must have permissions to get repository content
  • vars.owner - required: false, default: github.repository_owner

Update

Add a .github/workflows/update.yml file with the content below to the GitHub repository, which is configured to trigger an update to the package list after every push.

name: Update packages.json
on:
  workflow_dispatch:
  push:
jobs:
  update:
    uses: piotrpress/github-composer/.github/workflows/update.yml@master
    secrets:
      token: ${{ secrets.token }}
    with:  
      owner: ${{ vars.owner }}
      repository: ${{ vars.repository }}

NOTE: by using the workflow_dispatch event, this workflow can also be triggered manually.

Workflow secrets and variables:

  • secrets.token - required: true, the token must have permissions to create a repository dispatch event
  • vars.owner - required: false, default: github.repository_owner
  • vars.repository - required: true

Requirements

  • PHP >= 7.4 version.
  • Composer ^2.0 version.

License

MIT