Package detail

gcbuild

JustinBeckwith9.6kMIT2.0.0

An API and CLI for building docker containers with Google Cloud Build.

google, cloud, build, docker

readme

gcbuild

A super simple CLI and API for using Google Cloud Build.

NPM Version CI codecov Checked with Biome Release Please

Installation

$ npm install gcbuild

Command Line

gcb is a convenient way to submit jobs to Google Cloud Build. To use as a command line application:

$ npm install --save-dev gcbuild

Then from your package.json, it's super easy to add a deploy script:

"scripts": {
  "deploy": "gcb"
}

Positional arguments

SOURCE

Location of the sources to be deployed. If not specified, assumes the current working directory.

Flags

--config

The YAML or JSON file to use as the build configuration file. Defaults to 'cloudbuild.yaml' if not specified.

--tag

The tag to use with a "docker build" image creation.

Examples

# Create an image for the current working directory.
$ gcb

# If there's a Dockerfile in the CWD, I can also specify a tag
$ gcb --tag my-image-name

# Use a build file not named `cloudbuild.yaml`
$ gcb --config suchbuild.json

# Perform a build from another location on disk
$ gcb ~/Code/verydocker

API

You can also use this as a regular old API.

import {build} from 'gcb';

async function main() {
  await build({
    source: '/path/to/source',
    ....
  });
}
main().catch(console.error);

Authentication

This library uses google-auth-library under the hood to provide authentication. That means you can authenticate a few ways.

Using a service account

One of the reasons this library exists is to provide a nodejs native deployment in environments where you don't want to have the Cloud SDK installed.

For this method, you'll need to create a service account, and download a key.

  1. In the GCP Console, go to the Create service account key page.
  2. From the Service account drop-down list, select New service account.
  3. In the Service account name field, enter a name.
  4. From the Role drop-down list, select Project > Owner.
  5. Click Create. A JSON file that contains your key downloads to your computer.
$ export GOOGLE_APPLICATION_CREDENTIALS="./keys.json"
$ gcb .

Using application default credentials

If you plan on only using this from your machine, and you have the Google Cloud SDK installed, you can just use application default credentials like this:

$ gcloud auth login
$ gcloud auth application-default login
$ gcloud config set project 'YOUR-AWESOME-PROJECT'
$ gcb .

License

MIT

changelog

Changelog

2.0.0 (2025-10-14)

