Update Datadog upstream dependency #194
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Update Datadog upstream dependency | |
| on: | |
| schedule: | |
| # Every day at 09:15 UTC | |
| - cron: '15 9 * * *' | |
| workflow_dispatch: | |
| inputs: | |
| upstream_branch: | |
| description: 'Branch in StackVista/datadog-agent-upstream-for-process-agent to track' | |
| required: false | |
| default: 'stackstate-7.62.2' | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| jobs: | |
| update-dependency: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
| with: | |
| fetch-depth: 0 | |
| # No later step pushes via git: the updater only reads, and | |
| # create-pull-request authenticates with its own token input | |
| persist-credentials: false | |
| - name: Setup Go | |
| uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0 | |
| with: | |
| # Use the Go version from go.mod | |
| go-version-file: go.mod | |
| cache: true | |
| - name: Ensure jq is available | |
| run: | | |
| set -euo pipefail | |
| if ! command -v jq >/dev/null 2>&1; then | |
| sudo apt-get update | |
| sudo apt-get install -y jq | |
| fi | |
| - name: Run updater script | |
| id: update | |
| shell: bash | |
| env: | |
| # Passed via env rather than interpolated into the script (template injection) | |
| UPSTREAM_BRANCH: ${{ github.event.inputs.upstream_branch }} | |
| run: | | |
| set -euo pipefail | |
| # Use provided input if present; otherwise default to the configured default value | |
| BRANCH="${UPSTREAM_BRANCH}" | |
| if [ -z "$BRANCH" ]; then BRANCH='stackstate-7.62.2'; fi | |
| COMMIT=$(git ls-remote https://github.com/StackVista/datadog-agent-upstream-for-process-agent.git "${BRANCH}" | tail -n 1 | awk '{print $1}') | |
| echo "Upstream branch: $BRANCH, commit: $COMMIT" | |
| if [ -z "$COMMIT" ]; then | |
| echo "Could not resolve commit for branch '$BRANCH'" >&2 | |
| exit 1 | |
| fi | |
| SHORT_COMMIT=$(echo "$COMMIT" | cut -c1-12) | |
| COMMIT_URL="https://github.com/StackVista/datadog-agent-upstream-for-process-agent/commit/${COMMIT}" | |
| echo "branch=$BRANCH" >> "$GITHUB_OUTPUT" | |
| echo "commit=$COMMIT" >> "$GITHUB_OUTPUT" | |
| echo "short_commit=$SHORT_COMMIT" >> "$GITHUB_OUTPUT" | |
| echo "commit_url=$COMMIT_URL" >> "$GITHUB_OUTPUT" | |
| chmod +x ./update-datadog-dependency.sh | |
| ./update-datadog-dependency.sh -b "$BRANCH" | |
| # Detect whether anything changed (e.g., go.mod / go.sum / others) | |
| if git diff --quiet; then | |
| echo "changed=false" >> "$GITHUB_OUTPUT" | |
| else | |
| echo "changed=true" >> "$GITHUB_OUTPUT" | |
| fi | |
| - name: Create pull request if changes detected | |
| if: steps.update.outputs.changed == 'true' | |
| uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8 | |
| with: | |
| title: | | |
| chore: update datadog-agent upstream (${{ steps.update.outputs.branch }}) -> ${{ steps.update.outputs.short_commit }} | |
| commit-message: | | |
| chore: update datadog-agent upstream to ${{ steps.update.outputs.commit }} (branch ${{ steps.update.outputs.branch }}) | |
| body: | | |
| This automated PR updates all github.com/DataDog/datadog-agent module replaces to the upstream mirror at the latest commit. | |
| • Branch: `${{ steps.update.outputs.branch }}` | |
| • Commit: `${{ steps.update.outputs.commit }}` | |
| • Link: ${{ steps.update.outputs.commit_url }} | |
| Command executed: | |
| `./update-datadog-dependency.sh -b "${{ steps.update.outputs.branch }}"` | |
| Re-run this workflow with a different `upstream_branch` to refresh the PR. | |
| branch: update-datadog-${{ steps.update.outputs.short_commit }} | |
| delete-branch: true | |
| # master requires signed commits (pulumi-infra branch protection); | |
| # sign-commits creates the commit via the GitHub API so it is verified | |
| sign-commits: true | |
| - name: No updates needed | |
| if: steps.update.outputs.changed != 'true' | |
| run: echo "No dependency updates detected; skipping PR creation." |