{"componentChunkName":"component---src-templates-page-js","path":"/gitlab-pages","result":{"data":{"markdownRemark":{"frontmatter":{"title":"To GitLab Pages from AWS CloudFormation and Travis CI","date":"03 September 2018","path":"/gitlab-pages","author":null,"excerpt":"Last year, I had some fun building a Github Page alternative with AWS CloudFormation and Travis CI. In retrospect, there was some clear indication of over-engineering...","tags":["gitlab","web","jekyll","aws","travis-ci","cloudflare","v3"],"coverImage":null},"id":"fdafbfa0-14c4-5287-b321-a224a442c4e1","html":"<p>Last year, I had some fun <a href=\"https://chriswang.tech/2017/building-github-pages-alternative/\">building a Github Page alternative with AWS CloudFormation and Travis CI</a>. In retrospect, there was some clear indication of over-engineering. </p>\n<p>And with the expiry of my Github Education subscription, a new home is needed for my private repositories. With built-in free CI/CD and unlimited private repos, Gitlab is a godsend. And not forgetting Gitlab Pages for hosting static sites!</p>\n<h1>Entering the GitLab-land</h1>\n<p>At the core of the configuration is the <code class=\"language-text\">.gitlab-ci.yml</code> file.</p>\n<div class=\"gatsby-highlight\" data-language=\"yml\"><pre class=\"language-yml\"><code class=\"language-yml\"><span class=\"token comment\"># requiring the environment of Ruby 2.3.x</span>\n<span class=\"token key atrule\">image</span><span class=\"token punctuation\">:</span> ruby<span class=\"token punctuation\">:</span><span class=\"token number\">2.3</span>\n\n<span class=\"token comment\"># add bundle cache to 'vendor' for speeding up builds</span>\n<span class=\"token key atrule\">cache</span><span class=\"token punctuation\">:</span>\n  <span class=\"token key atrule\">paths</span><span class=\"token punctuation\">:</span> \n    <span class=\"token punctuation\">-</span> vendor/\n\n<span class=\"token key atrule\">before_script</span><span class=\"token punctuation\">:</span>\n  <span class=\"token punctuation\">-</span> bundle install <span class=\"token punctuation\">-</span><span class=\"token punctuation\">-</span>path vendor\n\n<span class=\"token comment\"># the 'pages' job will deploy and build your site to the 'public' path</span>\n<span class=\"token key atrule\">pages</span><span class=\"token punctuation\">:</span>\n  <span class=\"token key atrule\">stage</span><span class=\"token punctuation\">:</span> deploy\n  <span class=\"token key atrule\">script</span><span class=\"token punctuation\">:</span>\n    <span class=\"token punctuation\">-</span> bundle exec jekyll build <span class=\"token punctuation\">-</span>d public/\n  <span class=\"token key atrule\">artifacts</span><span class=\"token punctuation\">:</span>\n    <span class=\"token key atrule\">paths</span><span class=\"token punctuation\">:</span>\n      <span class=\"token punctuation\">-</span> public\n  <span class=\"token key atrule\">only</span><span class=\"token punctuation\">:</span>\n    <span class=\"token punctuation\">-</span> master <span class=\"token comment\"># this job will affect only the 'master' branch</span>\n\n<span class=\"token comment\"># To solve encoding error:</span>\n<span class=\"token key atrule\">variables</span><span class=\"token punctuation\">:</span>\n  <span class=\"token key atrule\">LC_ALL</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"C.UTF-8\"</span>\n  <span class=\"token key atrule\">LANG</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"en_US.UTF-8\"</span>\n  <span class=\"token key atrule\">LANGUAGE</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"en_US.UTF-8\"</span></code></pre></div>\n<p>And the CI build log is such a delight to watch :)</p>\n<p><figure class=\"gatsby-resp-image-figure\" style=\"\">\n    <span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 800px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/e8da8ef44b4209959bd9f539f372adb1/55862/gitlab-build.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 139.5%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAcCAYAAABh2p9gAAAACXBIWXMAABYlAAAWJQFJUiTwAAACT0lEQVRIx6VV2ZKbQBDzCeYw5hoz3IcxeDepVPL/H6eMhsWV7IsPHlQGe0pWt9Q9K6M1YPw2Yf40Ydz4bMAs1PtO4aBgqu8NQ2O/3z/EKhIRyrpE3dWomxpJmiDJFJIEVVUhiiLsdjusVqvnkGUZPm43jMOIpmngn3xNsF6vsdls9OfTZIQ4n9H3vVYjhJhkv0LwHWEYIs9zDRJalrWMMDknuF6v6C8XFGWpSj4tI0zTFLdx1GWzn4vIiDiOUdeNNoRlswWLCYui0CAZ87aIUMoUV1XuMAxaoed5cBzn9bjcTUkmU7qu09E5Ho/vk82xYf+klAiCYLkpZxVsEtZfwbYOh+WxuagMMjZdd1meQ6rq2k5nkIuAPTwoldvt9v0eMjJ0mIScZS6F90dPuTxcB112luVa3cIcSoxq9Bgblr/Y5TAKdf5YchAGyzKoTYkE2qpFXaqNXdSQQuJgKFPWW71oaQ57Oi/dxz1sJbo/HYqPAqIXKD4LZGOGfJz2I0eRzvu+r++Xh4SmZ8IRDuIqhqgEsi5Dc1Ob55KDoWdOTyqbtm0/R8jS4jBGUzW6XHmW8L0Tjs6UR6o7vRL2zX6DQAQQUsDxXdAklse1xtkm6UsrLcgDpKNSNkikv1JUfYVMlUlC13U15smhMf9ivov/u2at3IL3w4Nbu7A9G5Zt6X1I8MJi7+Z34uge7880jO1w1Jk7oVM6cEelpHXhlZOjVPU9Iix7jtD8Od/bs3p91hWqb30Ir/DgORPh3Lv5EMk48/yNqgiXar/+nCr5zLN/Aa3bYMWw2aF9AAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"GitLab&#39;s build log\"\n        title=\"GitLab&#39;s build log\"\n        src=\"/static/e8da8ef44b4209959bd9f539f372adb1/78d47/gitlab-build.png\"\n        srcset=\"/static/e8da8ef44b4209959bd9f539f372adb1/56d15/gitlab-build.png 200w,\n/static/e8da8ef44b4209959bd9f539f372adb1/d9f49/gitlab-build.png 400w,\n/static/e8da8ef44b4209959bd9f539f372adb1/78d47/gitlab-build.png 800w,\n/static/e8da8ef44b4209959bd9f539f372adb1/64756/gitlab-build.png 1200w,\n/static/e8da8ef44b4209959bd9f539f372adb1/42cbc/gitlab-build.png 1600w,\n/static/e8da8ef44b4209959bd9f539f372adb1/55862/gitlab-build.png 1648w\"\n        sizes=\"(max-width: 800px) 100vw, 800px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n  </a>\n    </span>\n    <figcaption class=\"gatsby-resp-image-figcaption\"><p>GitLab's build log</p></figcaption>\n  </figure></p>\n<h1>Some errors and solutions</h1>\n<h3>Gitlab CI: <code class=\"language-text\">Conversion error: Jekyll::Converters::Scss encountered an error while converting &#39;assets/css/style.scss&#39;: Invalid US-ASCII character &quot;\\xE2&quot; on line 5</code></h3>\n<p>Solution:\nChange encoding to UTF-8.</p>\n<p><a href=\"https://github.com/jekyll/jekyll/issues/4268#issuecomment-396165096\">Reference</a></p>\n<h3>Gitlab CI: Filed to extract &#x26; 404 HTTP error at the domain name</h3>\n<p>Solution:\nThe folder must be named <code class=\"language-text\">public</code> instead of <code class=\"language-text\">_site</code> etc.</p>\n<p><a href=\"https://docs.gitlab.com/ce/user/project/pages/getting_started_part_four.html#the-public-directory\">Reference</a> </p>\n<h3>Browser: Multiple 404 errors returned by .css files</h3>\n<p>Solution:\n<code class=\"language-text\">username.gitlab.io/css/monokai.css</code> is invalid due to the missing repo name in the path.</p>\n<ul>\n<li>Option 1 (Chosen): add a domain name</li>\n<li>Option 2: change <code class=\"language-text\">baseurl</code> to in include the full path <code class=\"language-text\">username.gitlab.io/[reponame]/css/monokai.css</code> at <code class=\"language-text\">_config.yml</code></li>\n</ul>\n<p><a href=\"https://github.com/jekyll/jekyll/issues/4268#issuecomment-377681274\">Reference</a></p>\n<p>/Chris</p>","excerpt":"Last year, I had some fun building a Github Page alternative with AWS CloudFormation and Travis CI. In retrospect, there was some clear…"}},"pageContext":{"type":"posts","next":{"frontmatter":{"path":"/cornell-tech","title":"Release Notes: My Graduation from Cornell Tech CS v3","tags":["cornell-tech","cornell","master","mba","cs","nyc"]},"fileAbsolutePath":"/opt/build/repo/src/posts/2017-06-15-graduation_from_cornell_tech_cs_v3.md"},"previous":{"frontmatter":{"path":"/nyancat-spectrum","title":"Deploy Nyancat Server to Google Cloud using containers in 5 mins","tags":["docker","container","telnet","google-cloud"]},"fileAbsolutePath":"/opt/build/repo/src/posts/2018-10-02-nyancat-server-gcp-container.md"}}},"staticQueryHashes":["1425477374","3128451518"]}