I was trying to build a website for my R package using pkgdown R package. FYI, I am not using <username>.github.io.
Following the instrucution (https://pkgdown.r-lib.org/articles/pkgdown.html#publishing), I ran
usethis::use_pkgdown_github_pages()
I have created 'docs' folder and html files in my master branch and an empty 'gh-pages' branch. When I checked locally built pages using pkgdown::build_site(), it works perfect.
However, when I open <username>.github.io/<packagename>, I have 404 error (files not found). Is this because of empty gh-pages branch? Or, is this because I am not using <username>.github.io? The instruction does not provide much, so could you share me any extra documents that explains how to publish a project website on Github using pkgdown?
Thank you!
Sorry for not providing an reproducible example.
I tried re-run
usethis::use_pkgdown_github_pages()
command
commit and push the changes on md files + use pkgdown::build_site() to check locally.
I thought if I made changes on the md files and push the changes to GitHub master branch, pre-setuped bots or codes by use_pkgdown_github_pages() builds and publish the webpage.
Just want to update my situation:
I don't know how and why, but 'gh-pages' branch is mirroring the main/document folder for some reason. Github action called "pages build and deployment" ran successfully from mirrored 'gh-pages' branch.
If I set my githubpages repo to <username>.github.io, anything in the root gets displayed on <username>.github.io
But I want to use the /docs feature so I can have a static site generator in the root of the project that outputs to the /docs folder
so the docs say
- have a /docs folder in the root of the repository
- not follow the repository naming scheme <username>.github.io or <orgname>.github.io
so, I rename my repo, "blah"
but now nothing shows up at <username>.github.io and the page is at <username>.github.io/blah
so when using /docs how do you set the repo as the root of the site <username>.github.io?
After contacting github support, it turns out you can't ( currently ) you need to use one of their other methods that use <username>.github.io
I found the same problem with this.
After hours of try I figured out that:
If you use a repository named '.github.io' or '.github.com', you could only use their pre-provided file structure, which means you can't select the source for the github-pages service.
If you rename the repo to other name which not match the auto-serve pattern(.github.io| ...com), you will be able to choose the source.
If case [2], you need to add an empty file named '.nojekyll' under /docs folder, and put all files including CNAME and index.html and asset files(images, css,etc.,) here.
ref: https://www.docslikecode.com/articles/github-pages-python-sphinx/
*Heading a issue while rendering posts as static pages hosted in github ...
What I am willing to complete is a personal blog environment with Hugo!
By so far I have run the site locally and went well...but while deploying in Github the only thing I get when I visit the site is
Blockquote
README.md rendered as index page on :https://passager07.github.io/
I am not making it to access the ...content/post/[post].md
Blockquote
https://github.com/passager07/passager07.github.io
Hugo is for generating a static html pages: that measn you need your GutHub page space to points to those generated html pages, not md files.
You can generate those html pages in a docs folder (since August 2016) or in a gh-pages branch.
See more at "Hugo: Hosting on GitHub Pages", which uses for instance a config.toml with:
publishDir: "docs"
After running hugo, push your master branch to the remote repo and choose the docs folder as the website source of your repo.
Solution of this problem was found by :
Constructing my new repository without Readme.md file and licence.
Playing around on localhost with hugo and all the configuration (including theme) to get the greatest satisfaction!
Making sure that public folder is created running hugo
Getting a .gitingore file on public folder
Pushing it to my repository on master branch
After this steps I let https://www.netlify.com do the rest by automatic deployment!
I cannot figure out why I am getting a 404 error at http://rachaelsalter.github.io
I am using Middleman and the middleman-deploy gem. Everything seemed to work fine with the deploy and I have an index.html file.
Any help would be very much appreciated.
You're pushing to a user repository (userName.github.io), so you need to deploy your generated code to master branch. See github pages documentation.
In your config.rb file, you must change deploy.branch variable witch is gh-pages by default, to master
activate :deploy do |deploy|
deploy.method = :git
deploy.branch = 'master'
# ... other deploy setup
end
If you're versioning your sources, you will have to move them to another branch like sources.
Every GitHub repository can have (or be) a GitHub Pages website, that can be built with Jekyll. GitHub builds the site every time you push a new commit.
Is there a way to force the refresh of the Github Pages website without pushing a new commit?
From GitHub support, 2014-06-07:
It's not currently possible to manually trigger a rebuild, without pushing a commit to the appropriate branch.
Edit:
As Andy pointed out in the comments, you can push an empty commit with the command:
git commit -m 'rebuild pages' --allow-empty
git push origin <branch-name>
Edit 2:
Thanks to GitHub Actions, it's fairly easy to trigger a daily publish: https://stackoverflow.com/a/61706020/4548500.
If you want a quick script solution, here it is. Just do the following tasks only once, and run the script whenever you want to rebuild your GitHub page.
1. Create a personal access token for the command line:
Follow the official help here to create a personal access token. Basically, you have to log in your GitHub account and go to: Settings > Developer settings > Personal access tokens > Generate new token.
Tick repo scope.
Copy the token.
2. Create the following script:
Create a file called RebuildPage.sh and add the lines:
#!/bin/bash
curl -u yourname:yourtoken -X POST https://api.github.com/repos/yourname/yourrepo/pages/builds
Here,
Replace yourname with your GitHub username.
Replace yourtoken with your copied personal access token.
Replace yourrepo with your repository name.
3. Run the script:
If you use Windows 10:
You need to setup Windows Subsystem for Linux, if not already done. Follow this to do so.
Remove the first line (#!/bin/bash) from the script and save the script as RebuildPage.bat. (i.e., replace .sh with .bat in the script file name)
Alternative to the above point: To get the double-click feature for running the .sh file:
Set bash.exe as the default program for .sh files.
Open regedit.exe and edit HKEY_CLASSES_ROOT\Applications\bash.exe\shell\open\command. Set the (Default) value to:
"C:\Windows\System32\bash.exe" -c " \"./$(grep -oE '[^\\]+$' <<< '%L')\";"
Now double-click the script wheneven you want to rebuild your GitHub page. Done!
If you use Linux/Mac, running the script is as same as running other scripts. Done!
Additional notes for the solution:
This solution utilizes a API of GitHub REST API v3. Here is the official documentation for the API.
Now that GitHub Actions are available, this is trivial to do:
# File: .github/workflows/refresh.yml
name: Refresh
on:
schedule:
- cron: '0 3 * * *' # Runs every day at 3am
jobs:
refresh:
runs-on: ubuntu-latest
steps:
- name: Trigger GitHub pages rebuild
run: |
curl --fail --request POST \
--url https://api.github.com/repos/${{ github.repository }}/pages/builds \
--header "Authorization: Bearer $USER_TOKEN"
env:
# You must create a personal token with repo access as GitHub does
# not yet support server-to-server page builds.
USER_TOKEN: ${{ secrets.USER_TOKEN }}
Sample repo that does this: https://github.com/SUPERCILEX/personal-website/actions
Pages API: https://developer.github.com/v3/repos/pages/#request-a-page-build
I had this problem for a while, and pushing to master branch didn't change anything on myapp.github.io, for two reasons :
1 - Build
No matter how many time I tried to push my work on master, build would not start. I found a workaround by modifying my file in Github online editor (open your index.html and edit it on Github website, then commit)
2 - Caching issues
Even after a successful build, I would still see the exact same page on myapp.github.io, and hard reloading with Ctrl + Shift + R wouldn't solve it. Instead, if using Chrome, inspect your page, head into the Application tab, select "Clear storage" in the left menu, and click on "Clear site data" at the bottom of the menu.
Even after I pushed my changes to GitHub repository, I was not able to see the changes today. Then I checked my repository settings for more information, there I could see, all these times the build was failing and that was the reason I was not able to see the changes.
You may also see a message as "Your site is having problems building: Unable to build page. Please try again later."
Then I was checking my recent commits and tried to find out what causes this issue. At the end I was able to fix the issue.
There was an additional comma in the tags (,) and that caused this issue.
You will not get relevant error messages if there are any issues in your .md file. I recommend you to check for the build status and compare the changes if you are facing the same issue.
This is doable as of v3 of the GitHub API, though it is currently in preview
https://developer.github.com/v3/repos/pages/#request-a-page-build
POST /repos/:owner/:repo/pages/builds
The empty commit didn't work for me, but based on #benett answer, this worked for me:
Open Postman, create a new request with this URL: https://api.github.com/repos/[user_name]/[repo_name]/pages/builds (replace with your name and repo), and select POST method.
Before you run it, go to the headers tab and add a new key Accept with the value application/vnd.github.mister-fantastic-preview+json
Now you can run it and visit your pages again.
I was having trouble refreshing even though my Github Actions was showing that my site has been deployed.
Toggling the publishing source did the trick for me. I switched the publishing source from master to content and then back to master. You can check how to change the publishing source of the branch here
I went through the same problem, to solve it I developed a githu action that works with scheduler and supports updating multiple gh-pages at the same time.
https://github.com/marketplace/actions/jekyll-update-github-pages-without-new-commit, the action update gh-pages without generate new commits.
name: Update all github pages
on:
schedule:
- cron: "30 0 * * *"
jobs:
github-pages:
runs-on: ubuntu-latest
name: Update Github Pages Initiatives
steps:
- name: Jekyll update github pages without new commit
uses: DP6/jekyll-update-pages-action#v1.0.1
with:
DEPLOY_TOKEN: ${{ secrets.GH_PAGES_DEPLOY_TOKEN }}
USER: ${{ secrets.GH_PAGES_USER }}
FILTER: 'is%3Apublic%20org%3Adp6'
Log action
Alternative Solution
You may have received an email from GitHub telling you that Jekyll did not succeed at building your site when you pushed it to your gh-pages. If this is the case, you can try to force push to trigger another build.
If you use a dedicated folder for the final website, let's say a public folder, you can try to rebuild your folder and add the folder to your commited changes. After that, you'll need to split those file into your gh-pages branch and force them to trigger another build even if the files did not change at all. The rest of the code bellow just removes the commits for the public folder for convenience and removes it from the local filesystem.
Code
git add public
git commit -am ":bug: triggering another jekyll build"
git push origin $(git subtree split --prefix public master):gh-pages --force
git reset HEAD~1
rm -rf public
Tips
If there are uncommited changes that are not part of the final site, you can stash them with the following command.
git stash
Then do the above command to manually force the Jekyll build and unstash them.
git stash pop
References
Online Git Manual
I surmise from other answers that this was once difficult?
Go to Settings->Pages
Just under "Change theme" you'll see a link to the actual Github action labeled "pages build and deployment workflow".
Click Re-run all jobs