diff --git a/.github/workflows/split-monorepo.yaml b/.github/workflows/split-monorepo.yaml new file mode 100644 index 000000000..2a1faefa1 --- /dev/null +++ b/.github/workflows/split-monorepo.yaml @@ -0,0 +1,23 @@ +name: gitsplit +on: + push: + branches: + - main + - split + release: + types: [published] + create: + workflow_dispatch: + +jobs: + gitsplit: + runs-on: ubuntu-latest + steps: + - name: checkout + run: git clone "$GITHUB_SERVER_URL/$GITHUB_REPOSITORY" "$GITHUB_WORKSPACE" && cd "$GITHUB_WORKSPACE" && git checkout $GITHUB_SHA + - name: Split repositories + uses: docker://jderusse/gitsplit:latest + with: + args: gitsplit + env: + GH_TOKEN: ${{ secrets.GITSPLIT_TOKEN }} \ No newline at end of file diff --git a/.gitsplit.yml b/.gitsplit.yml new file mode 100644 index 000000000..0b732aada --- /dev/null +++ b/.gitsplit.yml @@ -0,0 +1,30 @@ +# Path to a cache directory Used to speed up the split over time by reusing git's objects +cache_url: "/cache/gitsplit" + +# Path to the repository to split (default = current path) +project_url: "https://github.com/open-telemetry/opentelemetry-php.git" + +# List of splits. +splits: + - prefix: "proto/otel" + target: "https://${GH_TOKEN}@github.com/opentelemetry-php/gen-otlp-protobuf.git" + - prefix: "thrift/jaeger" + target: "https://${GH_TOKEN}@github.com/opentelemetry-php/gen-jaeger-thrift.git" + - prefix: "src/Context" + target: "https://${GH_TOKEN}@github.com/opentelemetry-php/context.git" + - prefix: "src/SemConv" + target: "https://${GH_TOKEN}@github.com/opentelemetry-php/sem-conv.git" + - prefix: "src/API" + target: "https://${GH_TOKEN}@github.com/opentelemetry-php/api.git" + - prefix: "src/SDK" + target: "https://${GH_TOKEN}@github.com/opentelemetry-php/sdk.git" + - prefix: "src/Contrib" + target: "https://${GH_TOKEN}@github.com/opentelemetry-php/sdk-contrib.git" + +# List of references to split (defined as regexp) +origins: + - ^main$ + - ^test$ + - ^split$ + - ^v\d+\.\d+\.\d+$ + - ^\d+\.\d+\.\d+$ diff --git a/Makefile b/Makefile index 22157b841..c3183a4e2 100644 --- a/Makefile +++ b/Makefile @@ -64,4 +64,6 @@ w3c-test-service: @docker-compose -f docker-compose.w3cTraceContext.yaml run --rm php ./tests/TraceContext/W3CTestService/symfony-setup semconv: ./script/semantic-conventions/semconv.sh +split: + docker-compose -f docker/gitsplit/docker-compose.yaml --env-file ./.env up FORCE: diff --git a/docker/gitsplit/docker-compose.yaml b/docker/gitsplit/docker-compose.yaml new file mode 100644 index 000000000..d7d54f72c --- /dev/null +++ b/docker/gitsplit/docker-compose.yaml @@ -0,0 +1,9 @@ +version: '3.7' +services: + gitsplit: + image: jderusse/gitsplit + volumes: + - ../../:/srv + - ../../var/cache/gitsplit:/cache/gitsplit + environment: + GH_TOKEN: ${GITSPLIT_TOKEN:-''} diff --git a/proto/otel/composer.json b/proto/otel/composer.json index 4455a50b1..2e98ab113 100644 --- a/proto/otel/composer.json +++ b/proto/otel/composer.json @@ -1,5 +1,5 @@ { - "name": "open-telemetry/proto-otel", + "name": "open-telemetry/gen-otlp-protobuf", "description": "PHP protobuf files for communication with OpenTelemetry OTLP collectors/servers.", "keywords": ["opentelemetry", "otel", "metrics", "tracing", "logging", "apm", "gRPC", "protobuf", "otlp"], "type": "library", diff --git a/src/API/composer.json b/src/API/composer.json index 0c476fe14..2f32e8d9f 100644 --- a/src/API/composer.json +++ b/src/API/composer.json @@ -17,7 +17,7 @@ }, "autoload": { "psr-4": { - "OpenTelemetry\\API\\": "" + "OpenTelemetry\\API\\": "." } } } diff --git a/src/Context/composer.json b/src/Context/composer.json index df9be9b76..97aa4a3a4 100644 --- a/src/Context/composer.json +++ b/src/Context/composer.json @@ -15,7 +15,7 @@ }, "autoload": { "psr-4": { - "OpenTelemetry\\Context\\": "" + "OpenTelemetry\\Context\\": "." } }, "suggest": { diff --git a/src/Contrib/composer.json b/src/Contrib/composer.json index 7ee334bd9..d5cb11aa1 100644 --- a/src/Contrib/composer.json +++ b/src/Contrib/composer.json @@ -16,6 +16,8 @@ "nyholm/dsn": "^2.0.0", "open-telemetry/api": "self.version", "open-telemetry/context": "self.version", + "open-telemetry/gen-jaeger-thrift": "self.version", + "open-telemetry/gen-otlp-protobuf": "self.version", "open-telemetry/proto-otel": "self.version", "open-telemetry/sdk": "self.version", "open-telemetry/sem-conv": "self.version", @@ -28,7 +30,7 @@ }, "autoload": { "psr-4": { - "OpenTelemetry\\Contrib\\": "" + "OpenTelemetry\\Contrib\\": "." } }, "suggest": { diff --git a/src/SDK/composer.json b/src/SDK/composer.json index 8a913fe10..4cdf06418 100644 --- a/src/SDK/composer.json +++ b/src/SDK/composer.json @@ -25,7 +25,7 @@ }, "autoload": { "psr-4": { - "OpenTelemetry\\SDK\\": "" + "OpenTelemetry\\SDK\\": "." } }, "suggest": { diff --git a/thrift/jaeger/composer.json b/thrift/jaeger/composer.json new file mode 100644 index 000000000..a8a0adbd3 --- /dev/null +++ b/thrift/jaeger/composer.json @@ -0,0 +1,22 @@ +{ + "name": "open-telemetry/gen-jaeger-thrift", + "description": "PHP Thrift files for communication with Jaeger.", + "keywords": ["opentelemetry", "otel", "tracing", "jaeger", "thrift"], + "type": "library", + "license": "Apache-2.0", + "authors": [ + { + "name": "opentelemetry-php contributors", + "homepage": "https://github.com/open-telemetry/opentelemetry-php/graphs/contributors" + } + ], + "require": { + "php": "^7.4 || ^8.0", + "packaged/thrift": "^0.15.0" + }, + "autoload": { + "psr-4": { + "Jaeger\\Thrift\\": "." + } + } +}