Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions .github/actions/checks/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,8 @@ runs:
shell: bash
run: node scripts/changelog-check.js

# A release must also agree with itself: the newest dated section, the
# package version and the demo pin all name one version, and nothing is left
# under [Unreleased].
# A release must also agree with itself: the newest dated section and the
# package version name one version, and nothing is left under [Unreleased].
- name: Check the changelog describes this release
if: inputs.mode == 'release'
shell: bash
Expand Down
6 changes: 2 additions & 4 deletions .github/workflows/release-prep.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,7 @@ jobs:
with:
node-version: '24'

# Dates the section, writes the compare link, bumps api/package.json and
# moves the demo pin in render.yaml.
# Dates the section, writes the compare link and bumps api/package.json.
- name: Prepare the release
env:
VERSION: ${{ inputs.version }}
Expand All @@ -65,7 +64,7 @@ jobs:
git config user.name 'SandObserver'
git config user.email '260779319+SandObserver@users.noreply.github.com'
git checkout -b "${BRANCH}"
git add CHANGELOG.md api/package.json render.yaml
git add CHANGELOG.md api/package.json
git commit -m "Release ${VERSION}"
git push "https://x-access-token:${GH_TOKEN}@github.com/${REPO}.git" "HEAD:${BRANCH}"
gh pr create \
Expand All @@ -77,7 +76,6 @@ jobs:
'**Summary**' \
"- Date Unreleased as ${VERSION} and add its compare link." \
"- Bump api/package.json to ${VERSION}." \
"- Pin the demo image to ${VERSION} in render.yaml." \
'' \
'**Testing**' \
'The changelog gate ran in release mode before this branch was pushed. Merging this tags the release and publishes the image.' \
Expand Down
3 changes: 1 addition & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,7 @@
<p align="center"><img src="docs/screenshot.png" width="85%" alt="Stackyard dashboard"></p>


<p align="center">Try it: <b><a href="https://demo.sandobserver.com">demo.sandobserver.com</a></b><br>
<sub><i>Note: The first demo visit may take up to a minute due to Render's free-tier cold start.</i></sub>
<p align="center">Try it: <b><a href="https://demo.sandobserver.com">demo.sandobserver.com</a></b>

Most dashboards are a wall of numbers and charts. Stackyard is the opposite: a calm, launcher-style grid of app tiles, folders, and a small number of
*genuinely useful* widgets, running in a single container. Built to be glanced at a hundred times a day without feeling cluttered.
Expand Down
23 changes: 0 additions & 23 deletions render.yaml

This file was deleted.

10 changes: 2 additions & 8 deletions scripts/changelog-check.js
Original file line number Diff line number Diff line change
Expand Up @@ -159,8 +159,8 @@ function checkStyle(version) {

const short = text => (text.length > 60 ? `${text.slice(0, 57)}...` : text);

/** The release-time half: the changelog, the package version and the demo pin
must all name the same release. */
/** The release-time half: the changelog and the package version must name the
same release. */
function checkRelease(doc, version) {
const releases = cl.released(doc);
const newest = releases[0];
Expand All @@ -175,12 +175,6 @@ function checkRelease(doc, version) {
const pkg = JSON.parse(fs.readFileSync(path.join(ROOT, 'api', 'package.json'), 'utf8'));
if (pkg.version !== version) fail(1, `api/package.json is ${pkg.version}, not ${version}`);

const render = fs.readFileSync(path.join(ROOT, 'render.yaml'), 'utf8');
const pinned = /stackyard:(\S+)/.exec(render);
if (!pinned || pinned[1] !== version) {
fail(1, `render.yaml pins the demo to ${pinned ? pinned[1] : 'nothing'}, not ${version}`);
}

const previous = releases[1];
if (previous && newest) {
const implied = cl.impliedBump(newest);
Expand Down
1 change: 0 additions & 1 deletion scripts/dockerhub-description.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ const HEADER = `# Stackyard
![Stackyard dashboard](${RAW}/docs/screenshot.png)

Try it: **[demo.sandobserver.com](https://demo.sandobserver.com)**
The first demo visit may take up to a minute due to Render's free-tier cold start.

Documentation: **[stackyard.sandobserver.com/docs](https://stackyard.sandobserver.com/docs/)**

Expand Down
8 changes: 1 addition & 7 deletions scripts/release-prep.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/usr/bin/env node
/* Prepares a release: dates the [Unreleased] section, adds its compare link,
bumps api/package.json, and moves the demo image pin in render.yaml.
and bumps api/package.json.

Writes files. Run it on a branch, never on the default branch.

Expand Down Expand Up @@ -61,14 +61,8 @@ function main(argv) {
const bumped = pkg.replace(/("version":\s*")[^"]+(")/, `$1${version}$2`);
if (bumped === pkg) die(`${pkgPath} has no version field to bump`);

const renderPath = 'render.yaml';
const render = read(renderPath);
const pinned = render.replace(/(stackyard:)\d+\.\d+\.\d+\S*/, `$1${version}`);
if (pinned === render) die(`${renderPath} does not pin an image tag; the demo would stay on the old release`);

write('CHANGELOG.md', changed.markdown);
write(pkgPath, bumped);
write(renderPath, pinned);

console.error(`release-prep: ${changed.previous ?? 'first release'} -> ${version} (${date})`);
console.log(`version=${version}`);
Expand Down
2 changes: 1 addition & 1 deletion test/repo/release-prep-order.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
@param {string} name @returns {string} absolute path to the copy */
function seededRepo(name) {
const dir = path.join(tmpDir(name), 'repo');
for (const p of ['scripts', 'api/package.json', 'render.yaml']) {
for (const p of ['scripts', 'api/package.json']) {
const dst = path.join(dir, p);
fs.mkdirSync(path.dirname(dst), { recursive: true });
fs.cpSync(path.join(ROOT, p), dst, { recursive: true });
Expand Down
Loading