diff --git a/workflows/README.md b/workflows/README.md new file mode 100644 index 00000000000..032f9b25087 --- /dev/null +++ b/workflows/README.md @@ -0,0 +1,68 @@ +[//]: # "This README.md file is auto-generated, all changes to this file will be lost." +[//]: # "To regenerate it, use `python -m synthtool`." +Google Cloud Platform logo + +# [Workflows: Node.js Samples](https://github.com/googleapis/nodejs-workflows) + +[![Open in Cloud Shell][shell_img]][shell_link] + + + +## Table of Contents + +* [Before you begin](#before-you-begin) +* [Samples](#samples) + * [Create-execution](#create-execution) + * [Quickstart](#quickstart) + +## Before you begin + +Before running the samples, make sure you've followed the steps outlined in +[Using the client library](https://github.com/googleapis/nodejs-workflows#using-the-client-library). + +`cd samples` + +`npm install` + +`cd ..` + +## Samples + + + +### Create-execution + +View the [source code](https://github.com/googleapis/nodejs-workflows/blob/master/samples/create-execution.js). + +[![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-workflows&page=editor&open_in_editor=samples/create-execution.js,samples/README.md) + +__Usage:__ + + +`node samples/create-execution.js` + + +----- + + + + +### Quickstart + +View the [source code](https://github.com/googleapis/nodejs-workflows/blob/master/samples/quickstart.js). + +[![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-workflows&page=editor&open_in_editor=samples/quickstart.js,samples/README.md) + +__Usage:__ + + +`node samples/quickstart.js` + + + + + + +[shell_img]: https://gstatic.com/cloudssh/images/open-btn.png +[shell_link]: https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-workflows&page=editor&open_in_editor=samples/README.md +[product-docs]: https://cloud.google.com/workflows/docs/ diff --git a/workflows/create-execution.js b/workflows/create-execution.js new file mode 100644 index 00000000000..799d3e76463 --- /dev/null +++ b/workflows/create-execution.js @@ -0,0 +1,41 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +'use strict'; + +async function main(projectId, location, name) { + // [START workflows_create_execution] + /** + * TODO(developer): Uncomment these variables before running the sample. + */ + // const projectId = 'my-project'; + // const location = 'us-central1'; + // const name = 'my-test-workflow'; + const {ExecutionsClient} = require('@google-cloud/workflows'); + const client = new ExecutionsClient(); + async function createExecution() { + const [resp] = await client.createExecution({ + parent: client.workflowPath(projectId, location, name), + }); + console.info(`name: ${resp.name}`); + } + createExecution(); + // [END workflows_create_execution] +} + +process.on('unhandledRejection', (err) => { + console.error(err.message); + process.exitCode = 1; +}); +main(...process.argv.slice(2)); diff --git a/workflows/package.json b/workflows/package.json new file mode 100644 index 00000000000..d368baaf10e --- /dev/null +++ b/workflows/package.json @@ -0,0 +1,22 @@ +{ + "name": "nodejs-workflows-samples", + "private": true, + "license": "Apache-2.0", + "author": "Google LLC", + "engines": { + "node": ">=10" + }, + "files": [ + "*.js" + ], + "scripts": { + "test": "c8 mocha --timeout 600000 test/*.js" + }, + "dependencies": { + "@google-cloud/workflows": "^0.1.0" + }, + "devDependencies": { + "c8": "^7.3.0", + "mocha": "^8.1.1" + } +} diff --git a/workflows/quickstart.js b/workflows/quickstart.js new file mode 100644 index 00000000000..90be4deac99 --- /dev/null +++ b/workflows/quickstart.js @@ -0,0 +1,42 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +'use strict'; + +async function main(projectId, location) { + // [START workflows_quickstart] + /** + * TODO(developer): Uncomment these variables before running the sample. + */ + // const projectId = 'my-project'; + // const location = 'us-central1'; + const {WorkflowsClient} = require('@google-cloud/workflows'); + const client = new WorkflowsClient(); + async function listWorkflows() { + const [workflows] = await client.listWorkflows({ + parent: client.locationPath(projectId, location), + }); + for (const workflow of workflows) { + console.info(`name: ${workflow.name}`); + } + } + listWorkflows(); + // [END workflows_quickstart] +} + +process.on('unhandledRejection', (err) => { + console.error(err.message); + process.exitCode = 1; +}); +main(...process.argv.slice(2)); diff --git a/workflows/test/create-execution.js b/workflows/test/create-execution.js new file mode 100644 index 00000000000..77cc1d2e232 --- /dev/null +++ b/workflows/test/create-execution.js @@ -0,0 +1,40 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +'use strict'; + +const path = require('path'); +const assert = require('assert'); +const cp = require('child_process'); +const {describe, it} = require('mocha'); + +const execSync = (cmd) => cp.execSync(cmd, {encoding: 'utf-8'}); + +const cwd = path.join(__dirname, '..'); + +const project = process.env.GCLOUD_PROJECT; +const location = 'us-central1'; +const workflow = 'test-workflow-dont-delete'; + +describe('create-execution', () => { + it('should create an execution', async () => { + const output = execSync( + `node ./create-execution.js ${project} ${location} ${workflow}`, + { + cwd, + } + ); + assert(output.match(/name: projects.*executions.*/)); + }); +}); diff --git a/workflows/test/quickstart.js b/workflows/test/quickstart.js new file mode 100644 index 00000000000..12d1c0a80e2 --- /dev/null +++ b/workflows/test/quickstart.js @@ -0,0 +1,35 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +'use strict'; + +const path = require('path'); +const assert = require('assert'); +const cp = require('child_process'); +const {describe, it} = require('mocha'); + +const execSync = (cmd) => cp.execSync(cmd, {encoding: 'utf-8'}); + +const cwd = path.join(__dirname, '..'); + +const project = process.env.GCLOUD_PROJECT; + +describe('Quickstart', () => { + it('should run quickstart', async () => { + const output = execSync(`node ./quickstart.js ${project} us-central1`, { + cwd, + }); + assert(output.match(/name: projects.*/)); + }); +});