跳转到内容
This is an unmaintained snapshot of the Astro v4 docs. View the latest docs.

部署你的 Astro 站点至 GitLab Pages

你可以使用 GitLab Pages 为你的 GitLab 项目、组或用户账号托管 Astro 网站。

你可以使用 GitLab CI/CD 来自动构建和部署站点,从而将 Astro 网站部署到 GitLab Pages。为此,你的源代码必须托管在 GitLab 上,并且需要对 Astro 项目进行以下更改:

  1. astro.config.mjs 文件中设置 sitebase

    astro.config.mjs
    import { defineConfig } from 'astro/config';
    export default defineConfig({
    site: 'https://<username>.gitlab.io',
    base: '/<my-repo>',
    outDir: 'public',
    publicDir: 'static',
    });

    site

    site 的值必须是以下之一:

    • 以下基于用户名的链接:https://<username>.gitlab.io
    • 以下基于群组名的链接:https://<groupname>.gitlab.io
    • 如果你在 GitLab 项目中配置了自定义域名: https://example.com

    对于 GitLab 的自托管实例,请将 gitlab.io 替换为你实例的 Page 域名。

    base

    为了让 Astro 将你的仓库名(例如:/my-repo)视为网站的根目录,所以可能需要一个 base 的值。

    base 的值应该是诸如 /my-blog 这样以斜杠开头的仓库名称。这样 Astro 就能理解你网站的根目录是 /my-repo,而不是默认的 /

  2. public/ 目录重命名为 static

  3. astro.config.js 文件中,设置 outDir: 'public'。此设置指示 Astro 将静态构建输出放入 public 文件夹,这是 GitLab Pages 公开文件所需的文件夹。

    如果你在 Astro 项目中使用 public/ 目录 存放静态资源,你需要重命名该目录,并在 astro.config.mjs 文件中将 publicDir 的值改为新的目录名。

    例如,当 public/ 目录被重命名为 static/,正确的 astro.config.mjs 文件设置则如下:

    astro.config.mjs
    import { defineConfig } from 'astro/config';
    export default defineConfig({
    outDir: 'public',
    publicDir: 'static',
    });
  4. 更改 .gitignore 文件中的构建输出。在我们的示例中,需要将 dist/ 更改为 public/

    .gitignore
    # 构建输出
    dist/
    public/
  5. 在项目的根目录中创建一个名为 .gitlab-ci.yml 的文件,其中包含以下内容。每当你更改内容时,都会构建和部署网站:

    .gitlab-ci.yml
    pages:
    # 用于构建你的应用的 Docker 镜像
    image: node:lts
    before_script:
    - npm ci
    script:
    # 在这里指定构建你的应用所需的步骤
    - npm run build
    artifacts:
    paths:
    # 包含用于发布的构建文件的文件夹
    # 必须命名为"public"
    - public
    only:
    # 仅在推送到以下分支时,
    # 触发新的构建和部署
    - main
  6. 提交你的更改并将其推送到 GitLab。

  7. 在 Gitlab 上,转到你仓库的 Deploy 菜单并选择 Pages。在这里你能看到 GitLab Pages 网站的完整 URL。要确保使用的是 https://username.gitlab.io/my-repo 这样的 URL 格式,请取消选中此页面上的 Use unique domain 设置。

你的网站现在应该可以发布了!当你将更改推送到 Astro 项目的仓库时,GitLab CI/CD 流水线将自动为你部署它们。

更多部署指南

贡献

你有什么想法?

社区