GitHub Actions offers features that let you control deployments. You can:
- Trigger workflows with a variety of events.
- Configure environments to set rules before a job can proceed and to limit access to secrets.
- Use concurrency to control the number of deployments running at a time.
For more information about continuous deployment, see "About continuous deployment."
You should be familiar with the syntax for GitHub Actions. For more information, see "Learn GitHub Actions."
You can use a variety of events to trigger your deployment workflow. Some of the most common are:
For example, a workflow with the following triggers runs whenever:
- There is a push to the
- A pull request targeting the
mainbranch is opened, synchronized, or reopened.
- Someone manually triggers it.
on: push: branches: - main pull_request: branches: - main workflow_dispatch:
For more information, see "Events that trigger workflows."
development。 当 GitHub Actions 工作流部署到某个环境时，该环境将显示在存储库的主页上。 你可以使用环境来要求批准才能继续作业，限制哪些分支可以触发工作流，或限制对机密的访问。 有关创建环境的详细信息，请参阅“使用环境进行部署”。
Concurrency ensures that only a single job or workflow using the same concurrency group will run at a time. You can use concurrency so that an environment has a maximum of one deployment in progress and one deployment pending at a time.
environment are not connected. The concurrency value can be any string; it does not need to be an environment name. Additionally, if another workflow uses the same environment but does not specify concurrency, that workflow will not be subject to any concurrency rules.
For example, when the following workflow runs, it will be paused with the status
pending if any job or workflow that uses the
production concurrency group is in progress. It will also cancel any job or workflow that uses the
production concurrency group and has the status
pending. This means that there will be a maximum of one running and one pending job or workflow in that uses the
production concurrency group.
name: Deployment concurrency: production on: push: branches: - main jobs: deployment: runs-on: ubuntu-latest environment: production steps: - name: deploy # ...deployment-specific steps
You can also specify concurrency at the job level. This will allow other jobs in the workflow to proceed even if the concurrent job is
name: Deployment on: push: branches: - main jobs: deployment: runs-on: ubuntu-latest environment: production concurrency: production steps: - name: deploy # ...deployment-specific steps
You can also use
cancel-in-progress to cancel any currently running job or workflow in the same concurrency group.
name: Deployment concurrency: group: production cancel-in-progress: true on: push: branches: - main jobs: deployment: runs-on: ubuntu-latest environment: production steps: - name: deploy # ...deployment-specific steps
For guidance on writing deployment-specific steps, see "Finding deployment examples."
When a GitHub Actions workflow deploys to an environment, the environment is displayed on the main page of the repository. For more information about viewing deployments to environments, see "Viewing deployment history."
Every workflow run generates a real-time graph that illustrates the run progress. You can use this graph to monitor and debug deployments. For more information see, "Using the visualization graph."
You can also view the logs of each workflow run and the history of workflow runs. For more information, see "Viewing workflow run history."
If your personal account or organization on GitHub.com is integrated with Microsoft Teams or Slack, you can track deployments that use environments through Microsoft Teams or Slack. For example, you can receive notifications through the app when a deployment is pending approval, when a deployment is approved, or when the deployment status changes. For more information about integrating Microsoft Teams or Slack, see "GitHub extensions and integrations."
You can also build an app that uses deployment and deployment status webhooks to track deployments. 当引用环境的工作流作业运行时，它将创建一个部署对象并将
environment 属性设置为环境名称。 随着工作流的进行，它还将创建部署状态对象，并将
environment_url 属性设置为环境的 URL（如果在工作流中指定），以及将
state 属性设置为作业的状态。 For more information, see "Apps" and "Webhook events and payloads."
You can run your deployment workflow on GitHub-hosted runners or on self-hosted runners. Traffic from GitHub-hosted runners can come from a wide range of network addresses. If you are deploying to an internal environment and your company restricts external traffic into private networks, GitHub Actions workflows running on GitHub-hosted runners may not be able to communicate with your internal services or resources. To overcome this, you can host your own runners. For more information, see "About self-hosted runners" and "About GitHub-hosted runners."
You can use a status badge to display the status of your deployment workflow. 状态徽章显示工作流程目前失败还是通过。 添加状态徽章的常见位置是存储库的
README.md 文件，但也可将其添加到你喜欢的任何网页。 默认情况下，徽章显示默认分支的状态。 你也可以在 URL 中使用
For more information, see "Adding a workflow status badge."
This article demonstrated features of GitHub Actions that you can add to your deployment workflows.
许多服务提供商还提供针对 GitHub Marketplace 的操作，用于部署到他们的服务。 有关完整列表，请参阅 GitHub Marketplace。