muerwre.github.io/content/Docker/Github pages with drone-ci.md
2022-11-04 18:29:11 +06:00

1.8 KiB

To deploy github pages with Drone-ci you will need .drone.yml as specified below. You also should define secrets github_username and github_token (get it here) in your drone's repository setup.

Github repository should be named as yourname.github.io and it could be accessed at https://yourname.github.io/. Otherwise it'll be available at https://yourname.github.io/repo-name/, what you might not like.

You should create branch named gh-pages in that repo and setup GH Pages at https://github.com/<yourusername>/<yourusername>.github.io/settings/pages.

This config will update gh-pages branch in your project, which will contain only generated content. I know, that's bad, but there's no better way to do that with generic drone plugins.

kind: pipeline
name: build
type: docker

platform:
  os: linux
  arch: amd64

steps:
  - name: build
    image: node:16
    commands:
      - yarn
      - yarn generate
      - rm -rf ./docs
      - mv ./.output/public ./docs
      - touch ./docs/.nojekyll
  - name: publish
    image: plugins/gh-pages
    settings:
      target_branch: gh-pages
      username:
        from_secret: github_username
      password:
        from_secret: github_token

Here we're moving ./.output/public to ./docs, because #nuxt creates symlink for docs and git can't work with that.

Also we create .nojekyll at the root of repo, so github's internal engine won't ignore files that start with underscore.

Additional reading