Release v1.64.0 #1693
This file contains 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
# | |
# THIS FILE IS GENERATED, PLEASE DO NOT EDIT. | |
# | |
# Copyright 2022 Flant JSC | |
# | |
# Licensed under the Apache License, Version 2.0 (the "License"); | |
# you may not use this file except in compliance with the License. | |
# You may obtain a copy of the License at | |
# | |
# http://www.apache.org/licenses/LICENSE-2.0 | |
# | |
# Unless required by applicable law or agreed to in writing, software | |
# distributed under the License is distributed on an "AS IS" BASIS, | |
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
# See the License for the specific language governing permissions and | |
# limitations under the License. | |
name: Dispatch slash command | |
on: | |
issue_comment: | |
types: [created] | |
jobs: | |
conditions: | |
name: Check conditions | |
runs-on: ubuntu-latest | |
outputs: | |
trigger_for_release_issue: ${{steps.check.outputs.trigger_for_release_issue}} | |
trigger_for_changelog: ${{steps.check.outputs.trigger_for_changelog}} | |
trigger_for_pull_request: ${{steps.check.outputs.trigger_for_pull_request}} | |
steps: | |
- name: Check conditions for release issue | |
id: check | |
uses: actions/[email protected] | |
with: | |
script: | | |
if (!context.payload.comment.body.startsWith('/')) { | |
core.notice(`Ignore regular comment.`); | |
return; | |
} | |
// Check for release issue. | |
const isReleaseIssue = context.payload.issue.labels.some((l) => l.name === 'issue/release'); | |
const isPrivate = context.payload.repository.private; | |
const authorAssociation = context.payload.comment.author_association; | |
// Check for changelog PR. | |
const isPR = !!context.payload.issue.pull_request; | |
const isMilestoned = !!context.payload.issue.milestone; | |
const milestoneState = isMilestoned && context.payload.issue.milestone.state; | |
const hasChangelogLabel = context.payload.issue.labels.some((l) => l.name === 'changelog'); | |
const hasAutoLabel = context.payload.issue.labels.some((l) => l.name === 'auto'); | |
core.info(`Is release issue? ${isReleaseIssue}`) | |
core.info(`Private repo? ${isPrivate}`) | |
core.info(`Author association: ${authorAssociation}`) | |
core.info(`Is PR? ${isPR}`) | |
core.info(`Is milestoned? ${isMilestoned}`) | |
core.info(`Milestone state: ${milestoneState}`) | |
core.info(`Has 'changelog' label? ${hasChangelogLabel}`) | |
core.info(`Has 'auto' label? ${hasAutoLabel}`) | |
if (isReleaseIssue && (authorAssociation === 'OWNER' || authorAssociation === 'MEMBER' || (isPrivate && authorAssociation === 'COLLABORATOR'))) { | |
core.notice(`Comment on release issue with possible slash command.`); | |
return core.setOutput('trigger_for_release_issue', 'true'); | |
} | |
if (isPR && milestoneState === 'open' && hasChangelogLabel && hasAutoLabel) { | |
core.notice(`Comment on changelog pull request.`); | |
return core.setOutput('trigger_for_changelog', 'true'); | |
} | |
// For slash commands on pull requests, e.g. 'e2e abort' command. | |
// The right way is to give slash commands to the collaborator instead of the contributor. Why? | |
// During the experiments it turned out that: | |
// Member is a member of the github organization and the organization is public (here https://github.com/orgs/deckhouse/people) | |
// Collaborator is a member of github and the organization is private (here https://github.com/orgs/deckhouse/people) | |
// Contributor is a person who is not a member of github, but has contributed to the repository. | |
if (isPR && (authorAssociation === 'OWNER' || authorAssociation === 'MEMBER' || authorAssociation === 'COLLABORATOR')) { | |
core.notice(`Comment on pull request.`); | |
return core.setOutput('trigger_for_pull_request', 'true'); | |
} | |
trigger_for_release_issue: | |
name: Trigger workflow by comment | |
runs-on: ubuntu-latest | |
needs: | |
- conditions | |
if: ${{needs.conditions.outputs.trigger_for_release_issue == 'true'}} | |
steps: | |
# <template: checkout_step> | |
- name: Checkout sources | |
uses: actions/[email protected] | |
# </template: checkout_step> | |
- name: Run workflow | |
uses: actions/[email protected] | |
with: | |
github-token: ${{secrets.BOATSWAIN_GITHUB_TOKEN}} | |
script: | | |
const ci = require('./.github/scripts/js/ci'); | |
return await ci.runSlashCommandForReleaseIssue({github, context, core}); | |
trigger_for_pull_request: | |
name: Trigger workflow by comment from pull-request | |
runs-on: ubuntu-latest | |
needs: | |
- conditions | |
if: ${{needs.conditions.outputs.trigger_for_pull_request == 'true'}} | |
steps: | |
# <template: checkout_step> | |
- name: Checkout sources | |
uses: actions/[email protected] | |
# </template: checkout_step> | |
- name: Run workflow | |
uses: actions/[email protected] | |
with: | |
github-token: ${{secrets.BOATSWAIN_GITHUB_TOKEN}} | |
script: | | |
const ci = require('./.github/scripts/js/pr-command-dispatcher'); | |
return await ci.runSlashCommandForPullRequest({github, context, core}); | |
trigger_for_changelog: | |
name: Dispatch Changelog Event | |
runs-on: ubuntu-latest | |
needs: | |
- conditions | |
if: ${{needs.conditions.outputs.trigger_for_changelog == 'true'}} | |
steps: | |
# <template: checkout_step> | |
- name: Checkout sources | |
uses: actions/[email protected] | |
# </template: checkout_step> | |
- name: Find milestone | |
id: milestone | |
uses: actions/[email protected] | |
with: | |
result-encoding: json | |
script: | | |
const validate = require('./.github/scripts/js/changelog-command-validate.js') | |
return await validate({ github, core, context }) | |
- name: Slash Command Dispatch | |
if: steps.milestone.outputs.result | |
uses: peter-evans/slash-command-dispatch@v2 | |
with: | |
token: ${{ secrets.CHANGELOG_ACCESS_TOKEN }} | |
commands: changelog | |
dispatch-type: repository | |
issue-type: pull-request |