Skip to content

release: v2.2.0-25.8.0 into main#23

Merged
Amnoor merged 16 commits intomainfrom
release/v2.2.0-25.8.0
Mar 5, 2026
Merged

release: v2.2.0-25.8.0 into main#23
Amnoor merged 16 commits intomainfrom
release/v2.2.0-25.8.0

Conversation

@Amnoor
Copy link
Contributor

@Amnoor Amnoor commented Mar 5, 2026

Summary

This PR promotes release/v2.2.0-25.8.0 into main, marking the fifth release of Runtime Node. Six development cycles on develop are consolidated here: the tzdata bump from 2025c-r0 to 2026a-r0, the addition of the TZ=UTC integrity test to the PR test suite, the Node.js upgrade from 25.7.0 to 25.8.0, two documentation update cycles aligning README.md and CONTRIBUTING.md with current develop state and adding CODE_OF_CONDUCT.md and SECURITY.md, and the addition of a full suite of GitHub issue templates and a pull request template.

Files Changed

Added:

  • CODE_OF_CONDUCT.md
  • SECURITY.md
  • .github/
    • PULL_REQUEST_TEMPLATE.md
    • ISSUE_TEMPLATE/
      • bug-report.yml
      • config.yml
      • documentation-issue.yml
      • feature-request.yml
      • new-platform-request.yml
      • node-version-bump.yml
      • tzdata-version-bump.yml

Modified:

  • Dockerfile
  • CONTRIBUTING.md
  • README.md
  • .github/
    • workflows/
      • pr-tests.yml

Deleted:

  • None

Key Changes

  • Upgraded the Node.js base image in the Dockerfile builder stage from node:25.7.0-alpine3.22 to node:25.8.0-alpine3.22, bumping the Node.js runtime bundled in the final scratch image from 25.7.0 to 25.8.0.
  • Bumped the pinned tzdata Alpine package in the Dockerfile builder stage from 2025c-r0 to 2026a-r0, delivering updated IANA timezone rules into the /usr/share/zoneinfo directory in the final image.
  • Added a TZ=UTC integrity test step to .github/workflows/pr-tests.yml immediately after the existing NODE_ENV=production test, verifying the baked-in TZ environment variable via a Node.js one-liner on every PR across both platforms.
  • Added CODE_OF_CONDUCT.md (66 lines) covering Our Pledge, Our Standards, Our Responsibilities, Scope, Enforcement, and Attribution to Contributor Covenant v2.1.
  • Added SECURITY.md (106 lines) covering supported versions, vulnerability scope, private reporting channels (GitHub Security Advisories preferred; runtimenodes@gmail.com fallback), response timeline, coordinated disclosure policy, and out-of-scope items.
  • Updated CONTRIBUTING.md with centered header alignment, a link to CODE_OF_CONDUCT.md, a new Issues section documenting all three issue templates, updated Conventional Commits and PR title examples to 25.8.0, updated the Integrity Test — TZ is UTC description and merge-readiness count to five tests, updated the tzdata component table row to 2026a-r0, updated all version tag and Dockerfile Constraints examples to 25.8.0, and tightened rejection criteria wording to use the full ENV prefix.
  • Updated README.md with centered header alignment, corrected Node.js version to 25.8.0, updated Timezone Database row to IANA tzdata 2026a-r0, corrected image size to ~49 MB with an updated footnote date of 05 March 2026, updated all version tag examples to v2.2.0-25.8.0, added Integrity Test: TZ as item 7 in the CI/CD guarantees list, and added Security, Code of Conduct, and Contributing sections before the License section.
  • Added a full suite of six YAML GitHub issue templates (bug-report.yml, documentation-issue.yml, feature-request.yml, new-platform-request.yml, node-version-bump.yml, tzdata-version-bump.yml) and config.yml disabling blank issues and surfacing the private security reporting link.
  • Added PULL_REQUEST_TEMPLATE.md pre-filling the three required PR description sections with inline HTML comment guidance.

Amnoor and others added 16 commits March 5, 2026 14:34
This merge bumps the pinned tzdata Alpine package in the Dockerfile from 2025c-r0 to 2026a-r0. The 2026a IANA timezone database release includes updated timezone rules and is the current stable version available in the Alpine 3.22 package repository.

The change is a single-line substitution in the apk add instruction in the builder stage. No other Dockerfile instructions, environment variables, COPY directives, or runtime-stage files are affected. The /usr/share/zoneinfo directory continues to be extracted from the builder and copied into the final scratch image with --chmod=555, and ENV TZ=UTC remains set in the runtime stage exactly as before. All distroless guarantees, binary paths, and image constraints are fully intact. There is no behavioral change for applications whose timezone requirements are satisfied by the existing UTC default; applications relying on specific IANA timezone identifiers will benefit from the updated rule data bundled in 2026a.
This merge adds a TZ=UTC integrity test to the PR test suite in .github/workflows/pr-tests.yml, closing the gap between the Dockerfile constraint introduced in feat/runtime-tzdata and the automated verification that enforces it on every pull request.

