@asyncapi/converter 0.5.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/add-good-first-issue-labels.yml +68 -0
- package/.github/workflows/automerge-for-humans-add-ready-to-merge-or-do-not-merge-label.yml +54 -0
- package/.github/workflows/automerge-for-humans-merging.yml +32 -0
- package/.github/workflows/automerge-for-humans-remove-ready-to-merge-label-on-edit.yml +35 -0
- package/.github/workflows/automerge-orphans.yml +2 -3
- package/.github/workflows/automerge.yml +19 -9
- package/.github/workflows/autoupdate.yml +32 -0
- package/.github/workflows/bump.yml +13 -13
- package/.github/workflows/help-command.yml +43 -0
- package/.github/workflows/if-nodejs-pr-testing.yml +7 -1
- package/.github/workflows/if-nodejs-release.yml +20 -5
- package/.github/workflows/issues-prs-notifications.yml +23 -0
- package/.github/workflows/stale-issues-prs.yml +21 -9
- package/.github/workflows/welcome-first-time-contrib.yml +65 -12
- package/CODEOWNERS +8 -0
- package/cli.js +1 -1
- package/lib/index.js +26 -14
- package/package.json +12 -14
- package/test/index.js +28 -0
- package/test/input/2.1.0/streetlights.yml +113 -0
- package/test/input/2.2.0/streetlights.yml +113 -0
- package/test/output/2.2.0/streetlights.yml +113 -0
- package/test/output/2.3.0/streetlights.yml +113 -0
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
#This workflow is centrally managed in https://github.com/asyncapi/.github/
|
|
2
|
+
#Don't make changes to this file in this repo as they will be overwritten with changes made to the same file in above mentioned repo
|
|
3
|
+
|
|
4
|
+
#Purpose of this workflow is to enable anyone to label issue with 'Good First Issue' and 'area/*' with a single command.
|
|
5
|
+
name: Add 'Good First Issue' and 'area/*' labels # if proper comment added
|
|
6
|
+
|
|
7
|
+
on:
|
|
8
|
+
issue_comment:
|
|
9
|
+
types:
|
|
10
|
+
- created
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
add-labels:
|
|
14
|
+
if: ${{!github.event.issue.pull_request && github.event.issue.state != 'closed' && github.actor != 'asyncapi-bot'}}
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
steps:
|
|
17
|
+
- name: Add label
|
|
18
|
+
if: contains(github.event.comment.body, '/good-first-issue') || contains(github.event.comment.body, '/gfi' )
|
|
19
|
+
uses: actions/github-script@v5
|
|
20
|
+
with:
|
|
21
|
+
github-token: ${{ secrets.GH_TOKEN }}
|
|
22
|
+
script: |
|
|
23
|
+
const areas = ['javascript', 'typescript', 'java' , 'go', 'docs', 'ci-cd', 'design'];
|
|
24
|
+
const values = context.payload.comment.body.split(" ");
|
|
25
|
+
switch(values[1]){
|
|
26
|
+
case 'ts':
|
|
27
|
+
values[1] = 'typescript';
|
|
28
|
+
break;
|
|
29
|
+
case 'js':
|
|
30
|
+
values[1] = 'javascript';
|
|
31
|
+
case 'markdown':
|
|
32
|
+
values[1] = 'docs';
|
|
33
|
+
}
|
|
34
|
+
if(values.length != 2 || !areas.includes(values[1])){
|
|
35
|
+
const message = `Hey @${context.payload.sender.login}, your message doesn't follow the requirements, you can try \`/help\`.`
|
|
36
|
+
|
|
37
|
+
await github.rest.issues.createComment({
|
|
38
|
+
issue_number: context.issue.number,
|
|
39
|
+
owner: context.repo.owner,
|
|
40
|
+
repo: context.repo.repo,
|
|
41
|
+
body: message
|
|
42
|
+
})
|
|
43
|
+
} else {
|
|
44
|
+
|
|
45
|
+
//remove complexity and areas if there are any before adding new labels;
|
|
46
|
+
const currentLabels = (await github.rest.issues.listLabelsOnIssue({
|
|
47
|
+
issue_number: context.issue.number,
|
|
48
|
+
owner: context.repo.owner,
|
|
49
|
+
repo: context.repo.repo,
|
|
50
|
+
})).data.map(label => label.name);
|
|
51
|
+
|
|
52
|
+
const shouldBeRemoved = currentLabels.filter(label => (label.startsWith('area/') && !label.endsWith(values[1])));
|
|
53
|
+
shouldBeRemoved.forEach(label => {
|
|
54
|
+
github.rest.issues.deleteLabel({
|
|
55
|
+
owner: context.repo.owner,
|
|
56
|
+
repo: context.repo.repo,
|
|
57
|
+
name: label,
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
//add new labels
|
|
62
|
+
github.rest.issues.addLabels({
|
|
63
|
+
issue_number: context.issue.number,
|
|
64
|
+
owner: context.repo.owner,
|
|
65
|
+
repo: context.repo.repo,
|
|
66
|
+
labels: ['good first issue', `area/${values[1]}`]
|
|
67
|
+
});
|
|
68
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
#This workflow is centrally managed in https://github.com/asyncapi/.github/
|
|
2
|
+
#Don't make changes to this file in this repo as they will be overwritten with changes made to the same file in above mentioned repo
|
|
3
|
+
|
|
4
|
+
#Purpose of this workflow is to enable anyone to label PR with `ready-to-merge` and `do-not-merge` labels to get stuff merged or blocked from merging
|
|
5
|
+
name: Add ready-to-merge or do-not-merge label # if proper comment added
|
|
6
|
+
|
|
7
|
+
on:
|
|
8
|
+
issue_comment:
|
|
9
|
+
types:
|
|
10
|
+
- created
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
parse-comment-and-add-ready: # for handling cases when you want to mark as ready to merge
|
|
14
|
+
if: github.event.issue.pull_request && github.event.issue.state != 'closed' && github.actor != 'asyncapi-bot'
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
steps:
|
|
17
|
+
- name: Check if PR is draft # such info is not available in the context of issue_comment event
|
|
18
|
+
uses: actions/github-script@v5
|
|
19
|
+
id: checkDraft
|
|
20
|
+
with:
|
|
21
|
+
result-encoding: string
|
|
22
|
+
script: |
|
|
23
|
+
const prDetailsUrl = context.payload.issue.pull_request.url;
|
|
24
|
+
const response = await github.request(prDetailsUrl);
|
|
25
|
+
return response.data.draft;
|
|
26
|
+
- name: Add label
|
|
27
|
+
if: steps.checkDraft.outputs.result == 'false' && (contains(github.event.comment.body, '/ready-to-merge') || contains(github.event.comment.body, '/rtm' ))
|
|
28
|
+
uses: actions/github-script@v5
|
|
29
|
+
with:
|
|
30
|
+
github-token: ${{ secrets.GH_TOKEN }}
|
|
31
|
+
script: |
|
|
32
|
+
github.rest.issues.addLabels({
|
|
33
|
+
issue_number: context.issue.number,
|
|
34
|
+
owner: context.repo.owner,
|
|
35
|
+
repo: context.repo.repo,
|
|
36
|
+
labels: ['ready-to-merge']
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
parse-comment-and-add-block: # for handling cases when you want to mark as do-not-merge
|
|
40
|
+
if: github.event.issue.pull_request && github.event.issue.state != 'closed' && github.actor != 'asyncapi-bot'
|
|
41
|
+
runs-on: ubuntu-latest
|
|
42
|
+
steps:
|
|
43
|
+
- name: Add label
|
|
44
|
+
if: contains(github.event.comment.body, '/do-not-merge') || contains(github.event.comment.body, '/dnm' )
|
|
45
|
+
uses: actions/github-script@v5
|
|
46
|
+
with:
|
|
47
|
+
github-token: ${{ secrets.GH_TOKEN }}
|
|
48
|
+
script: |
|
|
49
|
+
github.rest.issues.addLabels({
|
|
50
|
+
issue_number: context.issue.number,
|
|
51
|
+
owner: context.repo.owner,
|
|
52
|
+
repo: context.repo.repo,
|
|
53
|
+
labels: ['do-not-merge']
|
|
54
|
+
})
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
#This workflow is centrally managed in https://github.com/asyncapi/.github/
|
|
2
|
+
#Don't make changes to this file in this repo as they will be overwritten with changes made to the same file in above mentioned repo
|
|
3
|
+
|
|
4
|
+
#Purpose of this workflow is to allow people to merge PR without a need of maintainer doing it. If all checks are in place (including maintainers approval) - JUST MERGE IT!
|
|
5
|
+
name: Automerge For Humans
|
|
6
|
+
|
|
7
|
+
on:
|
|
8
|
+
pull_request_target:
|
|
9
|
+
types:
|
|
10
|
+
- labeled
|
|
11
|
+
- unlabeled
|
|
12
|
+
- synchronize
|
|
13
|
+
- opened
|
|
14
|
+
- edited
|
|
15
|
+
- ready_for_review
|
|
16
|
+
- reopened
|
|
17
|
+
- unlocked
|
|
18
|
+
|
|
19
|
+
jobs:
|
|
20
|
+
automerge-for-humans:
|
|
21
|
+
if: github.event.pull_request.draft == false && (github.event.pull_request.user.login != 'asyncapi-bot' || github.event.pull_request.user.login != 'dependabot[bot]' || github.event.pull_request.user.login != 'dependabot-preview[bot]') #it runs only if PR actor is not a bot, at least not a bot that we know
|
|
22
|
+
runs-on: ubuntu-latest
|
|
23
|
+
steps:
|
|
24
|
+
- name: Automerge PR
|
|
25
|
+
uses: pascalgn/automerge-action@v0.14.3
|
|
26
|
+
env:
|
|
27
|
+
GITHUB_TOKEN: "${{ secrets.GH_TOKEN }}"
|
|
28
|
+
MERGE_LABELS: "!do-not-merge,ready-to-merge"
|
|
29
|
+
MERGE_METHOD: "squash"
|
|
30
|
+
MERGE_COMMIT_MESSAGE: "{pullRequest.title} (#{pullRequest.number})"
|
|
31
|
+
MERGE_RETRIES: "20"
|
|
32
|
+
MERGE_RETRY_SLEEP: "30000"
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#This workflow is centrally managed in https://github.com/asyncapi/.github/
|
|
2
|
+
#Don't make changes to this file in this repo as they will be overwritten with changes made to the same file in above mentioned repo
|
|
3
|
+
|
|
4
|
+
# Defence from evil contributor that after adding `ready-to-merge` all suddenly makes evil commit or evil change in PR title
|
|
5
|
+
# Label is removed once above action is detected
|
|
6
|
+
name: Remove ready-to-merge label
|
|
7
|
+
|
|
8
|
+
on:
|
|
9
|
+
pull_request_target:
|
|
10
|
+
types:
|
|
11
|
+
- synchronize
|
|
12
|
+
- edited
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
remove-ready-label:
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
steps:
|
|
18
|
+
- name: Remove label
|
|
19
|
+
uses: actions/github-script@v5
|
|
20
|
+
with:
|
|
21
|
+
github-token: ${{ secrets.GH_TOKEN }}
|
|
22
|
+
script: |
|
|
23
|
+
const labelToRemove = 'ready-to-merge';
|
|
24
|
+
const labels = context.payload.pull_request.labels;
|
|
25
|
+
|
|
26
|
+
const isLabelPresent = labels.some(label => label.name === labelToRemove)
|
|
27
|
+
|
|
28
|
+
if(!isLabelPresent) return;
|
|
29
|
+
|
|
30
|
+
github.rest.issues.removeLabel({
|
|
31
|
+
issue_number: context.issue.number,
|
|
32
|
+
owner: context.repo.owner,
|
|
33
|
+
repo: context.repo.repo,
|
|
34
|
+
name: labelToRemove
|
|
35
|
+
})
|
|
@@ -20,14 +20,13 @@ jobs:
|
|
|
20
20
|
script: |
|
|
21
21
|
const query = `query($owner:String!, $name:String!) {
|
|
22
22
|
repository(owner:$owner, name:$name){
|
|
23
|
-
pullRequests(first: 100){
|
|
23
|
+
pullRequests(first: 100, states: OPEN){
|
|
24
24
|
nodes{
|
|
25
25
|
title
|
|
26
26
|
url
|
|
27
27
|
author {
|
|
28
28
|
resourcePath
|
|
29
29
|
}
|
|
30
|
-
state
|
|
31
30
|
}
|
|
32
31
|
}
|
|
33
32
|
}
|
|
@@ -38,7 +37,7 @@ jobs:
|
|
|
38
37
|
};
|
|
39
38
|
const { repository: { pullRequests: { nodes } } } = await github.graphql(query, variables);
|
|
40
39
|
|
|
41
|
-
let orphans = nodes.filter((pr)=> pr.
|
|
40
|
+
let orphans = nodes.filter( (pr) => pr.author.resourcePath === '/asyncapi-bot' || pr.author.resourcePath === '/apps/dependabot')
|
|
42
41
|
|
|
43
42
|
if (orphans.length) {
|
|
44
43
|
core.setOutput('found', 'true');
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
#This action is centrally managed in https://github.com/asyncapi/.github/
|
|
2
|
-
#Don't make changes to this file in this repo as they will be overwritten with changes made to the same file in above mentioned repo
|
|
1
|
+
# This action is centrally managed in https://github.com/asyncapi/.github/
|
|
2
|
+
# Don't make changes to this file in this repo as they will be overwritten with changes made to the same file in above mentioned repo.
|
|
3
3
|
|
|
4
4
|
name: Automerge release bump PR
|
|
5
5
|
|
|
@@ -17,31 +17,41 @@ on:
|
|
|
17
17
|
pull_request_review:
|
|
18
18
|
types:
|
|
19
19
|
- submitted
|
|
20
|
-
|
|
21
|
-
jobs:
|
|
22
20
|
|
|
21
|
+
jobs:
|
|
23
22
|
autoapprove:
|
|
24
|
-
if: github.event.pull_request.draft == false
|
|
23
|
+
if: github.event.pull_request.draft == false && (github.actor == 'asyncapi-bot' || github.actor == 'dependabot[bot]' || github.actor == 'dependabot-preview[bot]') && !contains(github.event.pull_request.labels.*.name, 'released')
|
|
25
24
|
runs-on: ubuntu-latest
|
|
26
25
|
steps:
|
|
27
26
|
- name: Autoapproving
|
|
28
27
|
uses: hmarr/auto-approve-action@v2
|
|
29
|
-
if: github.actor == 'asyncapi-bot' || github.actor == 'dependabot[bot]' || github.actor == 'dependabot-preview[bot]'
|
|
30
28
|
with:
|
|
31
29
|
github-token: "${{ secrets.GITHUB_TOKEN }}"
|
|
32
30
|
|
|
31
|
+
- name: Label autoapproved
|
|
32
|
+
uses: actions/github-script@v5
|
|
33
|
+
with:
|
|
34
|
+
github-token: ${{ secrets.GH_TOKEN }}
|
|
35
|
+
script: |
|
|
36
|
+
github.rest.issues.addLabels({
|
|
37
|
+
issue_number: context.issue.number,
|
|
38
|
+
owner: context.repo.owner,
|
|
39
|
+
repo: context.repo.repo,
|
|
40
|
+
labels: ['autoapproved']
|
|
41
|
+
})
|
|
42
|
+
|
|
33
43
|
automerge:
|
|
34
44
|
needs: [autoapprove]
|
|
45
|
+
if: github.event.pull_request.user.login == 'asyncapi-bot' || github.event.pull_request.user.login == 'dependabot[bot]' || github.event.pull_request.user.login == 'dependabot-preview[bot]'
|
|
35
46
|
runs-on: ubuntu-latest
|
|
36
47
|
steps:
|
|
37
48
|
- name: Automerging
|
|
38
49
|
uses: pascalgn/automerge-action@v0.13.0
|
|
39
|
-
if: github.actor == 'asyncapi-bot' || github.actor == 'dependabot[bot]' || github.actor == 'dependabot-preview[bot]'
|
|
40
50
|
env:
|
|
41
51
|
GITHUB_TOKEN: "${{ secrets.GH_TOKEN }}"
|
|
42
52
|
GITHUB_LOGIN: asyncapi-bot
|
|
43
53
|
MERGE_LABELS: ""
|
|
44
54
|
MERGE_METHOD: "squash"
|
|
45
|
-
MERGE_COMMIT_MESSAGE: "
|
|
55
|
+
MERGE_COMMIT_MESSAGE: "{pullRequest.title} (#{pullRequest.number})"
|
|
46
56
|
MERGE_RETRIES: "20"
|
|
47
|
-
MERGE_RETRY_SLEEP: "
|
|
57
|
+
MERGE_RETRY_SLEEP: "30000"
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
#This action is centrally managed in https://github.com/asyncapi/.github/
|
|
2
|
+
#Don't make changes to this file in this repo as they will be overwritten with changes made to the same file in above mentioned repo
|
|
3
|
+
|
|
4
|
+
#This workflow is designed to work with:
|
|
5
|
+
# - autoapprove and automerge workflows for dependabot and asyncapibot.
|
|
6
|
+
# - special release branches that we from time to time create in upstream repos. If we open up PRs for them from the very beginning of the release, the release branch will constantly update with new things from the destination branch they are opened against
|
|
7
|
+
|
|
8
|
+
# It uses GitHub Action that auto-updates pull requests branches, whenever changes are pushed to their destination branch.
|
|
9
|
+
#Autoupdating to latest destination branch works only in the context of upstream repo and not forks
|
|
10
|
+
|
|
11
|
+
name: autoupdate
|
|
12
|
+
|
|
13
|
+
on:
|
|
14
|
+
push:
|
|
15
|
+
branches-ignore:
|
|
16
|
+
- 'version-bump/**'
|
|
17
|
+
- 'dependabot/**'
|
|
18
|
+
- 'bot/**'
|
|
19
|
+
- 'all-contributors/**'
|
|
20
|
+
|
|
21
|
+
jobs:
|
|
22
|
+
autoupdate:
|
|
23
|
+
runs-on: ubuntu-latest
|
|
24
|
+
steps:
|
|
25
|
+
- name: Autoupdating
|
|
26
|
+
uses: docker://chinthakagodawita/autoupdate-action:v1
|
|
27
|
+
env:
|
|
28
|
+
GITHUB_TOKEN: '${{ secrets.GH_TOKEN }}'
|
|
29
|
+
PR_FILTER: "labelled"
|
|
30
|
+
PR_LABELS: "autoapproved"
|
|
31
|
+
PR_READY_STATE: "ready_for_review"
|
|
32
|
+
MERGE_CONFLICT_ACTION: "ignore"
|
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
#This action is centrally managed in https://github.com/asyncapi/.github/
|
|
2
|
+
#Don't make changes to this file in this repo as they will be overwritten with changes made to the same file in above mentioned repo
|
|
3
|
+
|
|
4
|
+
#Purpose of this action is to update npm package in libraries that use it. It is like dependabot for asyncapi npm modules only.
|
|
5
|
+
#It runs in a repo after merge of release commit and searches for other packages that use released package. Every found package gets updated with lates version
|
|
6
|
+
|
|
7
|
+
name: Bump package version in dependent repos - if Node project
|
|
2
8
|
|
|
3
9
|
on:
|
|
4
10
|
#It cannot run on release event as when release is created then version is not yet bumped in package.json
|
|
@@ -13,20 +19,14 @@ jobs:
|
|
|
13
19
|
steps:
|
|
14
20
|
- name: Checkout repo
|
|
15
21
|
uses: actions/checkout@v2
|
|
16
|
-
- name:
|
|
17
|
-
id:
|
|
18
|
-
run: echo "::set-output name=
|
|
19
|
-
-
|
|
20
|
-
id: extractname
|
|
21
|
-
run: echo "::set-output name=packname::$(npm run get:name --silent)"
|
|
22
|
-
- if: startsWith(github.event.commits[0].message, 'chore(release):')
|
|
22
|
+
- name: Check if Node.js project and has package.json
|
|
23
|
+
id: packagejson
|
|
24
|
+
run: test -e ./package.json && echo "::set-output name=exists::true" || echo "::set-output name=exists::false"
|
|
25
|
+
- if: steps.packagejson.outputs.exists == 'true' && startsWith(github.event.commits[0].message, 'chore(release):')
|
|
23
26
|
name: Bumping latest version of this package in other repositories
|
|
24
|
-
uses: derberg/
|
|
27
|
+
uses: derberg/npm-dependency-manager-for-your-github-org@v3
|
|
25
28
|
with:
|
|
26
29
|
github_token: ${{ secrets.GH_TOKEN }}
|
|
27
30
|
committer_username: asyncapi-bot
|
|
28
31
|
committer_email: info@asyncapi.io
|
|
29
|
-
#
|
|
30
|
-
commit_message_prod: 'fix: update ${{ steps.extractname.outputs.packname }} to ${{ steps.extractver.outputs.version }} version'
|
|
31
|
-
#This is commit message and PR title for repos where this package is in devDependencies
|
|
32
|
-
commit_message_dev: 'chore: update ${{ steps.extractname.outputs.packname }} to ${{ steps.extractver.outputs.version }} version'
|
|
32
|
+
repos_to_ignore: html-template #this is temporary until react component releases 1.0, then it can be removed
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
#This workflow is centrally managed in https://github.com/asyncapi/.github/
|
|
2
|
+
#Don't make changes to this file in this repo as they will be overwritten with changes made to the same file in above mentioned repo
|
|
3
|
+
|
|
4
|
+
name: Create help comment
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
issue_comment:
|
|
8
|
+
types:
|
|
9
|
+
- created
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
create_help_comment_pr:
|
|
13
|
+
if: ${{ github.event.issue.pull_request && contains(github.event.comment.body, '/help') && github.actor != 'asyncapi-bot' }}
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions-ecosystem/action-create-comment@v1
|
|
17
|
+
with:
|
|
18
|
+
github_token: ${{ secrets.GH_TOKEN }}
|
|
19
|
+
body: |
|
|
20
|
+
Hello, @${{ github.actor }}! 👋🏼
|
|
21
|
+
|
|
22
|
+
I'm Genie from the magic lamp. Looks like somebody needs a hand! 🆘
|
|
23
|
+
|
|
24
|
+
At the moment the following comments are supported in pull requests:
|
|
25
|
+
|
|
26
|
+
- `/ready-to-merge` or `/rtm` - This comment will trigger automerge of PR in case all required checks are green, approvals in place and do-not-merge label is not added
|
|
27
|
+
- `/do-not-merge` or `/dnm` - This comment will block automerging even if all conditions are met and ready-to-merge label is added
|
|
28
|
+
create_help_comment_issue:
|
|
29
|
+
if: ${{ !github.event.issue.pull_request && contains(github.event.comment.body, '/help') && github.actor != 'asyncapi-bot' }}
|
|
30
|
+
runs-on: ubuntu-latest
|
|
31
|
+
steps:
|
|
32
|
+
- uses: actions-ecosystem/action-create-comment@v1
|
|
33
|
+
with:
|
|
34
|
+
github_token: ${{ secrets.GH_TOKEN }}
|
|
35
|
+
body: |
|
|
36
|
+
Hello, @${{ github.actor }}! 👋🏼
|
|
37
|
+
|
|
38
|
+
I'm Genie from the magic lamp. Looks like somebody needs a hand! 🆘
|
|
39
|
+
|
|
40
|
+
At the moment the following comments are supported in issues:
|
|
41
|
+
|
|
42
|
+
- `/good-first-issue {js | ts | java | go | docs | design | ci-cd} ` or `/gfi {js | ts | java | go | docs | design | ci-cd} ` - label an issue as a `good first issue`.
|
|
43
|
+
example: `/gfi js` or `/good-first-issue ci-cd`
|
|
@@ -16,6 +16,10 @@ jobs:
|
|
|
16
16
|
matrix:
|
|
17
17
|
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
18
18
|
steps:
|
|
19
|
+
- name: Set git to use LF #to once and for all finish neverending fight between Unix and Windows
|
|
20
|
+
run: |
|
|
21
|
+
git config --global core.autocrlf false
|
|
22
|
+
git config --global core.eol lf
|
|
19
23
|
- name: Checkout repository
|
|
20
24
|
uses: actions/checkout@v2
|
|
21
25
|
- name: Check if Node.js project and has package.json
|
|
@@ -24,9 +28,11 @@ jobs:
|
|
|
24
28
|
shell: bash
|
|
25
29
|
- if: steps.packagejson.outputs.exists == 'true'
|
|
26
30
|
name: Setup Node.js
|
|
27
|
-
uses: actions/setup-node@
|
|
31
|
+
uses: actions/setup-node@v2
|
|
28
32
|
with:
|
|
29
33
|
node-version: 14
|
|
34
|
+
cache: 'npm'
|
|
35
|
+
cache-dependency-path: '**/package-lock.json'
|
|
30
36
|
- if: steps.packagejson.outputs.exists == 'true'
|
|
31
37
|
name: Install dependencies
|
|
32
38
|
id: first-installation
|
|
@@ -10,7 +10,10 @@ on:
|
|
|
10
10
|
# below lines are not enough to have release supported for these branches
|
|
11
11
|
# make sure configuration of `semantic-release` package mentiones these branches
|
|
12
12
|
- next
|
|
13
|
-
-
|
|
13
|
+
- next-major
|
|
14
|
+
- beta
|
|
15
|
+
- alpha
|
|
16
|
+
- '**-release' # custom
|
|
14
17
|
|
|
15
18
|
jobs:
|
|
16
19
|
|
|
@@ -21,6 +24,10 @@ jobs:
|
|
|
21
24
|
matrix:
|
|
22
25
|
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
23
26
|
steps:
|
|
27
|
+
- name: Set git to use LF #to once and for all finish neverending fight between Unix and Windows
|
|
28
|
+
run: |
|
|
29
|
+
git config --global core.autocrlf false
|
|
30
|
+
git config --global core.eol lf
|
|
24
31
|
- name: Checkout repository
|
|
25
32
|
uses: actions/checkout@v2
|
|
26
33
|
- name: Check if Node.js project and has package.json
|
|
@@ -29,9 +36,11 @@ jobs:
|
|
|
29
36
|
shell: bash
|
|
30
37
|
- if: steps.packagejson.outputs.exists == 'true'
|
|
31
38
|
name: Setup Node.js
|
|
32
|
-
uses: actions/setup-node@
|
|
39
|
+
uses: actions/setup-node@v2
|
|
33
40
|
with:
|
|
34
41
|
node-version: 14
|
|
42
|
+
cache: 'npm'
|
|
43
|
+
cache-dependency-path: '**/package-lock.json'
|
|
35
44
|
- if: steps.packagejson.outputs.exists == 'true'
|
|
36
45
|
name: Install dependencies
|
|
37
46
|
run: npm install
|
|
@@ -41,9 +50,13 @@ jobs:
|
|
|
41
50
|
|
|
42
51
|
release:
|
|
43
52
|
needs: test
|
|
44
|
-
name: Publish to NPM and
|
|
53
|
+
name: Publish to any of NPM, Github, and Docker Hub
|
|
45
54
|
runs-on: ubuntu-latest
|
|
46
55
|
steps:
|
|
56
|
+
- name: Set git to use LF #to once and for all finish neverending fight between Unix and Windows
|
|
57
|
+
run: |
|
|
58
|
+
git config --global core.autocrlf false
|
|
59
|
+
git config --global core.eol lf
|
|
47
60
|
- name: Checkout repository
|
|
48
61
|
uses: actions/checkout@v2
|
|
49
62
|
- name: Check if Node.js project and has package.json
|
|
@@ -58,13 +71,15 @@ jobs:
|
|
|
58
71
|
name: Install dependencies
|
|
59
72
|
run: npm install
|
|
60
73
|
- if: steps.packagejson.outputs.exists == 'true'
|
|
61
|
-
name:
|
|
74
|
+
name: Publish to any of NPM, Github, and Docker Hub
|
|
62
75
|
id: release
|
|
63
76
|
env:
|
|
64
77
|
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
|
|
65
78
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
79
|
+
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
|
80
|
+
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
|
|
66
81
|
GIT_AUTHOR_NAME: asyncapi-bot
|
|
67
82
|
GIT_AUTHOR_EMAIL: info@asyncapi.io
|
|
68
83
|
GIT_COMMITTER_NAME: asyncapi-bot
|
|
69
84
|
GIT_COMMITTER_EMAIL: info@asyncapi.io
|
|
70
|
-
run: npm run release
|
|
85
|
+
run: npm run release
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
#This action is centrally managed in https://github.com/asyncapi/.github/
|
|
2
2
|
#Don't make changes to this file in this repo as they will be overwritten with changes made to the same file in above mentioned repo
|
|
3
|
+
|
|
4
|
+
#This action notifies community on slack whenever there is a new issue, PR or discussion started in given repository
|
|
3
5
|
name: Notify slack
|
|
4
6
|
|
|
5
7
|
on:
|
|
@@ -10,6 +12,9 @@ on:
|
|
|
10
12
|
pull_request_target:
|
|
11
13
|
types: [opened, reopened, ready_for_review]
|
|
12
14
|
|
|
15
|
+
discussion:
|
|
16
|
+
types: [created]
|
|
17
|
+
|
|
13
18
|
jobs:
|
|
14
19
|
|
|
15
20
|
issue:
|
|
@@ -47,3 +52,21 @@ jobs:
|
|
|
47
52
|
SLACK_TITLE: 💪 New Pull Request 💪
|
|
48
53
|
SLACK_MESSAGE: ${{steps.prmarkdown.outputs.text}}
|
|
49
54
|
MSG_MINIMAL: true
|
|
55
|
+
|
|
56
|
+
discussion:
|
|
57
|
+
if: github.event_name == 'discussion' && github.actor != 'asyncapi-bot' && github.actor != 'dependabot[bot]' && github.actor != 'dependabot-preview[bot]'
|
|
58
|
+
name: On every new pull request
|
|
59
|
+
runs-on: ubuntu-latest
|
|
60
|
+
steps:
|
|
61
|
+
- name: Convert markdown to slack markdown for pull request
|
|
62
|
+
uses: LoveToKnow/slackify-markdown-action@v1.0.0
|
|
63
|
+
id: discussionmarkdown
|
|
64
|
+
with:
|
|
65
|
+
text: "[${{github.event.discussion.title}}](${{github.event.discussion.html_url}}) \n ${{github.event.discussion.body}}"
|
|
66
|
+
- name: Send info about pull request
|
|
67
|
+
uses: rtCamp/action-slack-notify@v2
|
|
68
|
+
env:
|
|
69
|
+
SLACK_WEBHOOK: ${{secrets.SLACK_GITHUB_NEWISSUEPR}}
|
|
70
|
+
SLACK_TITLE: 💬 New Discussion 💬
|
|
71
|
+
SLACK_MESSAGE: ${{steps.discussionmarkdown.outputs.text}}
|
|
72
|
+
MSG_MINIMAL: true
|
|
@@ -11,20 +11,32 @@ jobs:
|
|
|
11
11
|
stale:
|
|
12
12
|
runs-on: ubuntu-latest
|
|
13
13
|
steps:
|
|
14
|
-
- uses: actions/stale@
|
|
14
|
+
- uses: actions/stale@v4.0.0
|
|
15
15
|
with:
|
|
16
16
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
17
17
|
stale-issue-message: |
|
|
18
18
|
This issue has been automatically marked as stale because it has not had recent activity :sleeping:
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
|
|
20
|
+
It will be closed in 120 days if no further activity occurs. To unstale this issue, add a comment with a detailed explanation.
|
|
21
|
+
|
|
22
|
+
There can be many reasons why some specific issue has no activity. The most probable cause is lack of time, not lack of interest. AsyncAPI Initiative is a Linux Foundation project not owned by a single for-profit company. It is a community-driven initiative ruled under [open governance model](https://github.com/asyncapi/community/blob/master/CHARTER.md).
|
|
23
|
+
|
|
24
|
+
Let us figure out together how to push this issue forward. Connect with us through [one of many communication channels](https://github.com/asyncapi/community/issues/1) we established here.
|
|
25
|
+
|
|
26
|
+
Thank you for your patience :heart:
|
|
21
27
|
stale-pr-message: |
|
|
22
28
|
This pull request has been automatically marked as stale because it has not had recent activity :sleeping:
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
29
|
+
|
|
30
|
+
It will be closed in 120 days if no further activity occurs. To unstale this pull request, add a comment with detailed explanation.
|
|
31
|
+
|
|
32
|
+
There can be many reasons why some specific pull request has no activity. The most probable cause is lack of time, not lack of interest. AsyncAPI Initiative is a Linux Foundation project not owned by a single for-profit company. It is a community-driven initiative ruled under [open governance model](https://github.com/asyncapi/community/blob/master/CHARTER.md).
|
|
33
|
+
|
|
34
|
+
Let us figure out together how to push this pull request forward. Connect with us through [one of many communication channels](https://github.com/asyncapi/community/issues/1) we established here.
|
|
35
|
+
|
|
36
|
+
Thank you for your patience :heart:
|
|
37
|
+
days-before-stale: 120
|
|
38
|
+
days-before-close: 120
|
|
27
39
|
stale-issue-label: stale
|
|
28
40
|
stale-pr-label: stale
|
|
29
|
-
exempt-issue-
|
|
30
|
-
exempt-pr-
|
|
41
|
+
exempt-issue-labels: keep-open
|
|
42
|
+
exempt-pr-labels: keep-open
|
|
@@ -15,16 +15,69 @@ jobs:
|
|
|
15
15
|
welcome:
|
|
16
16
|
runs-on: ubuntu-latest
|
|
17
17
|
steps:
|
|
18
|
-
- uses: actions/
|
|
18
|
+
- uses: actions/github-script@v3
|
|
19
19
|
with:
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
Welcome to AsyncAPI. Thanks a lot for reporting your first issue. Please check out our [contributors guide](https://github.com/asyncapi
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
20
|
+
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
21
|
+
script: |
|
|
22
|
+
const issueMessage = `Welcome to AsyncAPI. Thanks a lot for reporting your first issue. Please check out our [contributors guide](https://github.com/asyncapi/community/blob/master/CONTRIBUTING.md) and the instructions about a [basic recommended setup](https://github.com/asyncapi/.github/blob/master/git-workflow.md) useful for opening a pull request.<br />Keep in mind there are also other channels you can use to interact with AsyncAPI community. For more details check out [this issue](https://github.com/asyncapi/asyncapi/issues/115).`;
|
|
23
|
+
const prMessage = `Welcome to AsyncAPI. Thanks a lot for creating your first pull request. Please check out our [contributors guide](https://github.com/asyncapi/community/blob/master/CONTRIBUTING.md) useful for opening a pull request.<br />Keep in mind there are also other channels you can use to interact with AsyncAPI community. For more details check out [this issue](https://github.com/asyncapi/asyncapi/issues/115).`;
|
|
24
|
+
if (!issueMessage && !prMessage) {
|
|
25
|
+
throw new Error('Action must have at least one of issue-message or pr-message set');
|
|
26
|
+
}
|
|
27
|
+
const isIssue = !!context.payload.issue;
|
|
28
|
+
let isFirstContribution;
|
|
29
|
+
if (isIssue) {
|
|
30
|
+
const query = `query($owner:String!, $name:String!, $contributer:String!) {
|
|
31
|
+
repository(owner:$owner, name:$name){
|
|
32
|
+
issues(first: 1, filterBy: {createdBy:$contributer}){
|
|
33
|
+
totalCount
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}`;
|
|
37
|
+
const variables = {
|
|
38
|
+
owner: context.repo.owner,
|
|
39
|
+
name: context.repo.repo,
|
|
40
|
+
contributer: context.payload.sender.login
|
|
41
|
+
};
|
|
42
|
+
const { repository: { issues: { totalCount } } } = await github.graphql(query, variables);
|
|
43
|
+
isFirstContribution = totalCount === 1;
|
|
44
|
+
} else {
|
|
45
|
+
const query = `query($qstr: String!) {
|
|
46
|
+
search(query: $qstr, type: ISSUE, first: 1) {
|
|
47
|
+
issueCount
|
|
48
|
+
}
|
|
49
|
+
}`;
|
|
50
|
+
const variables = {
|
|
51
|
+
"qstr": `repo:${context.repo.owner}/${context.repo.repo} type:pr author:${context.payload.sender.login}`,
|
|
52
|
+
};
|
|
53
|
+
const { search: { issueCount } } = await github.graphql(query, variables);
|
|
54
|
+
isFirstContribution = issueCount === 1;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
if (!isFirstContribution) {
|
|
58
|
+
console.log(`Not the users first contribution.`);
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
const message = isIssue ? issueMessage : prMessage;
|
|
62
|
+
// Add a comment to the appropriate place
|
|
63
|
+
if (isIssue) {
|
|
64
|
+
const issueNumber = context.payload.issue.number;
|
|
65
|
+
console.log(`Adding message: ${message} to issue #${issueNumber}`);
|
|
66
|
+
await github.issues.createComment({
|
|
67
|
+
owner: context.payload.repository.owner.login,
|
|
68
|
+
repo: context.payload.repository.name,
|
|
69
|
+
issue_number: issueNumber,
|
|
70
|
+
body: message
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
const pullNumber = context.payload.pull_request.number;
|
|
75
|
+
console.log(`Adding message: ${message} to pull request #${pullNumber}`);
|
|
76
|
+
await github.pulls.createReview({
|
|
77
|
+
owner: context.payload.repository.owner.login,
|
|
78
|
+
repo: context.payload.repository.name,
|
|
79
|
+
pull_number: pullNumber,
|
|
80
|
+
body: message,
|
|
81
|
+
event: 'COMMENT'
|
|
82
|
+
});
|
|
83
|
+
}
|