Repository navigation
Release Boffo with GitHub Actions - #11
Merged
Merged
Conversation
build-docs.yml asked for the retired ubuntu-20.04 runner, so its runs queued forever and the site stopped deploying. docs.yml builds with build-sphinx and checks the result with deploy-site from caltechlibrary/workflows, then deploys with actions/deploy-pages. Pull requests build the site without deploying it. The documentation dependencies are pinned in docs/requirements.txt. Deploying needs Settings → Pages → Source set to "GitHub Actions"; the gh-pages branch is no longer used after that. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
lint.yml runs jshint, htmlhint, markdownlint, yamllint, and jsonlint on pull requests and pushes to main, one job per linter, with pinned tool versions and the existing configuration files. It replaces markdown-linter.yml and yaml-linter.yml, and covers what they missed: Code.js, the HTML files, codemeta.json, CITATION.cff, and Markdown outside the top directory. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
release.yml takes a version, runs .github/scripts/prepare-release.sh, commits the result to main as "chore: release X.Y.Z", and opens a draft release for vX.Y.Z on that commit with the shared create-release action. The draft's notes are the version's section of CHANGELOG.md. A dry run, the default, shows the diff and the notes in the job summary and changes nothing. prepare-release.sh checks that the version is X.Y.Z, newer than codemeta.json's, untagged, and that [Unreleased] has entries. It then sets the version and date in codemeta.json, copies them and the other metadata into CITATION.cff, and turns [Unreleased] in CHANGELOG.md into the version's section with its compare link. It only edits files, so it can be run locally to preview a release. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
post-release.yml runs when the InvenioRDM GitHub Archiver workflow succeeds, or by hand. It runs .github/scripts/update-doi.sh, which asks CaltechDATA for the latest version of the record in codemeta.json's relatedLink and points CITATION.cff's doi and codemeta.json's relatedLink at it, then commits "chore: update DOI for release X.Y.Z" to main. The script retries until the latest record is for the version in codemeta.json, so a slow index can't put the previous release's DOI in CITATION.cff. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
apps-script.yml is run by hand after a release is published. It checks out the release tag, pushes to the Caltech Apps Script project with clasp 3.4.1, creates a numbered version, and puts the number in the job summary with a link to the Marketplace SDK's App Configuration page, where a person sets it to ship the update. The Apps Script API doesn't accept service accounts, so clasp uses a person's ~/.clasprc.json from the CLASPRC_JSON secret of the apps-script environment. The job refuses to run on a draft release. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The new "Releasing Boffo" page covers the one-time setup (the Pages source, IGA's token, and the apps-script environment with its clasp credentials and their risks), the steps of a release from the Release workflow through the Marketplace SDK version number, what to do when a step fails, and running the release scripts locally. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
GitHub Actions workflows make releases now, so release, post-release, sync-projects, deploy, instructions, and their helpers are gone, along with .clasp.json.public, which only sync-projects used. The Makefile no longer needs gh. Kept targets are fixed on the way: - lint checks the files lint.yml checks, taken from git ls-files, so it no longer descends into untracked directories such as .claude/. - watch passes clasp an absolute path to .clasp.json.caltech, which clasp 3 requires for a project file not named .clasp.json. - clean no longer depends on targets that don't exist. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The "Copying the Google Apps Script project" method had people copy a public Apps Script project in the former maintainer's personal Google account. Nothing updates that copy, and its 1.9.1 code fails on FOLIO servers that accept only short-lived access tokens. Installing from source now means pushing the files with clasp. That section now turns on the Apps Script API, logs in, creates .clasp.json (the repository has none), and says how to update later. The test-deployment steps that the clasp method also needs move into a "Running Boffo in a spreadsheet" section, and the five screenshots used only by the copy method are removed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Caltech Library has its own Google Workspace, separate from Caltech's. The Apps Script project, the account that runs clasp, the Workspace policies that can end its token, and the add-on's Marketplace audience all belong to the Library's, so the release docs, the Apps Script workflow's header, and the install-from-source intro now say so. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Replaces the
Makefilerelease steps with GitHub Actions workflows, using the shared actions incaltechlibrary/workflowswhere they fit. The release instructions are indocs/releasing.md.Workflows
docs.yml)mainand PRs touchingdocs/; by handbuild-sphinx@v1and checks the output withdeploy-site@v1, then deploys to Pages (not on PRs). Replacesbuild-docs.yml, which asked for the retiredubuntu-20.04runner and never ran.lint.yml)mainmarkdown-linter.ymlandyaml-linter.yml.release.yml).github/scripts/prepare-release.sh, which updatescodemeta.json,CITATION.cff, andCHANGELOG.md. Commitschore: release X.Y.Ztomainand opens a draft release withcreate-release@v1, whose notes are the version’sCHANGELOG.mdsection. A person publishes the draft, which starts IGA.post-release.yml).github/scripts/update-doi.sh, which waits until CaltechDATA’s latest record matches the version, records its DOI inCITATION.cffandcodemeta.json, and commits that.apps-script.yml)apps-scriptenvironmentclasp pushandcreate-version, and reports the Apps Script version number to set in the Marketplace SDK. That last step stays manual.Other changes
Makefile: the release, post-release,sync-projects,deploy, andinstructionstargets are removed, and so is.clasp.json.public. Fixes to the targets that remain:cleanfailed on missing targets,lintsearched untracked directories, andwatchneeds an absolute project path underclasp3.docs/installation.md: installing from source usesclasponly. The method that copied the public Apps Script project in the former maintainer’s account is gone, because nothing updates that copy and its 1.9.1 code fails on FOLIO servers that accept only short-lived tokens.CHANGELOG.md: entries under[Unreleased].Before or right after merging
apps-scriptwith a required reviewer, limited tomain, and add theCLASPRC_JSONsecret.docs/releasing.mdgives the steps and explains the token’s risks.Testing
prepare-release.shwas run against the real files. It rejects a version that isn’t newer, a malformed version, a malformed date, and an empty[Unreleased]section, and the files it produces pass markdownlint, yamllint, and jsonlint.update-doi.shwas run read-only against live CaltechDATA. It leaves current values alone, moves an old record ID to the latest one, and fails after retrying when the version isn’t archived yet.create-release.shwas run in dry-run mode against this repository.clasp login --auth, which needs a browser sign-in.🤖 Generated with Claude Code