From b9c192e8c71631f89dbdcc5161b9c064bd37dc40 Mon Sep 17 00:00:00 2001 From: asyncapi-bot <61865014+asyncapi-bot@users.noreply.github.com> Date: Thu, 22 Apr 2021 17:50:40 +0200 Subject: [PATCH] ci: update global workflows (#2) Co-authored-by: asyncapi-bot --- .github/workflows/automerge-orphans.yml | 64 ++++++++++++++++ .github/workflows/automerge.yml | 47 ++++++++++++ .github/workflows/if-go-pr-testing.yml | 58 ++++++++++++++ .github/workflows/if-nodejs-pr-testing.yml | 41 ++++++++++ .github/workflows/if-nodejs-release.yml | 66 ++++++++++++++++ .github/workflows/if-nodejs-version-bump.yml | 45 +++++++++++ .../workflows/issues-prs-notifications.yml | 49 ++++++++++++ .github/workflows/lint-pr-title.yml | 22 ++++++ .github/workflows/release-announcements.yml | 76 +++++++++++++++++++ .github/workflows/sentiment-analysis.yml | 44 +++++++++++ .github/workflows/stale-issues-prs.yml | 30 ++++++++ .../workflows/welcome-first-time-contrib.yml | 30 ++++++++ 12 files changed, 572 insertions(+) create mode 100644 .github/workflows/automerge-orphans.yml create mode 100644 .github/workflows/automerge.yml create mode 100644 .github/workflows/if-go-pr-testing.yml create mode 100644 .github/workflows/if-nodejs-pr-testing.yml create mode 100644 .github/workflows/if-nodejs-release.yml create mode 100644 .github/workflows/if-nodejs-version-bump.yml create mode 100644 .github/workflows/issues-prs-notifications.yml create mode 100644 .github/workflows/lint-pr-title.yml create mode 100644 .github/workflows/release-announcements.yml create mode 100644 .github/workflows/sentiment-analysis.yml create mode 100644 .github/workflows/stale-issues-prs.yml create mode 100644 .github/workflows/welcome-first-time-contrib.yml diff --git a/.github/workflows/automerge-orphans.yml b/.github/workflows/automerge-orphans.yml new file mode 100644 index 0000000..d712c13 --- /dev/null +++ b/.github/workflows/automerge-orphans.yml @@ -0,0 +1,64 @@ +#This action is centrally managed in https://github.com/asyncapi/.github/ +#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 + +name: 'Notify on failing automerge' + +on: + schedule: + - cron: "0 0 * * *" + +jobs: + identify-orphans: + name: Find orphans and notify + runs-on: ubuntu-latest + steps: + - name: Get list of orphans + uses: actions/github-script@v3 + id: orphans + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + const query = `query($owner:String!, $name:String!) { + repository(owner:$owner, name:$name){ + pullRequests(first: 100){ + nodes{ + title + url + author { + resourcePath + } + state + } + } + } + }`; + const variables = { + owner: context.repo.owner, + name: context.repo.repo + }; + const { repository: { pullRequests: { nodes } } } = await github.graphql(query, variables); + + let orphans = nodes.filter((pr)=> pr.state === 'OPEN' && (pr.author.resourcePath === '/asyncapi-bot' || pr.author.resourcePath === '/apps/dependabot')) + + if (orphans.length) { + core.setOutput('found', 'true'); + //Yes, this is very naive approach to assume there is just one PR causing issues, there can be a case that more PRs are affected the same day + //The thing is that handling multiple PRs will increase a complexity in this PR that in my opinion we should avoid + //The other PRs will be reported the next day the action runs, or person that checks first url will notice the other ones + core.setOutput('url', orphans[0].url); + core.setOutput('title', orphans[0].title); + } + - if: steps.orphans.outputs.found == 'true' + name: Convert markdown to slack markdown + uses: LoveToKnow/slackify-markdown-action@v1.0.0 + id: issuemarkdown + with: + text: "-> [${{steps.orphans.outputs.title}}](${{steps.orphans.outputs.url}})" + - if: steps.orphans.outputs.found == 'true' + name: Send info about orphan to slack + uses: rtCamp/action-slack-notify@v2 + env: + SLACK_WEBHOOK: ${{secrets.SLACK_GITHUB_NEWISSUEPR}} + SLACK_TITLE: 🚨 Not merged PR that should be automerged 🚨 + SLACK_MESSAGE: ${{steps.issuemarkdown.outputs.text}} + MSG_MINIMAL: true \ No newline at end of file diff --git a/.github/workflows/automerge.yml b/.github/workflows/automerge.yml new file mode 100644 index 0000000..19c8d18 --- /dev/null +++ b/.github/workflows/automerge.yml @@ -0,0 +1,47 @@ +#This action is centrally managed in https://github.com/asyncapi/.github/ +#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 + +name: Automerge release bump PR + +on: + pull_request_target: + types: + - labeled + - unlabeled + - synchronize + - opened + - edited + - ready_for_review + - reopened + - unlocked + pull_request_review: + types: + - submitted + +jobs: + + autoapprove: + if: github.event.pull_request.draft == false + runs-on: ubuntu-latest + steps: + - name: Autoapproving + uses: hmarr/auto-approve-action@v2 + if: github.actor == 'asyncapi-bot' || github.actor == 'dependabot[bot]' || github.actor == 'dependabot-preview[bot]' + with: + github-token: "${{ secrets.GITHUB_TOKEN }}" + + automerge: + needs: [autoapprove] + runs-on: ubuntu-latest + steps: + - name: Automerging + uses: pascalgn/automerge-action@v0.13.0 + if: github.actor == 'asyncapi-bot' || github.actor == 'dependabot[bot]' || github.actor == 'dependabot-preview[bot]' + env: + GITHUB_TOKEN: "${{ secrets.GH_TOKEN }}" + GITHUB_LOGIN: asyncapi-bot + MERGE_LABELS: "" + MERGE_METHOD: "squash" + MERGE_COMMIT_MESSAGE: "pull-request-title" + MERGE_RETRIES: "20" + MERGE_RETRY_SLEEP: "20000" \ No newline at end of file diff --git a/.github/workflows/if-go-pr-testing.yml b/.github/workflows/if-go-pr-testing.yml new file mode 100644 index 0000000..4a4078f --- /dev/null +++ b/.github/workflows/if-go-pr-testing.yml @@ -0,0 +1,58 @@ +#This action is centrally managed in https://github.com/asyncapi/.github/ +#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 +#It does magic only if there is go.mod file in the root of the project +name: PR testing - if Go project + +on: + pull_request: + types: [opened, reopened, synchronize, ready_for_review] + +jobs: + lint: + if: github.event.pull_request.draft == false + name: lint + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v2 + - name: Check if Go project and has go.mod + id: gomod + run: test -e ./go.mod && echo "::set-output name=exists::true" || echo "::set-output name=exists::false" + shell: bash + - if: steps.gomod.outputs.exists == 'true' + name: Setup Go + uses: actions/setup-go@v2.1.3 + with: + go-version: 1.16 + - if: steps.gomod.outputs.exists == 'true' + name: golangci-lint + uses: golangci/golangci-lint-action@v2 # golangci-lint version extracted from go.mod. `latest` if missing. + with: + skip-go-installation: true # we wanna control the version of Go in use + + test: + if: github.event.pull_request.draft == false + name: ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + steps: + - name: Checkout repository + uses: actions/checkout@v2 + - name: Check if Go project and has go.mod + id: gomod + run: test -e ./go.mod && echo "::set-output name=exists::true" || echo "::set-output name=exists::false" + shell: bash + - if: steps.gomod.outputs.exists == 'true' + name: Setup Go + uses: actions/setup-go@v2.1.3 + with: + go-version: 1.16 + - if: steps.gomod.outputs.exists == 'true' + name: Build + run: go build -v ./... + - if: steps.gomod.outputs.exists == 'true' + name: Test + run: go test -v ./... + diff --git a/.github/workflows/if-nodejs-pr-testing.yml b/.github/workflows/if-nodejs-pr-testing.yml new file mode 100644 index 0000000..b39bfea --- /dev/null +++ b/.github/workflows/if-nodejs-pr-testing.yml @@ -0,0 +1,41 @@ +#This action is centrally managed in https://github.com/asyncapi/.github/ +#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 +#It does magic only if there is package.json file in the root of the project +name: PR testing - if Node project + +on: + pull_request: + types: [opened, reopened, synchronize, ready_for_review] + +jobs: + test: + if: github.event.pull_request.draft == false + name: ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + steps: + - name: Checkout repository + uses: actions/checkout@v2 + - name: Check if Node.js project and has package.json + id: packagejson + run: test -e ./package.json && echo "::set-output name=exists::true" || echo "::set-output name=exists::false" + shell: bash + - if: steps.packagejson.outputs.exists == 'true' + name: Setup Node.js + uses: actions/setup-node@v1 + with: + node-version: 14 + - if: steps.packagejson.outputs.exists == 'true' + name: Install dependencies + run: npm install --loglevel verbose + - if: steps.packagejson.outputs.exists == 'true' + name: Test + run: npm test + - if: steps.packagejson.outputs.exists == 'true' + name: Run linter + run: npm run lint + - if: steps.packagejson.outputs.exists == 'true' + name: Run release assets generation to make sure PR does not break it + run: npm run generate:assets diff --git a/.github/workflows/if-nodejs-release.yml b/.github/workflows/if-nodejs-release.yml new file mode 100644 index 0000000..7da5645 --- /dev/null +++ b/.github/workflows/if-nodejs-release.yml @@ -0,0 +1,66 @@ +#This action is centrally managed in https://github.com/asyncapi/.github/ +#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 +#It does magic only if there is package.json file in the root of the project +name: Release - if Node project + +on: + push: + branches: + - master + +jobs: + + test: + name: Test on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + steps: + - name: Checkout repository + uses: actions/checkout@v2 + - name: Check if Node.js project and has package.json + id: packagejson + run: test -e ./package.json && echo "::set-output name=exists::true" || echo "::set-output name=exists::false" + shell: bash + - if: steps.packagejson.outputs.exists == 'true' + name: Setup Node.js + uses: actions/setup-node@v1 + with: + node-version: 14 + - if: steps.packagejson.outputs.exists == 'true' + name: Install dependencies + run: npm install + - if: steps.packagejson.outputs.exists == 'true' + name: Run test + run: npm test + + release: + needs: test + name: Publish to NPM and GitHub + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v2 + - name: Check if Node.js project and has package.json + id: packagejson + run: test -e ./package.json && echo "::set-output name=exists::true" || echo "::set-output name=exists::false" + - if: steps.packagejson.outputs.exists == 'true' + name: Setup Node.js + uses: actions/setup-node@v1 + with: + node-version: 14 + - if: steps.packagejson.outputs.exists == 'true' + name: Install dependencies + run: npm install + - if: steps.packagejson.outputs.exists == 'true' + name: Release to NPM and GitHub + id: release + env: + GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + GIT_AUTHOR_NAME: asyncapi-bot + GIT_AUTHOR_EMAIL: info@asyncapi.io + GIT_COMMITTER_NAME: asyncapi-bot + GIT_COMMITTER_EMAIL: info@asyncapi.io + run: npm run release \ No newline at end of file diff --git a/.github/workflows/if-nodejs-version-bump.yml b/.github/workflows/if-nodejs-version-bump.yml new file mode 100644 index 0000000..34d57df --- /dev/null +++ b/.github/workflows/if-nodejs-version-bump.yml @@ -0,0 +1,45 @@ +#This action is centrally managed in https://github.com/asyncapi/.github/ +#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 +#It does magic only if there is package.json file in the root of the project +name: Version bump - if Node.js project + +on: + release: + types: + - published + +jobs: + version_bump: + name: Generate assets and bump + runs-on: ubuntu-latest + steps: + - name: Checkout repo + uses: actions/checkout@v2 + with: + ref: master + - name: Check if Node.js project and has package.json + id: packagejson + run: test -e ./package.json && echo "::set-output name=exists::true" || echo "::set-output name=exists::false" + - if: steps.packagejson.outputs.exists == 'true' + name: Install dependencies + run: npm install + - if: steps.packagejson.outputs.exists == 'true' + name: Assets generation + run: npm run generate:assets + - if: steps.packagejson.outputs.exists == 'true' + name: Bump version in package.json + # There is no need to substract "v" from the tag as version script handles it + # When adding "bump:version" script in package.json, make sure no tags are added by default (--no-git-tag-version) as they are already added by release workflow + # When adding "bump:version" script in package.json, make sure --allow-same-version is set in case someone forgot and updated package.json manually and we want to avoide this action to fail and raise confusion + run: VERSION=${{github.event.release.tag_name}} npm run bump:version + - if: steps.packagejson.outputs.exists == 'true' + name: Create Pull Request with updated asset files including package.json + uses: peter-evans/create-pull-request@v3 + with: + token: ${{ secrets.GH_TOKEN }} + commit-message: 'chore(release): ${{github.event.release.tag_name}}' + committer: asyncapi-bot + author: asyncapi-bot + title: 'chore(release): ${{github.event.release.tag_name}}' + body: 'Version bump in package.json for release [${{github.event.release.tag_name}}](${{github.event.release.html_url}})' + branch: version-bump/${{github.event.release.tag_name}} \ No newline at end of file diff --git a/.github/workflows/issues-prs-notifications.yml b/.github/workflows/issues-prs-notifications.yml new file mode 100644 index 0000000..8577db6 --- /dev/null +++ b/.github/workflows/issues-prs-notifications.yml @@ -0,0 +1,49 @@ +#This action is centrally managed in https://github.com/asyncapi/.github/ +#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 +name: Notify slack + +on: + + issues: + types: [opened, reopened] + + pull_request_target: + types: [opened, reopened, ready_for_review] + +jobs: + + issue: + if: github.event_name == 'issues' && github.actor != 'asyncapi-bot' && github.actor != 'dependabot[bot]' && github.actor != 'dependabot-preview[bot]' + name: On every new issue + runs-on: ubuntu-latest + steps: + - name: Convert markdown to slack markdown for issue + uses: LoveToKnow/slackify-markdown-action@v1.0.0 + id: issuemarkdown + with: + text: "[${{github.event.issue.title}}](${{github.event.issue.html_url}}) \n ${{github.event.issue.body}}" + - name: Send info about issue + uses: rtCamp/action-slack-notify@v2 + env: + SLACK_WEBHOOK: ${{secrets.SLACK_GITHUB_NEWISSUEPR}} + SLACK_TITLE: πŸ› New Issue πŸ› + SLACK_MESSAGE: ${{steps.issuemarkdown.outputs.text}} + MSG_MINIMAL: true + + pull_request: + if: github.event_name == 'pull_request_target' && github.actor != 'asyncapi-bot' && github.actor != 'dependabot[bot]' && github.actor != 'dependabot-preview[bot]' + name: On every new pull request + runs-on: ubuntu-latest + steps: + - name: Convert markdown to slack markdown for pull request + uses: LoveToKnow/slackify-markdown-action@v1.0.0 + id: prmarkdown + with: + text: "[${{github.event.pull_request.title}}](${{github.event.pull_request.html_url}}) \n ${{github.event.pull_request.body}}" + - name: Send info about pull request + uses: rtCamp/action-slack-notify@v2 + env: + SLACK_WEBHOOK: ${{secrets.SLACK_GITHUB_NEWISSUEPR}} + SLACK_TITLE: πŸ’ͺ New Pull Request πŸ’ͺ + SLACK_MESSAGE: ${{steps.prmarkdown.outputs.text}} + MSG_MINIMAL: true diff --git a/.github/workflows/lint-pr-title.yml b/.github/workflows/lint-pr-title.yml new file mode 100644 index 0000000..fbee657 --- /dev/null +++ b/.github/workflows/lint-pr-title.yml @@ -0,0 +1,22 @@ +#This action is centrally managed in https://github.com/asyncapi/.github/ +#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 + +name: Lint PR title + +on: + + pull_request_target: + types: [opened, reopened, synchronize, edited, ready_for_review] + +jobs: + + lint: + runs-on: ubuntu-latest + steps: + - uses: amannn/action-semantic-pull-request@v3.2.5 + env: + GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} + with: + subjectPattern: ^(?![A-Z]).+$ + subjectPatternError: | + The subject "{subject}" found in the pull request title "{title}" should start with a lowercase character. diff --git a/.github/workflows/release-announcements.yml b/.github/workflows/release-announcements.yml new file mode 100644 index 0000000..653ca28 --- /dev/null +++ b/.github/workflows/release-announcements.yml @@ -0,0 +1,76 @@ +#This action is centrally managed in https://github.com/asyncapi/.github/ +#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 +name: 'Announce releases in different channels' + +on: + release: + types: + - published + +jobs: + + slack: + name: Slack - notify on every release + runs-on: ubuntu-latest + steps: + - name: Convert markdown to slack markdown for issue + uses: LoveToKnow/slackify-markdown-action@v1.0.0 + id: markdown + with: + text: "[${{github.event.release.tag_name}}](${{github.event.release.html_url}}) \n ${{ github.event.release.body }}" + - name: Send info about release to Slack + uses: rtCamp/action-slack-notify@v2 + env: + SLACK_WEBHOOK: ${{ secrets.SLACK_RELEASES }} + SLACK_TITLE: Release ${{github.event.release.tag_name}} for ${{github.repository}} is out in the wild 😱πŸ’ͺπŸΎπŸŽ‚ + SLACK_MESSAGE: ${{steps.markdown.outputs.text}} + MSG_MINIMAL: true + + twitter: + name: Twitter - notify on minor and major releases + runs-on: ubuntu-latest + steps: + - name: Checkout repo + uses: actions/checkout@v2 + - name: Get version of last and previous release + uses: actions/github-script@v3 + id: versions + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + const query = `query($owner:String!, $name:String!) { + repository(owner:$owner, name:$name){ + releases(first: 2, orderBy: {field: CREATED_AT, direction: DESC}) { + nodes { + name + } + } + } + }`; + const variables = { + owner: context.repo.owner, + name: context.repo.repo + }; + const { repository: { releases: { nodes } } } = await github.graphql(query, variables); + core.setOutput('lastver', nodes[0].name); + // In case of first release in the package, there is no such thing as previous error, so we set info about previous version only once we have it + // We should tweet about the release no matter of the type as it is initial release + if (nodes.length != 1) core.setOutput('previousver', nodes[1].name); + - name: Identify release type + id: releasetype + # if previousver is not provided then this steps just logs information about missing version, no errors + run: echo "::set-output name=type::$(npx -q -p semver-diff-cli semver-diff ${{steps.versions.outputs.previousver}} ${{steps.versions.outputs.lastver}})" + - name: Get name of the person that is behind the newly released version + id: author + run: echo "::set-output name=name::$(git log -1 --pretty=format:'%an')" + - name: Publish information about the release to Twitter # tweet only if detected version change is not a patch + # tweet goes out even if the type is not major or minor but "You need provide version number to compare." + # it is ok, it just means we did not identify previous version as we are tweeting out information about the release for the first time + if: steps.releasetype.outputs.type != 'null' && steps.releasetype.outputs.type != 'patch' # null means that versions are the same + uses: m1ner79/Github-Twittction@v1.0.1 + with: + twitter_status: "Release ${{github.event.release.tag_name}} for ${{github.repository}} is out in the wild 😱πŸ’ͺπŸΎπŸŽ‚\n\nThank you for the contribution ${{ steps.author.outputs.name }} ${{github.event.release.html_url}}" + twitter_consumer_key: ${{ secrets.TWITTER_CONSUMER_KEY }} + twitter_consumer_secret: ${{ secrets.TWITTER_CONSUMER_SECRET }} + twitter_access_token_key: ${{ secrets.TWITTER_ACCESS_TOKEN_KEY }} + twitter_access_token_secret: ${{ secrets.TWITTER_ACCESS_TOKEN_SECRET }} \ No newline at end of file diff --git a/.github/workflows/sentiment-analysis.yml b/.github/workflows/sentiment-analysis.yml new file mode 100644 index 0000000..431d193 --- /dev/null +++ b/.github/workflows/sentiment-analysis.yml @@ -0,0 +1,44 @@ +#This action is centrally managed in https://github.com/asyncapi/.github/ +#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 + +name: 'Sentiment Analysis' + +on: + issue_comment: + types: + - created + - edited + issues: + types: + - opened + - edited + pull_request: + types: + - opened + - edited + pull_request_review: + types: + - submitted + - edited + pull_request_review_comment: + types: + - created + - edited +jobs: + test: + name: Checking sentiments + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Check sentiment + uses: derberg/code-of-conduct-sentiment-analysis-github-action@v1 + id: sentiments + with: + gcp_key: ${{ secrets.GCP_KEY_SENTIMENT }} + - uses: someimportantcompany/github-actions-slack-message@v1 + # this step runs only if sentiment is a negative number + if: steps.sentiments.outputs.sentiment < -0.6 + with: + webhook-url: ${{ secrets.SLACK_SENTIMENTS }} + text: Here ${{steps.sentiments.outputs.source}} you can find a potential negative text that requires your attention as the sentiment analysis score is ${{steps.sentiments.outputs.sentiment}} + color: orange \ No newline at end of file diff --git a/.github/workflows/stale-issues-prs.yml b/.github/workflows/stale-issues-prs.yml new file mode 100644 index 0000000..f1c6a83 --- /dev/null +++ b/.github/workflows/stale-issues-prs.yml @@ -0,0 +1,30 @@ +#This action is centrally managed in https://github.com/asyncapi/.github/ +#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 + +name: Manage stale issues and PRs + +on: + schedule: + - cron: "0 0 * * *" + +jobs: + stale: + runs-on: ubuntu-latest + steps: + - uses: actions/stale@v1.1.0 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + stale-issue-message: | + This issue has been automatically marked as stale because it has not had recent activity :sleeping: + It will be closed in 60 days if no further activity occurs. To unstale this issue, add a comment with detailed explanation. + Thank you for your contributions :heart: + stale-pr-message: | + This pull request has been automatically marked as stale because it has not had recent activity :sleeping: + It will be closed in 60 days if no further activity occurs. To unstale this pull request, add a comment with detailed explanation. + Thank you for your contributions :heart: + days-before-stale: 60 + days-before-close: 60 + stale-issue-label: stale + stale-pr-label: stale + exempt-issue-label: keep-open + exempt-pr-label: keep-open \ No newline at end of file diff --git a/.github/workflows/welcome-first-time-contrib.yml b/.github/workflows/welcome-first-time-contrib.yml new file mode 100644 index 0000000..e687e75 --- /dev/null +++ b/.github/workflows/welcome-first-time-contrib.yml @@ -0,0 +1,30 @@ +#This action is centrally managed in https://github.com/asyncapi/.github/ +#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 + +name: Welcome first time contributors + +on: + pull_request_target: + types: + - opened + issues: + types: + - opened + +jobs: + welcome: + runs-on: ubuntu-latest + steps: + - uses: actions/first-interaction@v1 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + issue-message: | + Welcome to AsyncAPI. Thanks a lot for reporting your first issue. Please check out our [contributors guide](https://github.com/asyncapi/.github/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. + + 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). + + + pr-message: | + Welcome to AsyncAPI. Thanks a lot for creating your first pull request. Please check out our [contributors guide](https://github.com/asyncapi/.github/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. + + 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).