Skip to content

fix regex to match all files #11

fix regex to match all files

fix regex to match all files #11

Workflow file for this run

name: Nightly Upstream Snapshot Build
description: This workflow checks for new upstream versions of OpenTelemetry dependencies, creates a PR to update them, and builds and tests the new changes.
on:
schedule:
- cron: "21 3 * * *"
workflow_dispatch:
push:
branches:
- zhaez/nightly-build
env:
AWS_DEFAULT_REGION: us-east-1
BRANCH_NAME: nightly-dependency-updates
permissions:
id-token: write
contents: write
pull-requests: write
jobs:
update-dependencies:
runs-on: ubuntu-latest
outputs:
has_changes: ${{ steps.check_changes.outputs.has_changes }}
otel_python_version: ${{ steps.get_versions.outputs.otel_python_version }}
otel_contrib_version: ${{ steps.get_versions.outputs.otel_contrib_version }}
aws_sdk_ext_version: ${{ steps.get_versions.outputs.opentelemetry_sdk_extension_aws_version }}
aws_xray_prop_version: ${{ steps.get_versions.outputs.opentelemetry_propagator_aws_xray_version }}
breaking_changes_info: ${{ steps.breaking_changes.outputs.breaking_changes_info }}
steps:
- name: Checkout repository
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 #5.0.0
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Python
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c #v6.0.0
with:
python-version: '3.x'
- name: Install build tools
run: |
python -m pip install --upgrade pip
pip install toml requests packaging
- name: Get latest upstream versions
id: get_versions
run: python scripts/get_upstream_versions.py
- name: Check for breaking changes
id: breaking_changes
env:
OTEL_PYTHON_VERSION: ${{ steps.get_versions.outputs.otel_python_version }}
OTEL_CONTRIB_VERSION: ${{ steps.get_versions.outputs.otel_contrib_version }}
run: python scripts/find_breaking_changes.py
- name: Setup Git
run: |
git config user.name "github-actions"
git config user.email "[email protected]"
- name: Check out dependency update branch
run: |
if git ls-remote --exit-code --heads origin "$BRANCH_NAME"; then
echo "Branch $BRANCH_NAME already exists, checking out..."
git checkout "$BRANCH_NAME"
else
echo "Branch $BRANCH_NAME does not exist, creating new branch..."
git checkout -b "$BRANCH_NAME"
fi
- name: Update dependencies
env:
OTEL_PYTHON_VERSION: ${{ steps.get_versions.outputs.otel_python_version }}
OTEL_CONTRIB_VERSION: ${{ steps.get_versions.outputs.otel_contrib_version }}
OPENTELEMETRY_SDK_EXTENSION_AWS_VERSION: ${{ steps.get_versions.outputs.opentelemetry_sdk_extension_aws_version }}
OPENTELEMETRY_PROPAGATOR_AWS_XRAY_VERSION: ${{ steps.get_versions.outputs.opentelemetry_propagator_aws_xray_version }}
run: python scripts/update_dependencies.py
- name: Check for changes and commit
id: check_changes
run: |
if git diff --quiet; then
echo "No dependency updates needed"
echo "has_changes=false" >> $GITHUB_OUTPUT
else
echo "Dependencies were updated"
echo "has_changes=true" >> $GITHUB_OUTPUT
git add .
git commit -m "chore: update OpenTelemetry dependencies to ${{ steps.get_versions.outputs.otel_python_version }}/${{ steps.get_versions.outputs.otel_contrib_version }}"
git push origin "$BRANCH_NAME"
fi
build-and-test:
needs: update-dependencies
if: needs.update-dependencies.outputs.has_changes == 'true'
uses: ./.github/workflows/main-build.yml
secrets: inherit
permissions:
id-token: write
contents: read
with:
ref: nightly-dependency-updates
create-pr:
needs: [update-dependencies, build-and-test]
if: always() && needs.update-dependencies.outputs.has_changes == 'true'
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 #5.0.0
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Create or update PR
run: |
BUILD_STATUS="${{ needs.build-and-test.result }}"
BUILD_EMOJI="${{ needs.build-and-test.result == 'success' && '✅' || '❌' }}"
BUILD_LINK="https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}"
PR_BODY="Automated update of OpenTelemetry dependencies.
**Build Status:** ${BUILD_EMOJI} [${BUILD_STATUS}](${BUILD_LINK})
**Updated versions:**
- [OpenTelemetry Python](https://github.com/open-telemetry/opentelemetry-python/releases/tag/v${{ needs.update-dependencies.outputs.otel_python_version }}): ${{ needs.update-dependencies.outputs.otel_python_version }}
- [OpenTelemetry Contrib](https://github.com/open-telemetry/opentelemetry-python-contrib/releases/tag/v${{ needs.update-dependencies.outputs.otel_contrib_version }}): ${{ needs.update-dependencies.outputs.otel_contrib_version }}
- [opentelemetry-sdk-extension-aws](https://pypi.org/project/opentelemetry-sdk-extension-aws/${{ needs.update-dependencies.outputs.aws_sdk_ext_version }}/): ${{ needs.update-dependencies.outputs.aws_sdk_ext_version }}
- [opentelemetry-propagator-aws-xray](https://pypi.org/project/opentelemetry-propagator-aws-xray/${{ needs.update-dependencies.outputs.aws_xray_prop_version }}/): ${{ needs.update-dependencies.outputs.aws_xray_prop_version }}
**Upstream releases with breaking changes:**
Note: the mechanism to detect upstream breaking changes is not perfect. Be sure to check all new releases and understand if any additional changes need to be addressed.
${{ needs.update-dependencies.outputs.breaking_changes_info }}"
if gh pr view "$BRANCH_NAME" --json state --jq '.state' 2>/dev/null | grep -q "OPEN"; then
echo "Open PR already exists, updating description..."
gh pr edit "$BRANCH_NAME" --body "$PR_BODY"
else
echo "Creating new PR..."
gh pr create \
--title "Nightly dependency update: OpenTelemetry ${{ needs.update-dependencies.outputs.otel_python_version }}/${{ needs.update-dependencies.outputs.otel_contrib_version }}" \
--body "$PR_BODY" \
--base main \
--head "$BRANCH_NAME"
fi
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
publish-nightly-build-status:
name: "Publish Nightly Build Status"
needs: [ update-dependencies, build-and-test ]
runs-on: ubuntu-latest
if: always()
steps:
- name: Configure AWS Credentials for emitting metrics
uses: aws-actions/configure-aws-credentials@a03048d87541d1d9fcf2ecf528a4a65ba9bd7838 #5.0.0
with:
role-to-assume: ${{ secrets.MONITORING_ROLE_ARN }}
aws-region: ${{ env.AWS_DEFAULT_REGION }}
- name: Publish nightly build status
run: |
if [[ "${{ needs.build-and-test.result }}" == "skipped" ]]; then
echo "Build was skipped (no changes), not publishing metric"
else
value="${{ needs.build-and-test.result == 'success' && '0.0' || '1.0'}}"
aws cloudwatch put-metric-data --namespace 'ADOT/GitHubActions' \
--metric-name Failure \
--dimensions repository=${{ github.repository }},branch=${{ github.ref_name }},workflow=nightly_build \
--value $value
fi