The new step, Integrity Test - TZ is UTC, is appended immediately after the existing NODE_ENV=production integrity test and follows its identical structure: it runs the PR-tagged image with docker run --rm --platform ${{ matrix.platform }}, overrides the entrypoint to /usr/local/bin/node, and passes -e "process.stdout.write(process.env.TZ || '')" to read the value of the TZ environment variable directly from the Node.js process without a shell. The output is captured, echoed for log visibility, and compared against the expected value UTC. If the value does not match, the step prints a descriptive failure message and exits with code 1, failing the job. If it matches, it prints the standard checkmark confirmation line. The step runs once per platform matrix entry, consistent with all other integrity tests in the workflow.

A missing trailing newline at the end of the preceding NODE_ENV=production step's final echo line is also corrected as part of this change. No other workflow steps, job configuration, triggers, permissions, or matrix values are modified.
This merge upgrades the Node.js base image in the Dockerfile builder stage from node:25.7.0-alpine3.22 to node:25.8.0-alpine3.22, bumping the Node.js runtime extracted into the final scratch image from 25.7.0 to 25.8.0.

The change is a single-line substitution in the FROM instruction of the builder stage. No other Dockerfile instructions are affected: the tzdata installation, all COPY directives, environment variables, OCI labels, and the FROM scratch runtime base remain exactly as they were. The Node.js binary extracted into the final image moves from 25.7.0 to 25.8.0 and all existing distroless guarantees remain fully intact — no shell, no package manager, no OS utilities, NODE_ENV set to production, TZ set to UTC, and all files copied with --chmod=555 except for the sticky-bit /tmp directory.
This merge updates CONTRIBUTING.md and README.md to bring both documents into alignment with the current state of develop after the chore/node-version-bump, chore/tzdata-bump, and chore/pr-tests-tz-check cycles landed.

In README.md, the Node.js Version entry in the Key Features table is updated from 25.7.0 to 25.8.0, and the builder stage reference in both the Usage section Dockerfile snippet and the Pinning to a Specific Version example is updated from node:25.7.0-alpine3.22 to node:25.8.0-alpine3.22. The Timezone Database row in the Key Features table is updated to include the explicit package version, reading IANA tzdata 2026a-r0 included at /usr/share/zoneinfo rather than the unversioned description that was present before. All three version tag examples — in the Usage Dockerfile snippet, the Pinning section, and the Versioning section — are updated from v2.1.0-25.7.0 to v2.2.0-25.8.0. A new item 7, Integrity Test: TZ, is added to the numbered CI/CD & Quality Guarantees list to document that the TZ environment variable is tested to equal UTC on every pull request. A <div align="center"> / </div> wrapper is added around the opening title, tagline, and icon block to center the header in GitHub's rendered Markdown view.

In CONTRIBUTING.md, the commit example and PR title example in the Conventional Commits and Pull Request sections are updated from 25.7.0 to 25.8.0. The description of the Integrity Test — TZ is UTC step is added to the PR Tests section immediately after the existing NODE_ENV description, and the merge-readiness statement is updated from "All four integrity tests must pass" to "All five integrity tests must pass". The Timezone Database row in the image components table is updated to specify the package version as IANA timezone data 2026a-r0. The Release Process version tag pattern examples are updated from v2.1.0-25.7.0 / v2.2.0-25.8.0 to v2.2.0-25.8.0 / v2.3.0-25.9.0, and the step 4 tag example is updated from v2.1.0-25.7.0 to v2.2.0-25.8.0. The Dockerfile Constraints version example is updated from node:25.7.0-alpine3.22 to node:25.8.0-alpine3.22, and the rejection criteria wording is tightened to reference ENV NODE_ENV=production and ENV TZ=UTC with their full ENV prefix. A <div align="center"> / </div> wrapper is likewise added around the opening title and icon block.

No changes are made to any workflow file, the Dockerfile, or any other operational file. This is a documentation-only change with no behavioral impact.
…elines for participation and security policies.
…ranch

This merge adds CODE_OF_CONDUCT.md and SECURITY.md to the repository and updates CONTRIBUTING.md and README.md to reference both files and document the issue template structure.

CODE_OF_CONDUCT.md is a new 66-line document. It opens with a centered header block carrying the project badges and icon, consistent with the style established in README.md and CONTRIBUTING.md. It covers Our Pledge, Our Standards with explicit lists of acceptable and unacceptable behaviours, Our Responsibilities, Scope, Enforcement with the project contact address at runtimenodes@gmail.com, and an Attribution section crediting the Contributor Covenant version 2.1 as the basis for the document.

