{"id":21424797,"url":"https://github.com/opentelemetry-php/dev-tools","last_synced_at":"2026-01-16T08:26:25.730Z","repository":{"id":37856420,"uuid":"496697311","full_name":"opentelemetry-php/dev-tools","owner":"opentelemetry-php","description":"Development tools for OpenTelemetry PHP ","archived":false,"fork":false,"pushed_at":"2026-01-14T00:19:48.000Z","size":277,"stargazers_count":0,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-01-14T04:11:06.779Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/opentelemetry-php.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"code-of-conduct.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-05-26T16:41:08.000Z","updated_at":"2026-01-10T09:19:50.000Z","dependencies_parsed_at":"2024-02-05T02:31:09.640Z","dependency_job_id":"8667dd1f-85e5-4a76-ae54-bda9bf8ae68b","html_url":"https://github.com/opentelemetry-php/dev-tools","commit_stats":{"total_commits":108,"total_committers":3,"mean_commits":36.0,"dds":0.01851851851851849,"last_synced_commit":"3c63ce3337cb0d6fd964404ac1ac4f54cc1b4f94"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":"opentelemetry-php/php-project-template","purl":"pkg:github/opentelemetry-php/dev-tools","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opentelemetry-php%2Fdev-tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opentelemetry-php%2Fdev-tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opentelemetry-php%2Fdev-tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opentelemetry-php%2Fdev-tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/opentelemetry-php","download_url":"https://codeload.github.com/opentelemetry-php/dev-tools/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opentelemetry-php%2Fdev-tools/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28478047,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T06:30:42.265Z","status":"ssl_error","status_checked_at":"2026-01-16T06:30:16.248Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-22T21:24:35.600Z","updated_at":"2026-01-16T08:26:25.711Z","avatar_url":"https://github.com/opentelemetry-php.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Development tools for OpenTelemetry PHP\n\n![CI Build](https://github.com/opentelemetry-php/dev-tools/workflows/PHP%20QA/badge.svg)\n[![codecov](https://codecov.io/gh/opentelemetry-php/dev-tools/branch/main/graph/badge.svg?token=DSL6OW6TGC)](https://codecov.io/gh/opentelemetry-php/dev-tools)\n\n## Release Management\n\nA tool to find unreleased changes for OpenTelemetry, create new releases with release notes.\n\n### Requirements\n\nYou need to be an administrator/owner of [opentelemetry-php](https://github.com/opentelemetry-php) to actually create releases. A lower-privileged account\nshould be able to do everything else, but will fail if you try to create a release.\n\nYou need to [create a fine-grained github access token](https://github.com/settings/personal-access-tokens/new) to be able to create a release.\n\nFor everything under `opentelemetry-php` (almost everything, ie the gitsplit destination):\n* resource owner: `opentelemetry-php`\n* repository access: `all repositories`\n* permissions: `contents:read-and-write`\n\nFor `opentelemetry-php-instrumentation` (the extension):\n* resouce owner: `open-telemetry`\n* repository access: (only selected) `open-telemetry/opentelemetry-php-instrumentation`\n* permissions: `contents:read-and-write`\n\nYou can provide the token either via the `GITHUB_TOKEN` env var (preferred), or the `--token=` CLI option.\n\n### Usage\n\n```shell\nexport GITHUB_TOKEN=\u003cfine-grain-access-token\u003e\nbin/otel release:run -[vvv] [--token=token] [--branch=main] [--dry-run] [--repo=\u003ccore|contrib\u003e]\n```\n\nOptions:\n- `-v[vv]` - verbosity\n- `--token=` - github token (can also be passed by `GITHUB_TOKEN`)\n- `--branch=` - github branch to tag from\n- `--dry-run` - do not make any changes\n- `--repo=` - choose a single upstream repo to run against (default: all)\n- `--filter=` - filter repositories by prefix\n\nThe script will then:\n* fetch `.gitsplit.yaml` from source repositories\n* process yaml to determine downstream (read-only) repositories and their path association in upstream (eg open-telemetry/opentelemetry-php:/src/API -\u003e opentelemetry-php/api)\n* find latest release in downstream\n* find changes in upstream newer than the latest release, and their associated pull request\n* retrieve diffs from downstream between latest tag and chosen branch (eg main)\n* check that upstream changes match downstream diffs\n\nOnce all the info has been gathered, it will iterate over each repo with unreleased changes. For each repo:\n* list the changes\n* display the last release version, and ask for new version\n* ask if new release should be latest\n* ask if the new release should be a draft (eg so you can manually adjust the notes)\n* generate release notes\n* create the release (unless `--dry-run` was specified)\n\n## PECL release tool\n\n### Generate updated `package.xml`\nA tool to fetch and update package.xml, for a new version of the opentelemetry extension on PECL.\n\n```shell\nbin/otel release:pecl\n```\n\nOptions:\n- `-v[vv]` - verbosity\n- `--force` - add a new version even if no changes detected\n\nThe script will then:\n* fetch latest release\n* fetch all commits newer than last release\n* fetch `package.xml`\n* prompt for next version number\n* move existing version details into a new `release` in `\u003cchangelog\u003e`\n* update XML with new version details\n* write updated `package.xml` to console\n\nManual steps:\n1. copy/paste XML into `package.xml`\n2. open in IDE to check for/fix formatting and invalid XML (invalid chars should have been converted)\n3. update `php_opentelemetry.h` version info to match new version# (look for `PHP_OPENTELEMETRY_VERSION`)\n4. submit a PR (`package.xml` + `php_opentelemetry.h`) back to [opentelemetry-php-instrumentation](https://github.com/open-telemetry/opentelemetry-php-instrumentation)\n5. get approval and merge PR\n6. tag next release: `bin/otel tag:pecl`\n7. wait for github workflow to run to completion. it will create a draft release: check that it looks ok, then publish it\n8. download and unzip the `opentelemetry-pecl` artifact from the release (containing `opentelemetry-\u003cversion\u003e.tar.gz`)\n9. upload `opentelemetry-\u003cversion\u003e.tar.gz` to pecl: https://pecl.php.net/release-upload.php\n10. verify (install via pecl)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopentelemetry-php%2Fdev-tools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopentelemetry-php%2Fdev-tools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopentelemetry-php%2Fdev-tools/lists"}