Skip to content

Removing bad urls take3 #31

Removing bad urls take3

Removing bad urls take3 #31

Workflow file for this run

name: Build Hugo Website
on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
paths:
- 'docs/website/**'
- 'scripts/website/**'
- '.github/workflows/website-docs.yml'
push:
branches: [main, master]
paths:
- 'docs/website/**'
- 'scripts/website/**'
- '.github/workflows/website-docs.yml'
workflow_dispatch:
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
env:
CLOUDFLARE_TOKEN: ${{ secrets.CLOUDFLARE_TOKEN || secrets.CF_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID || secrets.CF_ACCOUNT_ID }}
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up Hugo
uses: peaceiris/actions-hugo@v3
with:
hugo-version: 'latest'
extended: true
- name: Set up Java 25
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: '25'
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.3'
- name: Install Asciidoctor tooling
run: |
set -euo pipefail
gem install --no-document asciidoctor rouge
- name: Download latest OTA skins
run: |
set -euo pipefail
scripts/website/fetch_ota_skins.sh
env:
GITHUB_TOKEN: ${{ github.token }}
- name: Update developer guide PDF redirect
run: |
set -euo pipefail
scripts/website/update_developer_guide_redirect.sh
env:
GITHUB_TOKEN: ${{ github.token }}
- name: Build website
run: |
set -euo pipefail
scripts/website/build.sh
env:
WEBSITE_INCLUDE_JAVADOCS: "true"
WEBSITE_INCLUDE_DEVGUIDE: "true"
- name: Validate internal links and images
uses: lycheeverse/lychee-action@v2
with:
args: >-
--offline
--no-progress
docs/website/public/**/*.html
- name: Reject absolute codenameone.com links
run: |
set -euo pipefail
report="docs/website/reports/disallowed-codenameone-links.txt"
mkdir -p "$(dirname "$report")"
rg -n --no-heading -S '\]\((https?:)?//(www\.)?codenameone\.com([/:?#)]|$)|<https?://(www\.)?codenameone\.com([/:?#>]|$)|(href|src)=["'"'"']https?://(www\.)?codenameone\.com([/:?#]|$)' \
docs/website/content docs/website/layouts docs/website/static > "$report" || true
if [ -s "$report" ]; then
echo "Disallowed absolute codenameone.com links found (use relative URLs or non-www subdomains):" >&2
sed -n '1,200p' "$report" >&2
exit 1
fi
- name: Upload codenameone link policy report
if: ${{ always() }}
uses: actions/upload-artifact@v4
with:
name: codenameone-link-policy-report
path: docs/website/reports/disallowed-codenameone-links.txt
if-no-files-found: ignore
- name: Validate OTA skin output
run: |
set -euo pipefail
test -f docs/website/public/OTA/Skins.xml
- name: Validate developer guide redirect output
run: |
set -euo pipefail
test -f docs/website/public/_redirects
grep -Eq '^/files/developer-guide\.pdf https://github\.com/codenameone/CodenameOne/releases/download/.+/developer-guide\.pdf 302$' docs/website/public/_redirects
- name: Validate RSS output and alias
run: |
set -euo pipefail
test -f docs/website/public/blog/index.xml
test ! -f docs/website/public/index.xml
grep -Eq '^/feed\.xml /blog/index\.xml 302$' docs/website/public/_redirects
- name: Upload built site artifact
uses: actions/upload-artifact@v4
with:
name: website-preview
path: docs/website/public
if-no-files-found: error
- name: Check Cloudflare deploy credentials
if: ${{ github.event_name == 'push' && (github.ref_name == 'main' || github.ref_name == 'master') && env.CLOUDFLARE_TOKEN == '' }}
run: |
echo "::warning::Skipping Cloudflare Pages deploy because no API token secret is configured. Set CLOUDFLARE_TOKEN (preferred) or CF_API_TOKEN."
- name: Deploy to Cloudflare Pages
if: ${{ github.event_name == 'push' && (github.ref_name == 'main' || github.ref_name == 'master') && env.CLOUDFLARE_TOKEN != '' }}
uses: cloudflare/wrangler-action@v3
env:
# Keep these env vars explicit so Wrangler can authenticate in non-interactive CI.
CLOUDFLARE_API_TOKEN: ${{ env.CLOUDFLARE_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ env.CLOUDFLARE_ACCOUNT_ID }}
with:
# Also pass through action inputs for compatibility with wrangler-action versions.
apiToken: ${{ env.CLOUDFLARE_TOKEN }}
accountId: ${{ env.CLOUDFLARE_ACCOUNT_ID }}
command: >-
pages deploy docs/website/public
--project-name=${{ vars.CLOUDFLARE_PAGES_PROJECT_NAME || secrets.CLOUDFLARE_PAGES_PROJECT_NAME || secrets.CF_PAGES_PROJECT_NAME || 'codenameone' }}
--branch=${{ vars.CLOUDFLARE_PAGES_PRODUCTION_BRANCH || secrets.CLOUDFLARE_PAGES_PRODUCTION_BRANCH || 'main' }}