Finally, they guys from GitLab brought Pages feature to CE!(link) :smile::joy::no_mouth::smile::joy::no_mouth::smile::joy::no_mouth:
So there's no meaning to continue with this project(What? You want me to fight with them??)
Thank you all for your cutting edge sights that made you require this feature that eventually lead you to support this project. Special thanks to you guys who reported back to this one and some who even helped building it.
As I said, this project is almost compatible with Pages in EE. So for supporters of GCP, I guess what you need to do after updated to Pages-feature-included version of GitLab are:
.gitlab-ci.yml as isR.I.P to GCP with :)
This is an unofficial GitLab Pages implementation for GitLab CE (GitLab Community Edition), denoted as GCP.
Official GitLab Pages is only for GiLab EE, as discussed here and here.
Actually, there's already a project aiming at the same goal as this one. Luckily, I found it after my finishing the initial version of this project. The philosophy behind these two projects are different: mine provides a close imitation of official GitLab Pages while the other embeds Jekyll which makes it more like GitHub Pages.
This project is almost compatible with official GitLab Pages, which means you can directly use these GitLab Pages examples and summon GCP to handle the rest (if configured correctly of course). If one day, you switched to GitLab EE or GitLab.com, or Pages is included into GitLab CE, the immigration would be seamless.
Currently, following features are supported:
.gitlab-ci.yml (official doc here)The only supported encouraged way to run GCP is with Docker.
GitLab CE 8.4+: GCP cooperates with GitLab rather than ^((?!GitLab).)*$ nor GitLab (8\.[0-3]\..*|[0-7]\..*|[0-7]|8\.3)
GitLab CI: build is essential for everything. If you haven't enabled GitLab CI, you can take this chance to start trying it. It's totally awesome. Here's the doc.
docker pull yums/gitlab-ce-pages:1.3.4
docker run --name gitlab-ce-pages -d --restart=always \
--env 'PAGE_PRIVATE_TOKEN=private_token_of_peeking_account' \
--env 'GITLAB_URL=http://gitlab.example.com/' \
--env 'PROJECT_ROOT=public' \
--volume /srv/gitlab-ce-pages/public:/home/pages/public/ \
--volume /srv/gitlab-ce-pages/cname:/home/pages/cname/ \
-p 80:80 \
yums/gitlab-ce-pages:1.3.4
.gitlab-ci.yml like demonstrated in these examples. Or if your administrator has already imported some of them into GitLab, fork one.{GITLAB_CE_PAGE_URL}/{WORKSPACE}/{PROJECT_NAME}.CNAME is supported since GCP 1.1.0.
Official GitLab Pages service provides a way for users to host their static websites on gitlab.io, also you can point your domain to your *.gitlab.io using CNAME DNS record. For GCP, things are different: GCP, along with your sites, are hosted on your own server. What GCP needs is actually an A record to your server IP in domain DNS records. But since the final purposes of two are similar, both to customize domains. So the name CNAME is used.
With customized domains, you can directly access your projects’ Pages directly under your own domains, without complicated workspace and project name in url. This makes GCP essentially a static site deployer. In fact, you can use GCP to deploy your static site even without owning a running GitLab instance!
Unlike official Pages, we can’t easily set CNAMEs on web UI. GCP uses a configuration file to enable this.
Following are steps to set CNAME:
/home/pages/cname with an additional option of docker run. Like --volume /srv/gitlab-ce-pages/cname:/home/pages/cname/
cnames.txt in mapped directory.cnames.txt in following format: workspace_1/project_1 domain1.com project1.domain2.com page.domain3.com
workspace_2/project_2 domain3.com
Each line sets domains for a project. Pointing multiple domains to one project is supported.
Wildcard CNAME is supported since GCP 1.3.0.
Wildcard CNAME is the follow-up to CNAME configuration, which enables GCP to automatically apply some patterns for page routing.
Here's some recipe cnames.txts to use wildcard CNAME:
homepage directly using workspace name as subdomain name $1/homepage ~^(.*)\.example\.com$
foo.example.com will point to foo/homepage
{workspace_name}.example.com directly using workspace name as subdomain name $1/$1.example.com ~^(.*)\.example\.com$
foo.example.com will point to foo/foo.example.com
You can find your best fit by combination of these.
Note that you need to set A record to GCP server IP for all domains/subdomains you want to use. Here's an example from GoDaddy about how to set wildcard DNS record.
You can easily upgrade your GCP in following steps:
docker pull yums/gitlab-ce-pages:1.3.4
docker rm -f gitlab-ce-pages
docker run --name gitlab-ce-pages -d --restart=always \
--env 'PAGE_PRIVATE_TOKEN=private_token_of_peeking_account' \
--env 'GITLAB_URL=http://gitlab.example.com/' \
--env 'PROJECT_ROOT=public' \
--volume /srv/gitlab-ce-pages/public:/home/pages/public/ \
--volume /srv/gitlab-ce-pages/cname:/home/pages/cname/ \
-p 80:80 \
yums/gitlab-ce-pages:1.3.4
pages, without prefix or trailing splashes.public, without prefix or trailing splashes. Note that in GitLab's official examples, artifacts are put inside public folder and then packed into artifacts.docker-compose.ymlThis is a sample docker-compose.yml file for you if you want to use docker-compose. It behaves similarly to the command line version.
gitlab-ce-pages:
restart: always
image: yums/gitlab-ce-pages:1.3.4
environment:
- PAGE_PRIVATE_TOKEN=private_token_of_peeking_account
- GITLAB_URL=http://gitlab.example.com/
- PROJECT_ROOT=public
volumes:
- ./public:/home/pages/public
- ./cname:/home/pages/cname
ports:
- "80:80"
Content type
Image
Digest
Size
113.4 MB
Last updated
over 9 years ago
docker pull yums/gitlab-ce-pages