action-gh-release icon indicating copy to clipboard operation
action-gh-release copied to clipboard

Support for proxy

Open cojocar opened this issue 4 years ago • 3 comments

Hi,

are the proxy environment variables supported when uploading the assets for the release?

I'm getting the following error and I'm an environment that uses an http/https proxy.

Run softprops/action-gh-release@v1
👩‍🏭 Creating new GitHub release for tag v0.10...
⬆️ Uploading myhello-v0.10_debug.zip...
⬆️ Uploading myhello-v0.10_release.zip...
Error: request to https://uploads.github.com/[redacted][7](https://github.com/[redacted]?check_suite_focus=true#step:8:7)41[8](https://github.com/[redacted]?check_suite_focus=true#step:8:8)2/assets?name=myhello-v0.[10](https://github.com/[redacted]?check_suite_focus=true#step:8:10)_debug.zip failed, reason: connect ETIMEDOUT 140.82.112.13:443

The release is created fine though, but the assets are missing.

cojocar avatar Feb 09 '22 20:02 cojocar

+1

gabe-brussa avatar Aug 03 '22 02:08 gabe-brussa

This is due to using node-fetch which declined to add proxy support.

It's quite a simple fix to use the octokit request API, which honours proxy settings and automatically supplies the access token:

diff --git a/package.json b/package.json
index c0275f4..12e33a8 100644
--- a/package.json
+++ b/package.json
@@ -24,15 +24,13 @@
     "@octokit/plugin-retry": "^4.0.3",
     "@octokit/plugin-throttling": "^4.3.2",
     "glob": "^8.0.3",
-    "mime": "^3.0.0",
-    "node-fetch": "^2.6.7"
+    "mime": "^3.0.0"
   },
   "devDependencies": {
     "@types/glob": "^8.0.0",
     "@types/jest": "^29.2.3",
     "@types/mime": "^3.0.1",
     "@types/node": "^18.11.9",
-    "@types/node-fetch": "^2.5.12",
     "@vercel/ncc": "^0.34.0",
     "jest": "^29.3.1",
     "jest-circus": "^29.3.1",
diff --git a/src/github.ts b/src/github.ts
index f4a0402..d91084c 100644
--- a/src/github.ts
+++ b/src/github.ts
@@ -1,4 +1,3 @@
-import fetch from "node-fetch";
 import { GitHub } from "@actions/github/lib/utils";
 import { Config, isTag, releaseBody } from "./util";
 import { statSync, readFileSync } from "fs";
@@ -159,16 +158,16 @@ export const upload = async (
   console.log(`⬆️ Uploading ${name}...`);
   const endpoint = new URL(url);
   endpoint.searchParams.append("name", name);
-  const resp = await fetch(endpoint, {
+  const resp = await github.request({
+    method: "POST",
+    url: endpoint.toString(),
     headers: {
       "content-length": `${size}`,
       "content-type": mime,
-      authorization: `token ${config.github_token}`,
     },
-    method: "POST",
-    body,
+    data: body,
   });
-  const json = await resp.json();
+  const json = resp.data;
   if (resp.status !== 201) {
     throw new Error(
       `Failed to upload release asset ${name}. received status code ${

lordmauve avatar Nov 23 '22 13:11 lordmauve

+1

timor-raiman avatar Sep 19 '23 11:09 timor-raiman