-
Notifications
You must be signed in to change notification settings - Fork 32
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Is there an easy way to preview the new article? #43
Comments
SummaryThe standard DetailsTo make preview useful, we should be able to change The standard deployment action # Sample workflow for building and deploying a Hugo site to GitHub Pages
name: Deploy Hugo site to Pages
on:
# Runs on pushes targeting the default branch
push:
branches:
- main
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false
# Default to bash
defaults:
run:
shell: bash
jobs:
# Build job
build:
runs-on: ubuntu-latest
env:
HUGO_VERSION: 0.128.0
steps:
- name: Install Hugo CLI
run: |
wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \
&& sudo dpkg -i ${{ runner.temp }}/hugo.deb
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0
- name: Setup Pages
id: pages
uses: actions/configure-pages@v5
- name: Install Node.js dependencies
run: "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true"
- name: Build with Hugo
env:
HUGO_CACHEDIR: ${{ runner.temp }}/hugo_cache
HUGO_ENVIRONMENT: production
run: |
hugo \
--gc \
--minify \
--baseURL "${{ steps.pages.outputs.base_url }}/"
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: ./public
# Deployment job
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4 The alternative action actions-gh-pages, does not work. I tried changing branches, and I always get - name: Deploy
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./public |
We can probably use preview-docs.espressif.com for this. For a PR, an action would build the site and SCP it over to preview-docs. This would probably be limited to authors who can push branches directly to this repo. It wouldn't work if a PR is done from a fork, because the forked repository wouldn't have access to secrets (e.g. SSH keys) required for deployment. Still, we could add all the regular authors here as contributors and at least for them, the workflow would be simplified. |
@hfudev also shared this: Worth checking:
Accepting fork PRs can pose security threats:
We can try Netlify and see if it introduces any vulnerabilities. If yes, we can go with either Deploy PR Preview or |
Another interesting approach: https://stackoverflow.com/questions/70620223/deploying-hugo-onto-staging-website-from-feature-branch |
Summary of work doneOut of the implementation ideas mentioned in the comments above, all had their drawbacks or downsides. I tried registering with Netlify. This service opened my account and immediately blocked it with a request to share my ID and other wild things. Eventually, I came to realize that our best bet is to use the S3 bucket for previews. Implement preview on the S3 bucketThis was my initial list of things to consider
All this has been largely implemented in the merged PRs. Along the way a number of issues were fixed and additional features implemented. #348
After merge, I still had issues previewing changes from fork PRs. The workflow didn't have access to GitHub secrets because it is triggered with #359
Still the previews didn't work the way I expected. #347
After merging this PR, a few PR previews appeared just fine, but #178 showed under Testing environmentThe PRs #348, #359, and #347 were implemented without a proper testing environment, and the tests were done after merge. After merging #347, it was clear that the remaining issues required a testing environment to avoid merging more half-tested PRs. In #361
#367This PR dealt with less urgent but nevertheless important task of cleaning up after PR merge or close.
#374This PR dealt with some residual issues:
|
@pedrominatel @georgik All the merged PRs have added the necessary functionality to create previews, notify about them, and remove previews. This issue can be closed. Feel free to open new issues for bug reports and new feature requests. |
Originally posted by @tore-espressif in #37 (comment)
As of now the only way to preview a new article in a PR is:
hugo server
.Automate the preview process by building the PR branch with Hugo and deploying it using GitHub Actions:
The text was updated successfully, but these errors were encountered: