# 自动部署你的网站

借助 GitHub Actions 和 GitHub Pages 自动执行代码部署，在每次推送到主分支时将更新发布到线上站点。

你的功能已合并，因此现在你可以共享它。 在本教程中，你将设置自动部署，以便每次推送 `main` 将软件项目发布到实时网站。

> \[!NOTE]
> 您的 GitHub Pages 站点的 URL 取决于您使用的是哪个版本的 GitHub。
>
> * 在 GitHub.com 上，你的网站发布在 `YOUR-USERNAME.github.io/REPOSITORY`。
> * 如果您在 GitHub 上使用启用了数据驻留的 GHE.com，您的站点将发布在 `pages.SUBDOMAIN.ghe.com/YOUR-USERNAME/REPOSITORY`，其中 `SUBDOMAIN` 是您企业的子域名。
> * 在 GitHub Enterprise Server 上，您的站点会发布到 `pages.HOSTNAME/YOUR-USERNAME/REPOSITORY`，其中 `HOSTNAME` 是您的 GitHub Enterprise Server 实例的主机名。

## 先决条件

* 一个包含你已合并功能的 `stargazers-log` 存储库。 如果尚未合并，请参阅 [审查你提出的更改](/zh/enterprise-server@3.18/get-started/start-your-journey/reviewing-your-proposed-changes)。

## 启用 GitHub Pages

设置 GitHub Pages 来托管您的网站，并使用 GitHub Actions 来构建和发布它。

1. 在 GitHub 上，前往你的 `stargazers-log` 存储库。
2. 在存储库名称下，单击“ **设置**”。
3. 在边栏中的“代码和自动化”部分中，单击 **“页面**”。
4. 在“生成和部署”下，从 **“源** ”下拉列表中选择 **GitHub Actions**。

将其他设置保留为默认值。 接下来，你将创建 **自己的工作流** 来自动生成和部署站点。

## 创建部署工作流

工作流是由 GitHub Actions 为你运行的一组自动化步骤。 添加一个在每次推送到 `main` 时都会构建并部署你的网站的配置。

1. 在存储库中，创建名为 `.github/workflows/deploy.yml` 的文件。
   1. 在文件列表上方存储库的 `stargazers-log` 主页上，单击 **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-plus" aria-label="plus" role="img"><path d="M7.75 2a.75.75 0 0 1 .75.75V7h4.25a.75.75 0 0 1 0 1.5H8.5v4.25a.75.75 0 0 1-1.5 0V8.5H2.75a.75.75 0 0 1 0-1.5H7V2.75A.75.75 0 0 1 7.75 2Z"></path></svg>**，然后单击“ **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-plus" aria-label="plus" role="img"><path d="M7.75 2a.75.75 0 0 1 .75.75V7h4.25a.75.75 0 0 1 0 1.5H8.5v4.25a.75.75 0 0 1-1.5 0V8.5H2.75a.75.75 0 0 1 0-1.5H7V2.75A.75.75 0 0 1 7.75 2Z"></path></svg> 创建新文件**”。
   2. 在“文件名”字段中，键入 `.github/workflows/deploy.yml`。

2. 添加以下工作流内容。

   ```yaml copy
   name: Deploy to GitHub Pages

   on:
     push:
       branches:
         - main

   permissions:
     contents: read
     pages: write
     id-token: write

   jobs:
     deploy:
       runs-on: ubuntu-latest
       environment:
         name: github-pages
         url: ${{ steps.deployment.outputs.page_url }}
       steps:
         - name: Checkout
           uses: actions/checkout@v6
         - name: Setup Pages
           uses: actions/configure-pages@v5
         - name: Upload artifact
           uses: actions/upload-pages-artifact@v2
           with:
             path: '.'
         - name: Deploy to GitHub Pages
           id: deployment
           uses: actions/deploy-pages@v2
   ```

3. 将文件直接提交到 `main` 分支。

## 了解工作流

工作流的每个部分都有一个要执行的作业：

* **`on`** 指示 GitHub Actions 在每次推送到 `main` 时运行工作流。
* **`permissions`** 向工作流授予它需要发布到 GitHub Pages的访问权限。
* \*\*`environment`\*\*将作业关联到您的GitHub Pages站点，并将已发布的 URL 以`${{ steps.deployment.outputs.page_url }}`的形式提供。
* **`steps`** 检出代码、准备 GitHub Pages、将文件作为构件上传，并将其部署到线上站点。

## 查看已上线的网站

提交工作流后， GitHub Actions 会自动运行它。

1. 在存储库中，单击“ **操作** ”选项卡以监视工作流运行。
2. 单击最新的工作流运行以查看作业详细信息的摘要。
3. 运行完成后，在以下位置打开已发布站点`https://pages.HOSTNAME/YOUR-USERNAME/stargazers-log/`。 将 `YOUR-USERNAME` 替换为你的用户名，并将 `HOSTNAME` 替换为你的 GitHub Enterprise Server主机名。
   * 例如，如果GitHub帐户用户名为`octocat`，则站点位于`https://pages.HOSTNAME/octocat/stargazers-log/` 。

从现在起，每次推送到 `main` 都会根据你的最新更改重新部署你的站点。

## 你构建的内容

在此系列中，你构建了一个完整的软件项目并练习了 GitHub 工作流：

| 阶段                          | 你学到的内容              |
| --------------------------- | ------------------- |
| 创建软件项目                      | 存储库、自述文件            |
| 规划工作                        | 问题，项目（项目板）          |
| 在本地连接                       |                     |
| GitHub Desktop，克隆           |                     |
| 编写和存储代码                     | 分支、提交、拉取请求、 Copilot |
| 查看更改                        | 拉取请求评审， Copilot     |
| 自动部署                        |                     |
| GitHub Actions、GitHub Pages |                     |

## 后续步骤

* 加深你对 Git 和 GitHub 的理解。 有关详细信息，请参阅“[Git 和GitHub学习资源](/zh/enterprise-server@3.18/get-started/start-your-journey/git-and-github-learning-resources)”。
* 浏览 副驾驶聊天 以更快地学习，并在编写代码时获得帮助。 有关详细信息，请参阅 [](/zh/enterprise-cloud@latest/copilot/concepts/chat) 文档中的 GitHub Enterprise Cloud。
* 更深入地了解 AI，并了解代理如何像实际编码合作伙伴一样行事，将想法转化为可操作的小步骤、生成示例以及处理重复工作。 有关详细信息，请参阅 [](/zh/enterprise-cloud@latest/copilot/concepts/agents) 文档中的 GitHub Enterprise Cloud。
* 进一步了解如何使用 GitHub Actions 工作流自动化软件项目。 有关详细信息，请参阅“[了解GitHub Actions](/zh/enterprise-server@3.18/actions/get-started/understand-github-actions)”。
* 添加自定义域名，或探索通过 GitHub Pages 发布网站的更多方式。 有关详细信息，请参阅“[GitHub Pages 入门](/zh/enterprise-server@3.18/pages/getting-started-with-github-pages)”。