⚠ BREAKING CHANGES

  • This package now requires node 20+
  • require node 16 and up (#182)
  • This module now requires node.js 12 and up.

Features

  • convert to esm, drop support for node 10 (#136) (8919182)
  • enable object lifecycle on bucket (#7) (6ac015c)
  • initial commit (c5eaec5)
  • return build metadata with promise (#4) (832a980)
  • support automatic Dockerfile builds (#25) (05db3ec)

Bug Fixes

  • clean up console output and tests (#3) (656b5b6)
  • deps: update dependency chalk to v3 (#41) (2500e20)
  • deps: update dependency chalk to v4 (#58) (7dde800)
  • deps: update dependency chalk to v5 (#137) (0ca0e8f)
  • deps: update dependency globby to v10 (#28) (fd51e7c)
  • deps: update dependency globby to v11 (#47) (e2efcdb)
  • deps: update dependency globby to v13 (#140) (e5ce147)
  • deps: update dependency globby to v14 (#212) (1c8425f)
  • deps: update dependency globby to v15 (#276) (d7fcef1)
  • deps: update dependency google-auth-library to v4 (#18) (35a06e4)
  • deps: update dependency googleapis to v100 (#151) (2bbdfff)
  • deps: update dependency googleapis to v101 (#157) (f5bae38)
  • deps: update dependency googleapis to v102 (#158) (2a9b81d)
  • deps: update dependency googleapis to v103 (#159) (a0e586d)
  • deps: update dependency googleapis to v109 (#168) (3cb7fe5)
  • deps: update dependency googleapis to v110 (#171) (b44dd21)
  • deps: update dependency googleapis to v111 (#173) (b1e4013)
  • deps: update dependency googleapis to v113 (#175) (3fd255f)
  • deps: update dependency googleapis to v114 (#177) (7368507)
  • deps: update dependency googleapis to v117 (#181) (fda33e9)
  • deps: update dependency googleapis to v118 (#183) (fcb7cab)
  • deps: update dependency googleapis to v123 (#191) (bd528c6)
  • deps: update dependency googleapis to v125 (#197) (b391afa)
  • deps: update dependency googleapis to v126 (#198) (24b5f93)
  • deps: update dependency googleapis to v128 (#205) (07c84c2)
  • deps: update dependency googleapis to v129 (#214) (29d4c42)
  • deps: update dependency googleapis to v130 (#218) (293583b)
  • deps: update dependency googleapis to v131 (#220) (218efcd)
  • deps: update dependency googleapis to v132 (#222) (4fce529)
  • deps: update dependency googleapis to v133 (#224) (a001154)
  • deps: update dependency googleapis to v134 (#226) (75c964a)
  • deps: update dependency googleapis to v135 (#229) (5c98c84)
  • deps: update dependency googleapis to v136 (#230) (77962ee)
  • deps: update dependency googleapis to v139 (#234) (cf36ac5)
  • deps: update dependency googleapis to v140 (#235) (d580313)
  • deps: update dependency googleapis to v142 (#239) (b397508)
  • deps: update dependency googleapis to v143 (#241) (7192f10)
  • deps: update dependency googleapis to v144 (#243) (d0031ab)
  • deps: update dependency googleapis to v146 (#251) (e9630d0)
  • deps: update dependency googleapis to v39 (#12) (4ba45f3)
  • deps: update dependency googleapis to v40 (#24) (dbf0a44)
  • deps: update dependency googleapis to v41 (#29) (20505c1)
  • deps: update dependency googleapis to v42 (#30) (1a2011a)
  • deps: update dependency googleapis to v43 (#34) (35073f7)
  • deps: update dependency googleapis to v44 (#37) (5dc2e42)
  • deps: update dependency googleapis to v45 (#40) (b839ab7)
  • deps: update dependency googleapis to v46 (#43) (8b69524)
  • deps: update dependency googleapis to v47 (#50) (c502836)
  • deps: update dependency googleapis to v49 (#63) (4ef3f9f)
  • deps: update dependency googleapis to v50 (#64) (19afca3)
  • deps: update dependency googleapis to v51 (#67) (40d2642)
  • deps: update dependency googleapis to v52 (#68) (c678df4)
  • deps: update dependency googleapis to v54 (#72) (7efee19)
  • deps: update dependency googleapis to v55 (#75) (a65e843)
  • deps: update dependency googleapis to v56 (#76) (232ed0a)
  • deps: update dependency googleapis to v57 (#77) (a75bb32)
  • deps: update dependency googleapis to v58 (#78) (d5f4a6e)
  • deps: update dependency googleapis to v59 (#80) (de902d1)
  • deps: update dependency googleapis to v60 (#82) (d0b72ad)
  • deps: update dependency googleapis to v61 (#85) (5918f02)
  • deps: update dependency googleapis to v62 (#87) (274af06)
  • deps: update dependency googleapis to v63 (#89) (614587c)
  • deps: update dependency googleapis to v64 (#90) (c660d69)
  • deps: update dependency googleapis to v65 (#91) (d44851c)
  • deps: update dependency googleapis to v66 (#93) (23dcb4c)
  • deps: update dependency googleapis to v67 (#97) (618c8fa)
  • deps: update dependency googleapis to v68 (#101) (6180f99)
  • deps: update dependency googleapis to v70 (#102) (d0f4511)
  • deps: update dependency googleapis to v74 (#108) (e25130f)
  • deps: update dependency googleapis to v75 (#110) (ecfeb10)
  • deps: update dependency googleapis to v77 (#113) (5cd391c)
  • deps: update dependency googleapis to v78 (#114) (4a760ae)
  • deps: update dependency googleapis to v81 (#117) (1026a8b)
  • deps: update dependency googleapis to v82 (#118) (4ff9e9a)
  • deps: update dependency googleapis to v84 (#122) (0430fa6)
  • deps: update dependency googleapis to v85 (#126) (dc4d2ae)
  • deps: update dependency googleapis to v89 (#131) (0af995a)
  • deps: update dependency googleapis to v91 (#135) (d50a67b)
  • deps: update dependency googleapis to v92 (#138) (6cc6359)
  • deps: update dependency googleapis to v95 (#143) (18789b4)
  • deps: update dependency googleapis to v96 (#147) (eb81263)
  • deps: update dependency googleapis to v97 (#148) (d2424b1)
  • deps: update dependency googleapis to v98 (#149) (93b38d5)
  • deps: update dependency googleapis to v99 (#150) (df700b3)
  • deps: update dependency js-yaml to v4 (#99) (4416984)
  • deps: update dependency meow to v11 (#169) (4d17230)
  • deps: update dependency meow to v12 (#184) (0aab813)
  • deps: update dependency meow to v13 (#215) (2058178)
  • deps: update dependency meow to v14 (#273) (0c8deee)
  • deps: update dependency meow to v6 (#42) (4db29ff)
  • deps: update dependency meow to v7 (#65) (2d6307c)
  • deps: update dependency meow to v8 (#88) (c4e72d1)
  • deps: update dependency meow to v9 (#96) (2c33f6a)
  • deps: update dependency ora to v4 (#35) (11868da)
  • deps: update dependency ora to v5 (#79) (6a35d28)
  • deps: update dependency ora to v7 (#194) (45e3fb1)
  • deps: update dependency ora to v8 (#216) (2e8d769)
  • deps: update dependency ora to v9 (#274) (162ffe7)
  • deps: update dependency tar to v5 (#36) (bc4feec)
  • deps: update dependency tar to v6 (#52) (f338d11)
  • deps: update dependency update-notifier to v3 (#19) (6965785)
  • deps: update dependency update-notifier to v4 (#44) (3386c42)
  • deps: update dependency update-notifier to v5 (#83) (e78eee6)
  • deps: update dependency update-notifier to v7 (#210) (e497f15)
  • deps: update to the latest update-notifier (#167) (a3859bc)
  • deps: upgrade to googleapis v48 (#62) (325cb35)
  • deps: upgrade to latest googleapis package (#280) (be5aafb)
  • deps: upgrade to the latest version of tar (#285) (58fd498)
  • include logs with the error (#6) (95c6783)
  • pass empty params to getClient (#31) (4177f9c)
  • require node 16 and up (#182) (852f3c8)

Build System