diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml
index 0a1c560e..e1f2f8d7 100644
--- a/.github/workflows/integration.yml
+++ b/.github/workflows/integration.yml
@@ -26,13 +26,14 @@ defaults:
jobs:
deploy:
runs-on: 'ubuntu-latest'
+ timeout-minutes: 7
strategy:
fail-fast: false
matrix:
include:
- name: 'image'
- image: 'gcr.io/cloudrun/hello'
+ image: 'us-docker.pkg.dev/cloudrun/container/hello:latest'
- name: 'source'
source: 'example-app'
@@ -153,6 +154,7 @@ jobs:
metadata:
runs-on: 'ubuntu-latest'
+ timeout-minutes: 7
steps:
- uses: 'actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683' # ratchet:actions/checkout@v4
@@ -206,7 +208,7 @@ jobs:
name: 'Deploy again'
uses: './'
with:
- image: 'gcr.io/cloudrun/hello'
+ image: 'us-docker.pkg.dev/cloudrun/container/hello:latest'
service: '${{ env.SERVICE_NAME }}'
revision_traffic: 'LATEST=100'
@@ -229,6 +231,7 @@ jobs:
jobs:
runs-on: 'ubuntu-latest'
+ timeout-minutes: 7
steps:
- uses: 'actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683' # ratchet:actions/checkout@v4
@@ -252,7 +255,7 @@ jobs:
name: 'Deploy'
uses: './'
with:
- image: 'gcr.io/cloudrun/hello'
+ image: 'us-docker.pkg.dev/cloudrun/container/job:latest'
job: '${{ env.JOB_NAME }}'
env_vars: |-
FOO=bar
@@ -294,7 +297,7 @@ jobs:
name: 'Deploy again'
uses: './'
with:
- image: 'gcr.io/cloudrun/hello'
+ image: 'us-docker.pkg.dev/cloudrun/container/job:latest'
job: '${{ env.JOB_NAME }}'
env_vars: |-
ABC=123
diff --git a/.github/workflows/unit.yml b/.github/workflows/unit.yml
index b692dfd8..b9fba222 100644
--- a/.github/workflows/unit.yml
+++ b/.github/workflows/unit.yml
@@ -33,6 +33,7 @@ jobs:
- 'windows-latest'
- 'macos-latest'
runs-on: '${{ matrix.os }}'
+ timeout-minutes: 7
steps:
- uses: 'actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683' # ratchet:actions/checkout@v4
diff --git a/README.md b/README.md
index c50c1212..c241bd8d 100644
--- a/README.md
+++ b/README.md
@@ -45,7 +45,7 @@ jobs:
uses: 'google-github-actions/deploy-cloudrun@v2'
with:
service: 'hello-cloud-run'
- image: 'gcr.io/cloudrun/hello'
+ image: 'us-docker.pkg.dev/cloudrun/container/hello:latest'
- name: 'Use output'
run: 'curl "${{ steps.deploy.outputs.url }}"'
@@ -67,7 +67,7 @@ jobs:
- image
: _(Optional)_ (Required, unless providing `metadata` or `source`) Fully-qualified name
of the container image to deploy. For example:
- gcr.io/cloudrun/hello:latest
+ us-docker.pkg.dev/cloudrun/container/hello:latest
or
@@ -362,7 +362,7 @@ jobs:
- uses: 'google-github-actions/deploy-cloudrun@v2'
with:
- image: 'gcr.io/cloudrun/hello'
+ image: 'us-docker.pkg.dev/cloudrun/container/hello:latest'
service: 'hello-cloud-run'
```
@@ -381,7 +381,7 @@ jobs:
- uses: 'google-github-actions/deploy-cloudrun@v2'
with:
- image: 'gcr.io/cloudrun/hello'
+ image: 'us-docker.pkg.dev/cloudrun/container/hello:latest'
service: 'hello-cloud-run'
```
diff --git a/action.yml b/action.yml
index 6ef53868..b0677a1d 100644
--- a/action.yml
+++ b/action.yml
@@ -41,7 +41,7 @@ inputs:
(Required, unless providing `metadata` or `source`) Fully-qualified name
of the container image to deploy. For example:
- gcr.io/cloudrun/hello:latest
+ us-docker.pkg.dev/cloudrun/container/hello:latest
or
@@ -229,6 +229,13 @@ inputs:
default: 'false'
required: false
+ wait:
+ description: |-
+ If true, the action will wait for the job to complete before exiting. This
+ option only applies to jobs.
+ default: 'true'
+ required: false
+
revision_traffic:
description: |-
Comma-separated list of revision traffic assignments.
diff --git a/src/main.ts b/src/main.ts
index a18900c9..52fc3ec7 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -95,7 +95,7 @@ export async function run(): Promise {
try {
// Get action inputs
- const image = getInput('image'); // Image ie gcr.io/...
+ const image = getInput('image'); // Image ie us-docker.pkg.dev/...
let service = getInput('service'); // Service name
const job = getInput('job'); // Job name
const metadata = getInput('metadata'); // YAML file
@@ -113,6 +113,7 @@ export async function run(): Promise {
const tag = getInput('tag');
const timeout = getInput('timeout');
const noTraffic = (getInput('no_traffic') || '').toLowerCase() === 'true';
+ const wait = parseBoolean(getInput('wait'));
const revTraffic = getInput('revision_traffic');
const tagTraffic = getInput('tag_traffic');
const labels = parseKVString(getInput('labels'));
@@ -196,6 +197,10 @@ export async function run(): Promise {
setEnvVarsFlags(deployCmd, envVars, envVarsFile, envVarsUpdateStrategy);
setSecretsFlags(deployCmd, secrets, secretsUpdateStrategy);
+ if (wait) {
+ deployCmd.push('--wait');
+ }
+
// There is no --update-secrets flag on jobs, but there will be in the
// future. At that point, we can remove this.
const idx = deployCmd.indexOf('--update-secrets');
diff --git a/tests/fixtures/job.yaml b/tests/fixtures/job.yaml
index b54da4cb..69315931 100644
--- a/tests/fixtures/job.yaml
+++ b/tests/fixtures/job.yaml
@@ -15,7 +15,7 @@ spec:
template:
spec:
containers:
- - image: 'gcr.io/cloudrun/hello'
+ - image: 'us-docker.pkg.dev/cloudrun/container/job:latest'
imagePullPolicy: 'Always'
resources:
limits:
diff --git a/tests/fixtures/service.yaml b/tests/fixtures/service.yaml
index 2f6aaeac..26695b1a 100644
--- a/tests/fixtures/service.yaml
+++ b/tests/fixtures/service.yaml
@@ -12,7 +12,7 @@ spec:
spec:
containerConcurrency: 20
containers:
- - image: 'gcr.io/cloudrun/hello'
+ - image: 'us-docker.pkg.dev/cloudrun/container/hello:latest'
ports:
- containerPort: 8080
resources:
diff --git a/tests/unit/main.test.ts b/tests/unit/main.test.ts
index 82f13dc2..912328cb 100644
--- a/tests/unit/main.test.ts
+++ b/tests/unit/main.test.ts
@@ -27,7 +27,7 @@ import { assertMembers } from '@google-github-actions/actions-utils';
import { run } from '../../src/main';
const fakeInputs: { [key: string]: string } = {
- image: 'gcr.io/cloudrun/hello',
+ image: 'us-docker.pkg.dev/cloudrun/container/hello:latest',
project_id: 'test',
};
@@ -520,6 +520,30 @@ test('#run', { concurrency: true }, async (suite) => {
const args = mocks.getExecOutput.mock.calls?.at(0)?.arguments?.at(1);
assertMembers(args, ['run', 'jobs', 'deploy', 'my-test-job']);
});
+
+ await suite.test('deploys a job with --wait', async (t) => {
+ const mocks = defaultMocks(t.mock, {
+ job: 'my-test-job',
+ wait: 'true',
+ });
+
+ await run();
+
+ const args = mocks.getExecOutput.mock.calls?.at(0)?.arguments?.at(1);
+ assert.ok(args?.includes('--wait'));
+ });
+
+ await suite.test('deploys a job without --wait', async (t) => {
+ const mocks = defaultMocks(t.mock, {
+ job: 'my-test-job',
+ wait: 'false',
+ });
+
+ await run();
+
+ const args = mocks.getExecOutput.mock.calls?.at(0)?.arguments?.at(1);
+ assert.ok(!args.includes('--wait'));
+ });
});
const splitKV = (s: string): Record => {