Skip to content

Update Javadoc

Update Javadoc #29

name: Update Javadoc
on:
schedule:
- cron: '0 0 * * 1' # This runs the workflow every Monday at midnight UTC
workflow_dispatch:
jobs:
fetch-latest-release:
runs-on: ubuntu-latest
env:
REPO: "processing/processing4"
outputs:
commit_sha: ${{ steps.get-commit-sha.outputs.commit_sha }}
steps:
- name: Get the latest release tag and commit SHA
id: get-commit-sha
run: |
# Step 1: Get the latest release tag
latest_tag=$(curl --silent "https://api.github.com/repos/${{ env.REPO }}/releases/latest" | jq -r .tag_name)
if [ -z "$latest_tag" ]; then
echo "Failed to retrieve the latest tag."
exit 1
fi
echo "Latest tag: $latest_tag"
# Step 2: Get the SHA associated with the tag
response=$(curl --silent "https://api.github.com/repos/${{ env.REPO }}/git/ref/tags/$latest_tag")
type=$(echo "$response" | jq -r '.object.type')
tag_sha=$(echo "$response" | jq -r '.object.sha')
# Step 3: Check if the tag points directly to a commit
if [ "$type" == "commit" ]; then
commit_sha="$tag_sha"
else
# If the tag points to an annotated tag, retrieve the commit SHA
commit_sha=$(curl --silent "https://api.github.com/repos/${{ env.REPO }}/git/tags/$tag_sha" | jq -r '.object.sha')
fi
echo "Commit SHA: $commit_sha"
echo "commit_sha=$commit_sha" >> $GITHUB_ENV
echo "commit_sha=$commit_sha" >> $GITHUB_OUTPUT
build-javadoc:
runs-on: ubuntu-latest
needs: fetch-latest-release
env:
REMOTE_URL: "https://github.com/processing/processing4.git"
COMMIT_SHA: ${{ needs.fetch-latest-release.outputs.commit_sha }}
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
distribution: 'adopt'
java-version: '17'
- name: Ensure Ant is installed
run: |
if ! command -v ant &> /dev/null; then
echo "Ant not found, installing..."
sudo apt-get update && sudo apt-get install -y ant
else
echo "Ant is already installed"
fi
- name: Fetch and checkout the specific commit
run: |
git clone ${{ env.REMOTE_URL }} processing4
cd processing4
git checkout ${{ env.COMMIT_SHA }}
- name: Generate Javadocs
working-directory: processing4/build
run: |
ant doc
- name: Add .nojekyll file
run: echo > processing4/build/javadoc/.nojekyll
- name: Cache Javadocs
uses: actions/cache@v4
with:
path: processing4/build/javadoc
key: javadocs-${{ env.COMMIT_SHA }}
restore-keys: |
javadocs-
- name: Upload Javadocs artifact
uses: actions/upload-pages-artifact@v3
with:
name: github-pages
path: processing4/build/javadoc
- name: Clean up the processing4 directory
run: |
rm -rf processing4/
deploy-javadoc:
needs: build-javadoc
permissions:
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
with:
artifact_name: github-pages
- name: Echo the output page URL
run: echo "Your site is live at ${{ steps.deployment.outputs.page_url }}"
commit-javadoc:
needs: [build-javadoc, fetch-latest-release]
runs-on: ubuntu-latest
env:
COMMIT_SHA: ${{ needs.fetch-latest-release.outputs.commit_sha }}
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Restore Javadocs from cache
uses: actions/cache@v4
with:
path: processing4/build/javadoc
key: javadocs-${{ env.COMMIT_SHA }}
restore-keys: |
javadocs-
- name: Configure Git
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
- name: Copy Javadocs to /doc folder
run: |
mkdir -p doc
cp -r processing4/build/javadoc/* doc/
git add doc/
if git diff-index --quiet HEAD; then
echo "No changes to commit"
else
git commit -m "Update Javadocs"
git push