Deploy your Astro Site to GitLab Pages
You can use GitLab Pages to host an Astro site for your GitLab projects, groups, or user account.
How to deploy
Section titled How to deployYou can deploy an Astro site to GitLab Pages by using GitLab CI/CD to automatically build and deploy your site. To do this, your source code must be hosted on GitLab and you need to make the following changes to your Astro project:
-
Set up
site
andbase
options inastro.config.mjs
.site
The value for
site
must be one of the following:- The following URL based on your username:
https://<username>.gitlab.io
- The following URL based on your group name:
https://<groupname>.gitlab.io
- Your custom domain if you have it configured in your Gitlab project’s settings:
https://example.com
For GitLab self-managed instances, replace
gitlab.io
with your instance’s Pages domain.base
A value for
base
may be required so that Astro will treat your repository name (e.g./my-repo
) as the root of your website.Don’t set a
base
parameter if your page is served from the root folder.The value for
base
should be your repository’s name starting with a forward slash, for example/my-blog
. This is so that Astro understands your website’s root is/my-repo
, rather than the default/
.When this value is configured, all of your internal page links must be prefixed with your
base
value:See more about configuring a
base
value - The following URL based on your username:
-
Rename the
public/
directory tostatic/
. -
Set
outDir: 'public'
inastro.config.mjs
. This setting instructs Astro to put the static build output in a folder calledpublic
, which is the folder required by GitLab Pages for exposed files.If you were using the
public/
directory as a source of static files in your Astro project, rename it and use that new folder name inastro.config.mjs
for the value ofpublicDir
.For example, here are the correct
astro.config.mjs
settings when thepublic/
directory is renamed tostatic/
: -
Change the build output in
.gitignore
. In our example we need to changedist/
topublic/
: -
Create a file called
.gitlab-ci.yml
in the root of your project with the content below. This will build and deploy your site whenever you make changes to your content: -
Commit your changes and push them to GitLab.
-
On Gitlab, go to your repository’s Deploy menu and select Pages. Here you will see the full URL of your GitLab Pages website. To make sure you are using the URL format
https://username.gitlab.io/my-repo
, uncheck the Use unique domain setting on this page.
Your site should now be published! When you push changes to your Astro project’s repository, the GitLab CI/CD pipeline will automatically deploy them for you.