Surge.sh Preview #5642
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Surge.sh Preview | |
on: | |
workflow_run: | |
workflows: ["Quarkus Documentation CI"] | |
types: | |
- completed | |
defaults: | |
run: | |
shell: bash | |
jobs: | |
preview: | |
runs-on: ubuntu-latest | |
permissions: | |
actions: read | |
# this should be enough to maintain comments as commenting on pull requests is done through an issues API | |
issues: write | |
pull-requests: read | |
if: github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.conclusion == 'success' | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
repository: quarkusio/quarkusio.github.io | |
fetch-depth: 5000 | |
fetch-tags: false | |
- uses: actions/checkout@v4 | |
with: | |
repository: quarkusio/quarkus | |
path: quarkus-main | |
- name: Install git-restore-time | |
run: sudo apt-get install -y git-restore-mtime | |
- name: Restore mtime | |
run: git restore-mtime | |
- name: Download PR Artifact | |
uses: actions/download-artifact@v4 | |
with: | |
run-id: ${{ github.event.workflow_run.id }} | |
name: documentation | |
path: documentation-temp | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Store PR id as variable | |
id: pr | |
run: | | |
pr=$(<documentation-temp/pr-id.txt) | |
if ! [[ $pr =~ ^[0-9]+$ ]] ; then | |
echo "PR id extracted from documentation-temp/pr-id.txt is not a number: $pr" | |
exit 1 | |
fi | |
echo "id=$(<documentation-temp/pr-id.txt)" >> $GITHUB_OUTPUT | |
- name: Sync documentation | |
shell: bash | |
# make sure we override the script coming from the artifact with the version from the main repository | |
run: | | |
rm ./documentation-temp/docs/sync-web-site.sh | |
cp -a ./quarkus-main/docs/sync-web-site.sh ./documentation-temp/docs/ | |
chmod 755 ./documentation-temp/docs/sync-web-site.sh | |
./documentation-temp/docs/sync-web-site.sh main ../../ | |
rm -rf documentation-temp | |
rm -rf quarkus-main | |
- name: Set up ruby | |
uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: 3.2.3 | |
- name: Build Jekyll site | |
uses: limjh16/jekyll-action-ts@v2 | |
with: | |
enable_cache: true | |
### Enables caching. Similar to https://github.com/actions/cache. | |
# | |
format_output: false | |
### Uses prettier https://prettier.io to format jekyll output HTML. | |
# | |
# prettier_opts: '{ "useTabs": true }' | |
### Sets prettier options (in JSON) to format output HTML. For example, output tabs over spaces. | |
### Possible options are outlined in https://prettier.io/docs/en/options.html | |
# | |
prettier_ignore: '*' | |
### Ignore paths for prettier to not format those html files. | |
### Useful if the file is exceptionally large, so formatting it takes a while. | |
### Also useful if HTML compression is enabled for that file / formatting messes it up. | |
# | |
# jekyll_src: sample_site | |
### If the jekyll website source is not in root, specify the directory. (in this case, sample_site) | |
### By default, this is not required as the action searches for a _config.yml automatically. | |
# | |
#gem_src: quarkusio | |
### By default, this is not required as the action searches for a _config.yml automatically. | |
### However, if there are multiple Gemfiles, the action may not be able to determine which to use. | |
### In that case, specify the directory. (in this case, sample_site) | |
### | |
### If jekyll_src is set, the action would automatically choose the Gemfile in jekyll_src. | |
### In that case this input may not be needed as well. | |
# | |
# key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }} | |
# restore-keys: ${{ runner.os }}-gems- | |
### In cases where you want to specify the cache key, enable the above 2 inputs | |
### Follows the format here https://github.com/actions/cache | |
# | |
custom_opts: '--config _config.yml,_only_latest_guides_config.yml' | |
### If you need to specify any Jekyll build options, enable the above input | |
### Flags accepted can be found here https://jekyllrb.com/docs/configuration/options/#build-command-options | |
- name: Reduce the size of the website to be compatible with surge | |
run: | | |
find assets/images/posts/ -mindepth 1 -maxdepth 1 -type d -mtime +100 -exec rm -rf _site/{} \; | |
find newsletter/ -mindepth 1 -maxdepth 1 -type d -mtime +100 -exec rm -rf _site/{} \; | |
rm -rf _site/assets/images/worldtour/2023 | |
rm -rf _site/assets/images/desktopwallpapers | |
- name: Publishing to surge for preview | |
id: deploy | |
run: npx surge ./_site --domain https://quarkus-pr-main-${PR_ID}-preview.surge.sh --token ${{ secrets.SURGE_TOKEN }} | |
env: | |
PR_ID: ${{ steps.pr.outputs.id }} | |
- name: Update PR status comment on success | |
uses: actions-cool/maintain-one-comment@v3.2.0 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
body: | | |
🎊 PR Preview ${{ github.sha }} has been successfully built and deployed to https://quarkus-pr-main-${{ steps.pr.outputs.id }}-preview.surge.sh/version/main/guides/ | |
- Images of blog posts older than 3 months are not available. | |
- Newsletters older than 3 months are not available. | |
<img width="300" src="https://user-images.githubusercontent.com/507615/90250366-88233900-de6e-11ea-95a5-84f0762ffd39.png"> | |
<!-- Sticky Pull Request Comment --> | |
body-include: '<!-- Sticky Pull Request Comment -->' | |
number: ${{ steps.pr.outputs.id }} | |
- name: Update PR status comment on failure | |
if: ${{ failure() }} | |
uses: actions-cool/maintain-one-comment@v3.2.0 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
body: | | |
😭 Deploy PR Preview failed. | |
<img width="300" src="https://user-images.githubusercontent.com/507615/90250824-4e066700-de6f-11ea-8230-600ecc3d6a6b.png"> | |
<!-- Sticky Pull Request Comment --> | |
body-include: '<!-- Sticky Pull Request Comment -->' | |
number: ${{ steps.pr.outputs.id }} |