Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/opentelemetry-php/dev-tools
Development tools for OpenTelemetry PHP
https://github.com/opentelemetry-php/dev-tools
Last synced: about 1 month ago
JSON representation
Development tools for OpenTelemetry PHP
- Host: GitHub
- URL: https://github.com/opentelemetry-php/dev-tools
- Owner: opentelemetry-php
- License: apache-2.0
- Created: 2022-05-26T16:41:08.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-07-12T00:45:39.000Z (6 months ago)
- Last Synced: 2024-10-12T15:38:25.051Z (3 months ago)
- Language: PHP
- Size: 263 KB
- Stars: 0
- Watchers: 4
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: code-of-conduct.md
- Codeowners: CODEOWNERS
Awesome Lists containing this project
README
# Development tools for OpenTelemetry PHP
![CI Build](https://github.com/opentelemetry-php/dev-tools/workflows/PHP%20QA/badge.svg)
[![codecov](https://codecov.io/gh/opentelemetry-php/dev-tools/branch/main/graph/badge.svg?token=DSL6OW6TGC)](https://codecov.io/gh/opentelemetry-php/dev-tools)## Release Management
A tool to find unreleased changes for OpenTelemetry, create new releases with release notes.
### Requirements
You need to be an administrator/owner of [opentelemetry-php](https://github.com/opentelemetry-php) to actually create releases. A lower-privileged account
should be able to do everything else, but will fail if you try to create a release.You need to [create a fine-grained github access token](https://github.com/settings/personal-access-tokens/new) to be able to create a release.
For everything under `opentelemetry-php` (almost everything, ie the gitsplit destination):
* resource owner: `opentelemetry-php`
* repository access: `all repositories`
* permissions: `contents:read-and-write`For `opentelemetry-php-instrumentation` (the extension):
* resouce owner: `open-telemetry`
* repository access: (only selected) `open-telemetry/opentelemetry-php-instrumentation`
* permissions: `contents:read-and-write`You can provide the token either via the `GITHUB_TOKEN` env var (preferred), or the `--token=` CLI option.
### Usage
```shell
export GITHUB_TOKEN=
bin/otel release:run -[vvv] [--token=token] [--branch=main] [--dry-run] [--repo=]
```Options:
- `-v[vv]` - verbosity
- `--token=` - github token (can also be passed by `GITHUB_TOKEN`)
- `--branch=` - github branch to tag from
- `--dry-run` - do not make any changes
- `--repo=` - choose a single upstream repo to run against (default: all)
- `--filter=` - filter repositories by prefixThe script will then:
* fetch `.gitsplit.yaml` from source repositories
* process yaml to determine downstream (read-only) repositories and their path association in upstream (eg open-telemetry/opentelemetry-php:/src/API -> opentelemetry-php/api)
* find latest release in downstream
* find changes in upstream newer than the latest release, and their associated pull request
* retrieve diffs from downstream between latest tag and chosen branch (eg main)
* check that upstream changes match downstream diffsOnce all the info has been gathered, it will iterate over each repo with unreleased changes. For each repo:
* list the changes
* display the last release version, and ask for new version
* ask if new release should be latest
* ask if the new release should be a draft (eg so you can manually adjust the notes)
* generate release notes
* create the release (unless `--dry-run` was specified)## PECL release tool
### Generate updated `package.xml`
A tool to fetch and update package.xml, for a new version of the opentelemetry extension on PECL.```shell
bin/otel release:pecl
```Options:
- `-v[vv]` - verbosity
- `--force` - add a new version even if no changes detectedThe script will then:
* fetch latest release
* fetch all commits newer than last release
* fetch `package.xml`
* prompt for next version number
* move existing version details into a new `release` in ``
* update XML with new version details
* write updated `package.xml` to consoleManual steps:
1. copy/paste XML into `package.xml`
2. open in IDE to check for/fix formatting and invalid XML (invalid chars should have been converted)
3. update `php_opentelemetry.h` version info to match new version# (look for `PHP_OPENTELEMETRY_VERSION`)
4. submit a PR (`package.xml` + `php_opentelemetry.h`) back to [opentelemetry-php-instrumentation](https://github.com/open-telemetry/opentelemetry-php-instrumentation)
5. get approval and merge PR
6. tag next release: `bin/otel tag:pecl`
7. wait for github workflow to run to completion. it will create a draft release: check that it looks ok, then publish it
8. download and unzip the `opentelemetry-pecl` artifact from the release (containing `opentelemetry-.tar.gz`)
9. upload `opentelemetry-.tar.gz` to pecl: https://pecl.php.net/release-upload.php
10. verify (install via pecl)