From c9a12bd91c67ab4679299dde816c5417584bd754 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 13 Feb 2022 03:00:50 +0000 Subject: [PATCH 01/15] Bump ajv from 6.10.2 to 6.12.6 Bumps [ajv](https://github.com/ajv-validator/ajv) from 6.10.2 to 6.12.6. - [Release notes](https://github.com/ajv-validator/ajv/releases) - [Commits](https://github.com/ajv-validator/ajv/compare/v6.10.2...v6.12.6) --- updated-dependencies: - dependency-name: ajv dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index 603c677..c1afbca 100644 --- a/package-lock.json +++ b/package-lock.json @@ -614,15 +614,19 @@ } }, "node_modules/ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "dependencies": { - "fast-deep-equal": "^2.0.1", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, "node_modules/ansi-escapes": { @@ -1958,9 +1962,9 @@ ] }, "node_modules/fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, "node_modules/fast-json-stable-stringify": { @@ -7008,12 +7012,12 @@ "dev": true }, "ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" @@ -8120,9 +8124,9 @@ "dev": true }, "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, "fast-json-stable-stringify": { From 6af4cd1e4c7e874ea9b67901bb295b6b8415870b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Dec 2022 11:21:46 +0000 Subject: [PATCH 02/15] Bump decode-uri-component from 0.2.0 to 0.2.2 Bumps [decode-uri-component](https://github.com/SamVerschueren/decode-uri-component) from 0.2.0 to 0.2.2. - [Release notes](https://github.com/SamVerschueren/decode-uri-component/releases) - [Commits](https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.2) --- updated-dependencies: - dependency-name: decode-uri-component dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 603c677..66d5706 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1329,9 +1329,9 @@ } }, "node_modules/decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", "dev": true, "engines": { "node": ">=0.10" @@ -7615,9 +7615,9 @@ "dev": true }, "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", "dev": true }, "deep-is": { From ad775948c457d604f2cc2d5737432d2656c903dc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 10 Dec 2022 20:11:04 +0000 Subject: [PATCH 03/15] Bump qs from 6.5.2 to 6.5.3 Bumps [qs](https://github.com/ljharb/qs) from 6.5.2 to 6.5.3. - [Release notes](https://github.com/ljharb/qs/releases) - [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md) - [Commits](https://github.com/ljharb/qs/compare/v6.5.2...v6.5.3) --- updated-dependencies: - dependency-name: qs dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 603c677..0c29da1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5107,9 +5107,9 @@ } }, "node_modules/qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", "dev": true, "engines": { "node": ">=0.6" @@ -10653,9 +10653,9 @@ "dev": true }, "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", "dev": true }, "react-is": { From 23f9d80126ab0d1b6c40568cab1428851c12b197 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Jan 2023 14:25:58 +0000 Subject: [PATCH 04/15] Bump json5 from 2.1.0 to 2.2.3 Bumps [json5](https://github.com/json5/json5) from 2.1.0 to 2.2.3. - [Release notes](https://github.com/json5/json5/releases) - [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md) - [Commits](https://github.com/json5/json5/compare/v2.1.0...v2.2.3) --- updated-dependencies: - dependency-name: json5 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/package-lock.json b/package-lock.json index 603c677..943dbe0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4264,13 +4264,10 @@ "dev": true }, "node_modules/json5": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", - "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, "bin": { "json5": "lib/cli.js" }, @@ -9979,13 +9976,10 @@ "dev": true }, "json5": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", - "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true }, "jsprim": { "version": "1.4.1", From 3266627cad9714a99a39a8866fda09d724d7d862 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 4 Mar 2023 06:17:00 +0000 Subject: [PATCH 05/15] Bump minimist from 1.2.5 to 1.2.8 Bumps [minimist](https://github.com/minimistjs/minimist) from 1.2.5 to 1.2.8. - [Release notes](https://github.com/minimistjs/minimist/releases) - [Changelog](https://github.com/minimistjs/minimist/blob/main/CHANGELOG.md) - [Commits](https://github.com/minimistjs/minimist/compare/v1.2.5...v1.2.8) --- updated-dependencies: - dependency-name: minimist dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 603c677..e818739 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4516,10 +4516,13 @@ } }, "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/mixin-deep": { "version": "1.3.2", @@ -10176,9 +10179,9 @@ } }, "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true }, "mixin-deep": { From 962e2cfb2969af4e853b052c38afc2447f047e44 Mon Sep 17 00:00:00 2001 From: Ryan Marvin Date: Fri, 3 Nov 2023 17:13:44 +0000 Subject: [PATCH 06/15] Fetch new release instead of incrementing by one --- index.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/index.js b/index.js index 7d05eef..7bf0fe4 100644 --- a/index.js +++ b/index.js @@ -33,15 +33,15 @@ async function isNextReleaseHealthy(release, app) { return releases.pods.filter((pod) => (Number(pod.version) === release && pod.status === "Healthy")).length >= releases.replicas_desired; } -async function waitForNewRelease(oldRelease, app, attempts) { +async function waitForNewRelease(oldRelease, newRelease, app, attempts) { const maxAttempts = 60; - if (await isNextReleaseHealthy(oldRelease + 1, app)) { + if (await isNextReleaseHealthy(newRelease, app)) { return await Promise.resolve(true); } else { if (attempts <= maxAttempts) { await wait(10); - await waitForNewRelease(oldRelease, app, attempts + 1); + await waitForNewRelease(oldRelease, newRelease, app, attempts + 1); } else { throw "Taking too long for new release to deploy"; } @@ -121,7 +121,8 @@ async function run() { }); await core.group("Waiting for new release to deploy", async () => { - await waitForNewRelease(currentRelease, gigalixirApp, 1); + const newRelease = await getCurrentRelease(gigalixirApp); + await waitForNewRelease(currentRelease, newRelease, gigalixirApp, 1); }); try { From e1e701ac4d18ca0814f93f2c9d9e115e59da9f6a Mon Sep 17 00:00:00 2001 From: Ryan Marvin Date: Fri, 3 Nov 2023 17:51:04 +0000 Subject: [PATCH 07/15] fix --- index.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/index.js b/index.js index 7bf0fe4..b97fd28 100644 --- a/index.js +++ b/index.js @@ -34,7 +34,7 @@ async function isNextReleaseHealthy(release, app) { } async function waitForNewRelease(oldRelease, newRelease, app, attempts) { - const maxAttempts = 60; + const maxAttempts = 10; if (await isNextReleaseHealthy(newRelease, app)) { return await Promise.resolve(true); @@ -120,8 +120,9 @@ async function run() { await exec.exec(path.join(__dirname, "../bin/add-private-key"), [sshPrivateKey]); }); - await core.group("Waiting for new release to deploy", async () => { - const newRelease = await getCurrentRelease(gigalixirApp); + const newRelease = await getCurrentRelease(gigalixirApp); + + await core.group(`Waiting for new release ${newRelease} to deploy`, async () => { await waitForNewRelease(currentRelease, newRelease, gigalixirApp, 1); }); From c2cee06cf1867863ecd3723f13a8a7a2662e6f69 Mon Sep 17 00:00:00 2001 From: Ryan Marvin Date: Fri, 3 Nov 2023 17:57:05 +0000 Subject: [PATCH 08/15] Test 2 --- index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.js b/index.js index b97fd28..754e243 100644 --- a/index.js +++ b/index.js @@ -122,7 +122,7 @@ async function run() { const newRelease = await getCurrentRelease(gigalixirApp); - await core.group(`Waiting for new release ${newRelease} to deploy`, async () => { + await core.group(`Waiting for new release to deploy: ${newRelease}`, async () => { await waitForNewRelease(currentRelease, newRelease, gigalixirApp, 1); }); From 3ee4388a9c4cd8ff4384412cb7260279596501a6 Mon Sep 17 00:00:00 2001 From: Ryan Marvin Date: Fri, 3 Nov 2023 18:02:15 +0000 Subject: [PATCH 09/15] test 3 --- index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/index.js b/index.js index 754e243..edcf23c 100644 --- a/index.js +++ b/index.js @@ -121,6 +121,7 @@ async function run() { }); const newRelease = await getCurrentRelease(gigalixirApp); + core.info("I AM TEH NEW RELEASE: " + newRelease) await core.group(`Waiting for new release to deploy: ${newRelease}`, async () => { await waitForNewRelease(currentRelease, newRelease, gigalixirApp, 1); From 6d86bb1d7f9f4e18526d772e2ef136ade5cd0bdc Mon Sep 17 00:00:00 2001 From: Ryan Marvin Date: Fri, 3 Nov 2023 18:15:51 +0000 Subject: [PATCH 10/15] Repackage doih --- action.yml | 2 +- dist/index.js | 17 +++++++++++------ index.js | 2 ++ package-lock.json | 2 ++ 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/action.yml b/action.yml index 28b9253..b4c2e44 100644 --- a/action.yml +++ b/action.yml @@ -26,5 +26,5 @@ inputs: required: ${MIGRATIONS} runs: - using: 'node12' + using: 'node16' main: 'dist/index.js' diff --git a/dist/index.js b/dist/index.js index 798ca68..fa1a31b 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1038,18 +1038,20 @@ async function isNextReleaseHealthy(release, app) { }); const releases = JSON.parse(releasesOutput); + // TODO: add condition to allow detecting for new push from other branch that ran faster than this job + // Might be easy to break if pod.version becomes < release but does this guarantee that the migration was ran? return releases.pods.filter((pod) => (Number(pod.version) === release && pod.status === "Healthy")).length >= releases.replicas_desired; } -async function waitForNewRelease(oldRelease, app, attempts) { - const maxAttempts = 60; +async function waitForNewRelease(oldRelease, newRelease, app, attempts) { + const maxAttempts = 10; - if (await isNextReleaseHealthy(oldRelease + 1, app)) { + if (await isNextReleaseHealthy(newRelease, app)) { return await Promise.resolve(true); } else { if (attempts <= maxAttempts) { await wait(10); - await waitForNewRelease(oldRelease, app, attempts + 1); + await waitForNewRelease(oldRelease, newRelease, app, attempts + 1); } else { throw "Taking too long for new release to deploy"; } @@ -1128,8 +1130,11 @@ async function run() { await exec.exec(path.join(__dirname, "../bin/add-private-key"), [sshPrivateKey]); }); - await core.group("Waiting for new release to deploy", async () => { - await waitForNewRelease(currentRelease, gigalixirApp, 1); + const newRelease = await getCurrentRelease(gigalixirApp); + core.info("I AM TEH NEW RELEASE: " + newRelease) + + await core.group(`Waiting for new release to deploy: ${newRelease}`, async () => { + await waitForNewRelease(currentRelease, newRelease, gigalixirApp, 1); }); try { diff --git a/index.js b/index.js index edcf23c..667eb40 100644 --- a/index.js +++ b/index.js @@ -30,6 +30,8 @@ async function isNextReleaseHealthy(release, app) { }); const releases = JSON.parse(releasesOutput); + // TODO: add condition to allow detecting for new push from other branch that ran faster than this job + // Might be easy to break if pod.version becomes < release but does this guarantee that the migration was ran? return releases.pods.filter((pod) => (Number(pod.version) === release && pod.status === "Healthy")).length >= releases.replicas_desired; } diff --git a/package-lock.json b/package-lock.json index 603c677..781c091 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,6 +5,7 @@ "requires": true, "packages": { "": { + "name": "gigalixir-action", "version": "0.6.2", "license": "MIT", "dependencies": { @@ -2144,6 +2145,7 @@ "node-pre-gyp" ], "dev": true, + "hasInstallScript": true, "optional": true, "os": [ "darwin" From 3fcec3a17ebfb365f99279b8dad3de57dea820a5 Mon Sep 17 00:00:00 2001 From: Ryan Marvin Date: Fri, 3 Nov 2023 18:29:28 +0000 Subject: [PATCH 11/15] test 4 --- action.yml | 3 +++ dist/index.js | 8 +++----- index.js | 8 +++----- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/action.yml b/action.yml index b4c2e44..7b1ba54 100644 --- a/action.yml +++ b/action.yml @@ -17,6 +17,9 @@ inputs: GIGALIXIR_PASSWORD: description: 'Your Gigalixir password' required: true + MAX_RETRY_ATTEMPTS: + description: 'Maximum number of request retry attempts when communicating with Gigalixir' + default: "60" MIGRATIONS: description: 'Configuration for migrations' required: true diff --git a/dist/index.js b/dist/index.js index fa1a31b..83d34f8 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1043,9 +1043,7 @@ async function isNextReleaseHealthy(release, app) { return releases.pods.filter((pod) => (Number(pod.version) === release && pod.status === "Healthy")).length >= releases.replicas_desired; } -async function waitForNewRelease(oldRelease, newRelease, app, attempts) { - const maxAttempts = 10; - +async function waitForNewRelease(oldRelease, newRelease, app, attempts, maxAttempts) { if (await isNextReleaseHealthy(newRelease, app)) { return await Promise.resolve(true); } else { @@ -1096,6 +1094,7 @@ async function run() { const gigalixirClean = core.getInput('GIGALIXIR_CLEAN', {required: false}); const gigalixirUsername = core.getInput('GIGALIXIR_USERNAME', {required: true}); const gigalixirPassword = core.getInput('GIGALIXIR_PASSWORD', {required: true}); + const maxRetryAttempts = Number(core.getInput('MAX_RETRY_ATTEMPTS', {required: false})); const migrations = core.getInput('MIGRATIONS', {required: true}); const sshPrivateKey = core.getInput('SSH_PRIVATE_KEY', {required: JSON.parse(migrations)}); @@ -1131,10 +1130,9 @@ async function run() { }); const newRelease = await getCurrentRelease(gigalixirApp); - core.info("I AM TEH NEW RELEASE: " + newRelease) await core.group(`Waiting for new release to deploy: ${newRelease}`, async () => { - await waitForNewRelease(currentRelease, newRelease, gigalixirApp, 1); + await waitForNewRelease(currentRelease, newRelease, gigalixirApp, 1, maxRetryAttempts); }); try { diff --git a/index.js b/index.js index 667eb40..13de1df 100644 --- a/index.js +++ b/index.js @@ -35,9 +35,7 @@ async function isNextReleaseHealthy(release, app) { return releases.pods.filter((pod) => (Number(pod.version) === release && pod.status === "Healthy")).length >= releases.replicas_desired; } -async function waitForNewRelease(oldRelease, newRelease, app, attempts) { - const maxAttempts = 10; - +async function waitForNewRelease(oldRelease, newRelease, app, attempts, maxAttempts) { if (await isNextReleaseHealthy(newRelease, app)) { return await Promise.resolve(true); } else { @@ -88,6 +86,7 @@ async function run() { const gigalixirClean = core.getInput('GIGALIXIR_CLEAN', {required: false}); const gigalixirUsername = core.getInput('GIGALIXIR_USERNAME', {required: true}); const gigalixirPassword = core.getInput('GIGALIXIR_PASSWORD', {required: true}); + const maxRetryAttempts = Number(core.getInput('MAX_RETRY_ATTEMPTS', {required: false})); const migrations = core.getInput('MIGRATIONS', {required: true}); const sshPrivateKey = core.getInput('SSH_PRIVATE_KEY', {required: JSON.parse(migrations)}); @@ -123,10 +122,9 @@ async function run() { }); const newRelease = await getCurrentRelease(gigalixirApp); - core.info("I AM TEH NEW RELEASE: " + newRelease) await core.group(`Waiting for new release to deploy: ${newRelease}`, async () => { - await waitForNewRelease(currentRelease, newRelease, gigalixirApp, 1); + await waitForNewRelease(currentRelease, newRelease, gigalixirApp, 1, maxRetryAttempts); }); try { From 22de3554225f18c43aa33996da0596d6f045f7e1 Mon Sep 17 00:00:00 2001 From: Ryan Marvin Date: Fri, 3 Nov 2023 18:40:36 +0000 Subject: [PATCH 12/15] fix bug --- dist/index.js | 2 +- index.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dist/index.js b/dist/index.js index 83d34f8..c3a66b5 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1049,7 +1049,7 @@ async function waitForNewRelease(oldRelease, newRelease, app, attempts, maxAttem } else { if (attempts <= maxAttempts) { await wait(10); - await waitForNewRelease(oldRelease, newRelease, app, attempts + 1); + await waitForNewRelease(oldRelease, newRelease, app, attempts + 1, maxAttempts); } else { throw "Taking too long for new release to deploy"; } diff --git a/index.js b/index.js index 13de1df..8bef454 100644 --- a/index.js +++ b/index.js @@ -41,7 +41,7 @@ async function waitForNewRelease(oldRelease, newRelease, app, attempts, maxAttem } else { if (attempts <= maxAttempts) { await wait(10); - await waitForNewRelease(oldRelease, newRelease, app, attempts + 1); + await waitForNewRelease(oldRelease, newRelease, app, attempts + 1, maxAttempts); } else { throw "Taking too long for new release to deploy"; } From a16edf5e8ac98297fa3cb567a938ade2c764c310 Mon Sep 17 00:00:00 2001 From: Ryan Marvin Date: Fri, 3 Nov 2023 18:53:39 +0000 Subject: [PATCH 13/15] Remove comment --- index.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/index.js b/index.js index 8bef454..c921bbf 100644 --- a/index.js +++ b/index.js @@ -30,8 +30,6 @@ async function isNextReleaseHealthy(release, app) { }); const releases = JSON.parse(releasesOutput); - // TODO: add condition to allow detecting for new push from other branch that ran faster than this job - // Might be easy to break if pod.version becomes < release but does this guarantee that the migration was ran? return releases.pods.filter((pod) => (Number(pod.version) === release && pod.status === "Healthy")).length >= releases.replicas_desired; } From c6798cb91dd7c0afa8384607e49157f826c32679 Mon Sep 17 00:00:00 2001 From: Ryan Marvin Date: Mon, 6 Nov 2023 12:24:27 +0000 Subject: [PATCH 14/15] update package --- dist/index.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/dist/index.js b/dist/index.js index c3a66b5..4318f97 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1038,8 +1038,6 @@ async function isNextReleaseHealthy(release, app) { }); const releases = JSON.parse(releasesOutput); - // TODO: add condition to allow detecting for new push from other branch that ran faster than this job - // Might be easy to break if pod.version becomes < release but does this guarantee that the migration was ran? return releases.pods.filter((pod) => (Number(pod.version) === release && pod.status === "Healthy")).length >= releases.replicas_desired; } From d2e375e1f6fcc481f13cdb1b10487e440cb96563 Mon Sep 17 00:00:00 2001 From: Ryan Marvin Date: Mon, 6 Nov 2023 12:26:26 +0000 Subject: [PATCH 15/15] Update readme --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index f44b167..32cd39d 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ Note: This action has only been tested in one repo and has no unit tests. ## Usage ```yaml -test: +test: # A job to run your tests, linters, etc deploy: @@ -21,11 +21,11 @@ deploy: with: ref: main # Check out main instead of the latest commit fetch-depth: 0 # Checkout the whole branch - + - uses: actions/setup-python@v2 with: python-version: 3.8.1 - + - uses: mhanberg/gigalixir-action@ with: APP_SUBFOLDER: my-app-subfolder # Add only if you want to deploy an app that is not at the root of your repository @@ -33,6 +33,7 @@ deploy: GIGALIXIR_CLEAN: true # defaults to false GIGALIXIR_USERNAME: ${{ secrets.GIGALIXIR_USERNAME }} GIGALIXIR_PASSWORD: ${{ secrets.GIGALIXIR_PASSWORD }} + MAX_RETRY_ATTEMPTS: 10 # Max number of times to retry Gigalixir API calls. Retries happen every 10 seconds. The default is 60 MIGRATIONS: false # defaults to true SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} ``` @@ -49,7 +50,7 @@ If your migrations fail, the action will rollback the app to the last version. ## Contributing -Remember to +Remember to - `npm install` - `npm run package`