A GitHub environment (staging, production) groups secrets, variables and protection rules specific to a deployment target. You can require manual approval before a deployment and restrict the allowed branches, with a deployment history.
Example
jobs:
deploy:
environment: production