Skip to content

Releases: seek-oss/skuba

skuba@8.2.1

31 Jul 04:17
2860243
Compare
Choose a tag to compare

Patch Changes

  • template: Remove JSON schema definitions from Buildkite pipeline files (#1624)

    This reverts #1611 due to incompatibility with pipeline signing.

  • template: docker-compose v5.3.0 (#1620)

  • template/lambda-sqs-worker-cdk: Fix deploy:hotswap script (#1616)

  • deps: esbuild 0.23 (#1610)

skuba@8.2.0

19 Jul 05:16
b2ec568
Compare
Choose a tag to compare

Minor Changes

  • format, lint: Set package-manager-strict-version=true for pnpm projects (#1572)

Patch Changes

  • configure: Fix [object Object] output appearing during skuba configure (#1597)

  • template/koa-rest-api: Clean up src/app.test.ts (#1606)

  • template: Add JSON schema definitions to Buildkite pipeline files (#1611)

  • deps: @octokit/rest ^21.0.0 (#1599)

skuba@8.1.0

25 Jun 01:59
3aa30f6
Compare
Choose a tag to compare

Minor Changes

  • lint: Skip generation of config files when present in .gitignore (#1554)

    skuba lint and skuba format now skip the generation of config files, like .dockerignore and .npmrc, if they are ignored by .gitignore files.

  • deps: esbuild 0.21 (#1569)

  • deps: TypeScript 5.5 (#1596)

    This major release includes breaking changes. See the TypeScript 5.5 announcement for more information.

  • api: Add Git.isFileGitIgnored (#1554)

  • lint: Add coverage to .prettierignore (#1552)

  • configure: Accept template data from stdin to allow for integration testing (#1558)

  • lint: Swap out detect-package-manager for manual lockfile detection (#1552)

    detect-package-manager has been removed, in lieu of using find-up to detect the closest
    pnpm-lock.yaml or yarn.lock to infer the package manager.

  • lint: Patch installing specific pnpm version via Corepack (#1534)

  • deps: prettier 3.3 (#1580)

Patch Changes

  • template: Add extension recommendations to .vscode/extensions.json (#1556)

  • Git: Explicitly declare return types to enable compatibility with the Node16 module (#1589)

  • template/oss-npm-package: Skip excessive action runs (#1586)

  • template/lambda-sqs-worker-cdk: Add worker config file (#1548)

  • lint: Exclude .vscode/extensions.json from being ignored by .gitignore (#1556)

  • template: Make all configuration values explicit (#1560)

    Previously, src/config.ts included optional configuration values and inheritance between environments in the spirit of DRY. While the templated file was wired up in a "safe" way—the production environment never inherited from other environments and explicitly specified all its configuration values—its pattern was misappropriated elsewhere and led to local configuration values affecting production environments.

    Instead, we now list all configuration values explicitly against each environment.

  • template: Remove deprecated docker-compose.yml version (#1570)

    Docker has ignored this for a while, and now generates a warning on every build:
    https://github.com/compose-spec/compose-spec/blob/master/04-version-and-name.md

  • template/*-rest-api: Clean up templated environment variables (#1562)

    • AWS_NODEJS_CONNECTION_REUSE_ENABLED is no longer required with AWS SDK V3.

    • The env boilerplate in Gantry values files was largely unnecessary and confusing.

      Our templates prefer to declare configuration values directly in src/config.ts.

eslint-config-skuba@4.1.0

25 Jun 01:59
3aa30f6
Compare
Choose a tag to compare

Minor Changes

  • deps: eslint-plugin-tsdoc 0.3.0 (#1579)

  • deps: @typescript/eslint ^7.14.1 (#1596)

    This addresses compatibility with TypeScript 5.5

  • deps: eslint-plugin-jest 28 (#1538)

skuba@8.0.1

17 Apr 06:36
b5d5a58
Compare
Choose a tag to compare

Patch Changes

  • deps: eslint 8.56.0 (#1521)

    This upgrade is required for eslint-config-seek 13.

  • template: Install specific pnpm version via Corepack (#1515)

    Previously, our Dockerfiles ran corepack enable pnpm without installing a specific version. This does not guarantee installation of the pnpm version specified in package.json, which could cause a subsequent pnpm install --offline to run Corepack online or otherwise hang on stdin:

    FROM --platform=arm64 node:20-alpine
    
    RUN corepack enable pnpm
    {
      "packageManager": "pnpm@8.15.4",
      "engines": {
        "node": ">=20"
      }
    }
    Corepack is about to download https://registry.npmjs.org/pnpm/-/pnpm-8.15.4.tgz.
    
    Do you want to continue? [Y/n]

    To avoid this issue, modify (1) Buildkite pipelines to cache on the packageManager property in package.json, and (2) Dockerfiles to mount package.json and run corepack install:

    - seek-oss/docker-ecr-cache#v2.1.0:
    + seek-oss/docker-ecr-cache#v2.2.0:
        cache-on:
         - .npmrc
    +    - package.json#.packageManager
         - pnpm-lock.yaml
    FROM --platform=arm64 node:20-alpine
    
    - RUN corepack enable pnpm
    + RUN --mount=type=bind,source=package.json,target=package.json \
    + corepack enable pnpm && corepack install
  • template/*-rest-api: Fix lint failure (#1514)

    This resolves the following failure on a newly-initialised project due to a regression in the @types/express dependency chain:

    error TS2688: Cannot find type definition file for 'mime'.
      The file is in the program because:
        Entry point for implicit type library 'mime'

    A temporary workaround is to install mime as a dev dependency.

  • deps: @octokit/types ^13.0.0 (#1536)

  • template/lambda-sqs-worker-cdk: Align dead letter queue naming with Serverless template (#1542)

  • Jest.mergePreset: Fudge Bundler module resolution (#1513)

    This extends #1481 to work around a ts-jest issue where test cases fail to run.

  • template/oss-npm-package: Set timeout to 20 minutes for GitHub Actions (#1501)

  • template/lambda-sqs-worker-cdk: Replace CDK context based config with TypeScript config (#1541)

skuba@8.0.0

25 Mar 06:29
4049ce9
Compare
Choose a tag to compare

This version of skuba looks more scary than it is. The major change is that our dependencies have bumped their minimum Node.js requirement from 18.12 to 18.18. Most SEEK projects do not pin minor Node.js versions and are unlikely to be affected by this change.

In the spirit of upgrades, we recently refreshed our ARM64 migration guide and also have one for pnpm. A previous release landed a skuba migrate command to simplify upgrades to Node.js 20 (active LTS) before Node.js 18 reaches EOL in April 2025.

Major Changes

  • deps: eslint-config-seek 13 + eslint-config-skuba 4 + typescript-eslint ^7.2.0 (#1487)

    These major upgrades bump our minimum requirement from Node.js 18.12 to 18.18.

    See the typescript-eslint v7 announcement for more information, and consider upgrading your project to the active LTS release with skuba migrate before Node.js 18 reaches EOL in April 2025.

Minor Changes

  • deps: semantic-release 22 (#1492)

  • deps: TypeScript 5.4 (#1491)

    This major release includes breaking changes. See the TypeScript 5.4 announcement for more information.

Patch Changes

  • template: Remove BUILDPLATFORM from Dockerfiles (#1350)

    Previously, the built-in templates made use of BUILDPLATFORM and a fallback value:

    FROM --platform=${BUILDPLATFORM:-arm64} gcr.io/distroless/nodejs20-debian11
    1. Choose the platform of the host machine running the Docker build. An AWS Graviton Buildkite agent or Apple Silicon laptop will build under arm64, while an Intel laptop will build under amd64.
    2. Fall back to arm64 if the build platform is not available. This maintains compatibility with toolchains like Gantry that lack support for the BUILDPLATFORM argument.

    This approach allowed you to quickly build images and run containers in a local environment without emulation. For example, you could docker build an arm64 image on an Apple Silicon laptop for local troubleshooting, while your CI/CD solution employed amd64 hardware across its build and runtime environments. The catch is that your local arm64 image may exhibit different behaviour, and is unsuitable for use in your amd64 runtime environment without cross-compilation.

    The built-in templates now hardcode --platform as we have largely converged on arm64 across local, build and runtime environments:

    FROM --platform=arm64 gcr.io/distroless/nodejs20-debian11

    This approach is more explicit and predictable, reducing surprises when working across different environments and toolchains. Building an image on a different platform will be slower and rely on emulation.

  • Jest.mergePreset: Fudge Node16 and NodeNext module resolutions (#1481)

    This works around a ts-jest issue where test cases fail to run if your moduleResolution is set to a modern mode:

    {
      "compilerOptions": {
        "moduleResolution": "Node16 | NodeNext"
      }
    }
    error TS5110: Option 'module' must be set to 'Node16' when option 'moduleResolution' is set to 'Node16'.
    error TS5110: Option 'module' must be set to 'NodeNext' when option 'moduleResolution' is set to 'NodeNext'.
  • pkg: Exclude jest/*.test.ts files (#1481)

  • template: Remove account-level tags from resources (#1494)

    This partially reverts #1459 and #1461 to avoid unnecessary duplication of account-level tags in our templates.

eslint-config-skuba@4.0.0

25 Mar 06:29
4049ce9
Compare
Choose a tag to compare

Major Changes

  • deps: eslint-config-seek 13 + typescript-eslint ^7.2.0 (#1487)

    These major upgrades bump our minimum requirements:

    • Node.js >=18.18.0
    • ESLint >=8.56.0
    • TypeScript >=4.7.5

    See the typescript-eslint v7 announcement for more information.

v7.5.1

13 Mar 09:05
37e39c0
Compare
Choose a tag to compare

Patch Changes

  • template/lambda-sqs-worker: Comply with latest AWS tagging guidance (#1461)

  • GitHub.putIssueComment: Support userId: 'seek-build-agency' (#1474)

    The userId parameter is an optimisation to skip user lookup. A descriptive constant is now supported on SEEK build agents:

    await GitHub.putIssueComment({
      body,
    - userId: 87109344, // https://api.github.com/users/buildagencygitapitoken[bot]
    + userId: 'seek-build-agency',
    });
  • deps: Remove why-is-node-running (#1476)

    why-is-node-running was previously added to the skuba CLI to troubleshoot scenarios where commands were timing out in CI. This has now been removed to avoid disruption to commands such as jest --detectOpenHandles.

  • deps: Remove fdir (#1463)

    This dependency is no longer used internally.

  • template/*-rest-api: Comply with latest AWS tagging guidance (#1459)

    This includes an upgrade to Gantry v3.

  • deps: @octokit/graphql ^8.0.0 (#1473)

  • deps: @octokit/graphql-schema ^15.3.0 (#1473)

v7.5.0

21 Feb 06:00
2416190
Compare
Choose a tag to compare

Minor Changes

  • cli: Add 30-minute timeout to skuba commands in CI to avoid potential hanging builds. (#1444)

    If there are use cases this breaks, please file an issue. A SKUBA_NO_TIMEOUT environment variable is supported on all commands to use the old behaviour. Timeout duration can be adjusted with a SKUBA_TIMEOUT_MS environment variable.

  • migrate: Introduce skuba migrate node20 to automatically upgrade a project's Node.js version (#1382)

    skuba migrate node20 will attempt to automatically upgrade projects to Node.js 20. It will look in the project root for Dockerfiles, .nvmrc, and Serverless files, as well as CDK files in infra/ and .buildkite/ files, and try to upgrade them to a Node.js 20 version.

    skuba might not be able to upgrade all projects, so please check your project for any files that skuba missed. It's possible that skuba will modify a file incorrectly, in which case please open an issue.

    Node.js 20 comes with its own breaking changes, so please read the Node.js 20 release notes alongside the skuba release notes. In addition,

    • For AWS Lambda runtime updates to nodejs20.x, consider reading the release announcement as there are some breaking changes with this upgrade.
    • You may need to upgrade your versions of CDK and Serverless as appropriate to support nodejs20.x.

Patch Changes

  • lint: Remove Dockerfile-incunabulum rule (#1441)

    Previously, skuba lint would search for and delete a file named Dockerfile-incunabulum to correct a historical issue that had it committed to source control. This rule has been removed as the file has been cleaned up from most SEEK repositories.

  • template/lambda-sqs-worker-cdk: Update tests to use a stable identifier for the AWS::Lambda::Version logical IDs in snapshots. This avoid snapshot changes on unrelated source code changes. (#1450)

  • deps: picomatch ^4.0.0 (#1442)

v7.4.1

07 Feb 22:42
5d14b25
Compare
Choose a tag to compare

Patch Changes

  • lint: Fix issue where skuba lint would fail in gutenberg projects due to the existence of Dockerfile-incunabulum files (#1439)