SECURITY.md is a new 106-line document. It likewise opens with the centered header block. It defines the supported version model — only the latest published tag is actively supported and security fixes are always delivered as a new release with a new version tag rather than patching in place — and documents the full vulnerability scope specific to this project: introduction of a shell, package manager, or OS utility; inclusion of a library with a known CVE; weakened file permissions outside /tmp; unpinned or floating base images; supply chain compromise; and sensitive information in image metadata. The Reporting section directs reporters to GitHub's built-in Private Vulnerability Reporting as the preferred channel and provides the runtimenodes@gmail.com email as a fallback. It also documents what to include in a report, the response timeline (acknowledgement within 48 hours, initial assessment within 5 business days), the coordinated disclosure policy, and the out-of-scope items covering the user's own application, upstream Node.js vulnerabilities, and third-party GitHub Actions.

In CONTRIBUTING.md, the Code of Conduct paragraph is updated to link to CODE_OF_CONDUCT.md rather than describing the expectation inline. A new Issues section is inserted between the Conventional Commits section and the Pull Requests section, documenting the three issue templates: Bug Report for image misbehaviour with an explicit note directing security vulnerabilities to SECURITY.md instead; Feature Request for new image capabilities held to the distroless bar; and Node.js Version Bump for upgrade requests, noting that version bumps are always at minimum a major semver bump and require a full release cycle. The Pull Requests introduction is updated to reference the pre-filled PR template and to note that incomplete descriptions will not be reviewed, and the phrasing is updated from "Include exactly three sections" to "The template provides exactly three sections".

In README.md, the compressed amd64 image size for runtimenode/runtime-node in the comparison table is corrected from ~45 MB to ~49 MB, and the footnote date is updated from 26 February 2026 to 05 March 2026 to reflect the current measurement. Three new sections are appended immediately before the existing License section: Security, which links to SECURITY.md and explicitly instructs users not to open a public GitHub Issue for vulnerability reports; Code of Conduct, which links to CODE_OF_CONDUCT.md; and Contributing, which links to CONTRIBUTING.md.

No changes are made to any workflow file, the Dockerfile, or any other operational file. This is a documentation-only change with no behavioral impact.
This merge adds a full suite of GitHub issue templates and a pull request template to the .github/ directory, providing structured forms for every contribution type the project accepts and enforcing the PR description structure defined in CONTRIBUTING.md.

Six YAML issue templates are added to .github/ISSUE_TEMPLATE/. bug-report.yml is a structured form for reporting image misbehaviour. It requires the exact affected version tag, registry selection (Docker Hub or GHCR), platform selection (linux/amd64 or linux/arm64), a description, steps to reproduce, actual behaviour, and expected behaviour. It includes a pre-flight note directing security vulnerabilities to SECURITY.md and away from this form. documentation-issue.yml covers errors in README.md, CONTRIBUTING.md, SECURITY.md, CODE_OF_CONDUCT.md, and other files, with required fields for the affected file, issue type (typo, outdated version reference, incorrect content, broken link, incorrect code example, missing information, or other), exact location, and correct content. feature-request.yml handles proposals for new image capabilities and requires a description, a justification establishing strict runtime necessity, and a distroless impact assessment confirming the addition does not introduce a shell, package manager, or OS utility. new-platform-request.yml is a dedicated form for new build target platforms or architectures, separate from a general feature request, and requires the exact Docker platform string, confirmation of an official Alpine-based Node.js image for the target, confirmation of QEMU support in GitHub Actions, and a use case description. node-version-bump.yml handles Node.js version upgrade requests and requires the current and target versions and the exact Alpine image tag, with a note that version bumps always result in at minimum a major semver release. tzdata-version-bump.yml handles tzdata Alpine package upgrade requests and requires the current pinned version, the requested version, and confirmation of availability in the Alpine 3.22 package repository.

config.yml is added alongside the templates. It sets blank_issues_enabled to false, preventing freeform issue creation, and adds a Report a Security Vulnerability contact link pointing directly to the GitHub Private Vulnerability Reporting URL for the repository, ensuring security issues are never filed as public issues.

PULL_REQUEST_TEMPLATE.md is added to .github/. It pre-fills the three required sections — Summary, Files Changed, and Key Changes — with inline HTML comments providing author guidance for each section, matching the structure described in CONTRIBUTING.md and used consistently across all PRs in this repository.

No changes are made to any workflow file, the Dockerfile, or any operational file. This is a documentation and repository configuration change with no behavioral impact on the image or CI pipeline.
@Amnoor Amnoor merged commit 0b31fef into main Mar 5, 2026
3 checks passed
@Amnoor Amnoor deleted the release/v2.2.0-25.8.0 branch March 5, 2026 13:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant