instruction: Explain github CI/CD configuration and best practices
output: Starter Workflows
  These are the workflow files for helping people get started with GitHub Actions. They're presented whenever you start to create a new GitHub Actions workflow.
  If you want to get started with GitHub Actions, you can use these starter workflows by clicking the "Actions" tab in the repository where you want to create a workflow.
  Note
  Thank you for your interest in this GitHub repo, however, right now we are not taking contributions.
  We continue to focus our resources on strategic areas that help our customers be successful while making developers' lives easier. While GitHub Actions remains a key part of this vision, we are allocating resources towards other areas of Actions and are not taking contributions to this repository at this time. The GitHub public roadmap is the best place to follow along for any updates on features we’re working on and what stage they’re in.
  We are taking the following steps to better direct requests related to GitHub Actions, including:
  We will be directing questions and support requests to our
  Community Discussions area
  High Priority bugs can be reported through Community Discussions or you can report these to our support team
  https://support.github.com/contact/bug-report
  .
  Security Issues should be handled as per our
  security.md
  We will still provide security updates for this project and fix major breaking changes during this time.
  You are welcome to still raise bugs in this repo.
  Directory structure
  ci
  : solutions for Continuous Integration workflows
  deployments
  : solutions for Deployment workflows
  automation
  : solutions for automating workflows
  code-scanning
  : solutions for
  Code Scanning
  pages
  : solutions for Pages workflows
  icons
  : svg icons for the relevant template
  Each workflow must be written in YAML and have a
  .yml
  extension. They also need a corresponding
  .properties.json
  file that contains extra metadata about the workflow (this is displayed in the GitHub.com UI).
  For example:
  ci/django.yml
  and
  ci/properties/django.properties.json
  .
  Valid properties
  name
  : the name shown in onboarding. This property is unique within the repository.
  description
  : the description shown in onboarding
  iconName
  : the icon name in the relevant folder, for example,
  django
  should have an icon
  icons/django.svg
  . Only SVG is supported at this time. Another option is to use
  octicon
  . The format to use an octicon is
  octicon <<icon name>>
  . Example:
  octicon person
  creator
  : creator of the template shown in onboarding. All the workflow templates from an author will have the same
  creator
  field.
  categories
  : the categories that it will be shown under. Choose at least one category from the list
  here
  . Further, choose the categories from the list of languages available
  here
  and the list of tech stacks available
  here
  . When a user views the available templates, those templates that match the language and tech stacks will feature more prominently.
  Categories
  continuous-integration
  deployment
  testing
  code-quality
  code-review
  dependency-management
  monitoring
  Automation
  utilities
  Pages
  Hugo
  Variables
  These variables can be placed in the starter workflow and will be substituted as detailed below:
  $default-branch
  : will substitute the branch from the repository, for example
  main
  and
  master
  $protected-branches
  : will substitute any protected branches from the repository
  $cron-daily
  : will substitute a valid but random time within the day
  How to test templates before publishing
  Disable template for public
  The template author adds a
  labels
  array in the template's
  properties.json
  file with a label
  preview
  . This will hide the template from users, unless user uses query parameter
  preview=true
  in the URL.
  Example
  properties.json
  file:
  {
  "name"
  :
  "
  Node.js
  "
  ,
  "description"
  :
  "
  Build and test a Node.js project with npm.
  "
  ,
  "iconName"
  :
  "
  nodejs
  "
  ,
  "categories"
  : [
  "
  Continuous integration
  "
  ,
  "
  JavaScript
  "
  ,
  "
  npm
  "
  ,
  "
  React
  "
  ,
  "
  Angular
  "
  ,
  "
  Vue
  "
  ],
  "labels"
  : [
  "
  preview
  "
  ]
  }
  For viewing the templates with
  preview
  label, provide query parameter
  preview=true
  to the
  new workflow
  page URL. Eg.
  https://github.com/<owner>/<repo_name>/actions/new?preview=true
  .
  Enable template for public
  Remove the
  labels
  array from
  properties.json
  file to publish the template to public