1
0
mirror of https://github.com/DCC-EX/CommandStation-EX.git synced 2024-12-23 12:51:24 +01:00

Add templates and project workflow (#258)

* Add templates and project workflow

* Fixed template typos
This commit is contained in:
peteGSX 2022-10-27 09:34:13 +10:00 committed by GitHub
parent 4a3f3d0f34
commit 4bfd4b1a12
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 366 additions and 0 deletions

80
.github/ISSUE_TEMPLATE/bug_report.yml vendored Normal file
View File

@ -0,0 +1,80 @@
# Bug report GitHub issue form
#
# This file needs to reside in the ".github/ISSUE_TEMPLATE/" folder.
name: Bug Report
description: Submit a bug report
labels:
- Bug
title: "Bug Report: "
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to submit a bug report to the DCC-EX team!
In order to help us to validate the bug and ascertain what's causing it, please provide as much information as possible in this form.
- type: input
id: version
attributes:
label: Version
description: Please provide the version of EX-CommandStation in use.
validations:
required: true
- type: textarea
id: description
attributes:
label: Bug description
description: Please provide a clear and concise description of what the symptoms of the bug are.
placeholder: |
When attempting to drive a locomotive on the main track, it runs forwards, backwards, spins around, jumps up and down, blows the horn, and then stops.
validations:
required: true
- type: textarea
id: reproduction
attributes:
label: Steps to reproduce the bug
description: Please provide the steps to reproduce the behaviour.
placeholder: |
1. Turn on the CommandStation and track power.
2. Connect Engine Driver to the CommandStation.
3. Select locomotive with address 123.
4. Throttle up to half speed.
validations:
required: true
- type: textarea
id: expectation
attributes:
label: Expected behaviour
description: Please provide a clear and concise description of what you expected to happen.
placeholder: |
The locomotive should accelerate smoothly to half speed in a forward direction.
validations:
required: true
- type: textarea
id: screenshots
attributes:
label: Screenshots
description: If applicable, upload any screenshots here.
- type: textarea
id: hardware
attributes:
label: Hardware in use
description: Please provide details of hardware in use including microcontroller, motor shield, and any other relevant information.
placeholder: |
Elegoo Mega2560
Arduino R3 motor shield
validations:
required: true
- type: textarea
id: extra-context
attributes:
label: Additional context
description: Please provide any other relevant information that could help us resolve this issue, for example a customised config.h file.

12
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@ -0,0 +1,12 @@
# Configuration file for the template chooser
#
# This file needs to exist in the https://github.com/DCC-EX/.github repository in the ".github/ISSUE_TEMPLATE/" folder.
blank_issues_enabled: false
contact_links:
- name: DCC-EX Discord server
url: https://discord.gg/y2sB4Fp
about: For the best support experience, join our Discord server
- name: DCC-EX Contact and Support page
url: https://dcc-ex.com/support/index.html
about: For other support options, refer to our Contact & Support page

View File

@ -0,0 +1,31 @@
# Documentation update GitHub issue form
#
# This file needs to reside in the ".github/ISSUE_TEMPLATE/" folder.
name: Documentation Update
description: Submit a request for documentation updates, or to report broken links or inaccuracies
title: "[Documentation Update]: "
labels:
- Needs Documentation
body:
- type: markdown
attributes:
value: |
Use this template to submit a request for updates to our documentation.
This can be used for general documentation requests if information is missing or lacking, or to correct issues with our existing documentation such as broken links, or inaccurate information.
- type: textarea
id: details
attributes:
label: Documentation details
description: Provide the details of what needs to be documented or corrected.
validations:
required: true
- type: input
id: page
attributes:
label: Page with issues
description: If reporting broken links or inaccuracies, please provide the link to the page here.
placeholder: https://dcc-ex.com/index.html

View File

@ -0,0 +1,37 @@
# Feature Request GitHub issue form
#
# This file needs to reside in the ".github/ISSUE_TEMPLATE/" folder.
name: Feature Request
description: Suggest a new feature
title: "[Feature Request]: "
labels:
- Enhancement
body:
- type: markdown
attributes:
value: |
Use this template to suggest a new feature for EX-CommandStation.
- type: textarea
id: description
attributes:
label: Problem/idea statement
description: Please provide the problem you're trying to solve, or share the idea you have.
placeholder: A clear and concise description of the problem you're trying to solve, or the idea you have. For example, I'm always frustrated when...
validations:
required: true
- type: textarea
id: alternatives
attributes:
label: Alternatives or workarounds
description: Please provide any alternatives or workarounds you currently use.
validations:
required: true
- type: textarea
id: context
attributes:
label: Additional context
description: Add any other context, screenshots, or files related to the feature request here.

View File

@ -0,0 +1,39 @@
# Support Request GitHub issue form
#
# This file needs to reside in the ".github/ISSUE_TEMPLATE/" folder.
name: Support Request
description: Request support or assistance
title: "[Support Request]: "
labels:
- Support Request
body:
- type: markdown
attributes:
value: |
Use this template to request support or assistance with EX-CommandStation.
- type: input
id: version
attributes:
label: Version
description: Please provide the version of the software in use.
validations:
required: true
- type: textarea
id: description
attributes:
label: Issue description
description: Please describe the issue being encountered as accurately and detailed as possible.
validations:
required: true
- type: textarea
id: hardware
attributes:
label: Hardware
description: If appropriate, please provide details of the hardware in use.
placeholder: |
Elegoo Mega2560
Arduino Motor Shield R3

24
.github/ISSUE_TEMPLATE/to_do.yml vendored Normal file
View File

@ -0,0 +1,24 @@
# General To Do item GitHub issue form
#
# This file needs to reside in the ".github/ISSUE_TEMPLATE/" folder.
name: To Do
description: Create a general To Do item
title: "[To Do]: "
labels:
- To Do
body:
- type: markdown
attributes:
value: |
Use this template to create an issue for a general task that needs to be done.
This is handy for capturing ad-hoc items that don't necessarily require code to be written or updated.
- type: textarea
id: description
attributes:
label: Task description
description: Provide the details of what needs to be done.
validations:
required: true

143
.github/workflows/new-items.yml vendored Normal file
View File

@ -0,0 +1,143 @@
# This workflow is to be used for all repositories to integrate with the DCC++ EX Beta Project.
# It will add all issues and pull requests for a repository to the project, and put in the correct status.
#
# Ensure "REPO_LABEL" is updated with the correct label for the repo stream of work.
name: Add Issue or Pull Request to Project
env:
REPO_LABEL: ${{ secrets.PROJECT_STREAM_LABEL }}
PROJECT_NUMBER: 7
ORG: DCC-EX
on:
issues:
types:
- opened
pull_request:
types:
- ready_for_review
- opened
- review_requested
jobs:
add_to_project:
runs-on: ubuntu-latest
steps:
- name: Add labels
uses: andymckay/labeler@master
with:
add-labels: ${{ env.REPO_LABEL }}
- name: Generate token
id: generate_token
uses: tibdex/github-app-token@36464acb844fc53b9b8b2401da68844f6b05ebb0
with:
app_id: ${{ secrets.PROJECT_APP_ID }}
private_key: ${{ secrets. PROJECT_APP_KEY }}
- name: Get project data
env:
GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }}
run: |
gh api graphql -f query='
query($org: String!, $number: Int!) {
organization(login: $org){
projectNext(number: $number) {
id
fields(first:20) {
nodes {
id
name
settings
}
}
}
}
}' -f org=$ORG -F number=$PROJECT_NUMBER > project_data.json
echo 'PROJECT_ID='$(jq '.data.organization.projectNext.id' project_data.json) >> $GITHUB_ENV
echo 'STATUS_FIELD_ID='$(jq '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") | .id' project_data.json) >> $GITHUB_ENV
echo 'BACKLOG_OPTION_ID='$(jq '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") |.settings | fromjson.options[] | select(.name=="Backlog") |.id' project_data.json) >> $GITHUB_ENV
echo 'TO_DO_OPTION_ID='$(jq '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") |.settings | fromjson.options[] | select(.name=="To Do") |.id' project_data.json) >> $GITHUB_ENV
echo 'NEEDS_REVIEW_OPTION_ID='$(jq '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") |.settings | fromjson.options[] | select(.name=="Needs Review") |.id' project_data.json) >> $GITHUB_ENV
echo 'IN_PROGRESS_OPTION_ID='$(jq '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") |.settings | fromjson.options[] | select(.name=="In Progress") |.id' project_data.json) >> $GITHUB_ENV
- name: Add issue to project
env:
GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }}
ITEM_ID: ${{ github.event.issue.node_id }}
if: github.event_name == 'issues'
run: |
project_item_id="$( gh api graphql -f query='
mutation($project:ID!, $item:ID!) {
addProjectNextItem(input: {projectId: $project, contentId: $item}) {
projectNextItem {
id
}
}
}' -f project=$PROJECT_ID -f item=$ITEM_ID --jq '.data.addProjectNextItem.projectNextItem.id')"
echo 'PROJECT_ITEM_ID='$project_item_id >> $GITHUB_ENV
- name: Add PR to project
env:
GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }}
ITEM_ID: ${{ github.event.pull_request.node_id }}
if: github.event_name == 'pull_request'
run: |
project_item_id="$( gh api graphql -f query='
mutation($project:ID!, $item:ID!) {
addProjectNextItem(input: {projectId: $project, contentId: $item}) {
projectNextItem {
id
}
}
}' -f project=$PROJECT_ID -f item=$ITEM_ID --jq '.data.addProjectNextItem.projectNextItem.id')"
echo 'PROJECT_ITEM_ID='$project_item_id >> $GITHUB_ENV
- name: Set status - To Do
env:
GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }}
if: github.event_name == 'issues' && (contains(github.event.*.labels.*.name, 'Bug') || contains(github.event.*.labels.*.name, 'Support Request'))
run: |
gh api graphql -f query='
mutation(
$project: ID!
$item: ID!
$status_field: ID!
$status_value: String!
){
set_status: updateProjectNextItemField(input: {
projectId: $project
itemId: $item
fieldId: $status_field
value: $status_value
}) {
projectNextItem {
id
}
}
}' -f project=$PROJECT_ID -f item=$PROJECT_ITEM_ID -f status_field=$STATUS_FIELD_ID -f status_value=${{ env.TO_DO_OPTION_ID }} --silent
- name: Set status - Review
env:
GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }}
if: github.event_name == 'issues' && (contains(github.event.*.labels.*.name, 'Unit Tested') || contains(github.event.*.labels.*.name, 'Regression Tested') || contains(github.event.*.labels.*.name, 'Needs Review')) || github.event_name == 'pull_request'
run: |
gh api graphql -f query='
mutation(
$project: ID!
$item: ID!
$status_field: ID!
$status_value: String!
){
set_status: updateProjectNextItemField(input: {
projectId: $project
itemId: $item
fieldId: $status_field
value: $status_value
}) {
projectNextItem {
id
}
}
}' -f project=$PROJECT_ID -f item=$PROJECT_ITEM_ID -f status_field=$STATUS_FIELD_ID -f status_value=${{ env.NEEDS_REVIEW_OPTION_ID }} --silent