Fix asset downloading during build (#185)
This commit is contained in:
parent
5157c767f5
commit
fa83971353
|
@ -17,28 +17,36 @@ jobs:
|
||||||
- name: Checkout git repo
|
- name: Checkout git repo
|
||||||
uses: actions/checkout@v1
|
uses: actions/checkout@v1
|
||||||
|
|
||||||
|
# Read node version from `.nvmrc` file
|
||||||
|
- name: Read nvm rc
|
||||||
|
id: nvmrc
|
||||||
|
uses: browniebroke/read-nvmrc-action@v1
|
||||||
|
|
||||||
- name: Install node
|
- name: Install node
|
||||||
uses: actions/setup-node@v1
|
uses: actions/setup-node@v1
|
||||||
with:
|
with:
|
||||||
node-version: "11.9.0"
|
node-version: ${{ steps.nvmrc.outputs.node_version }}
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: npm install
|
run: npm install
|
||||||
|
|
||||||
- name: Download lokid binaries
|
- name: Download lokid binaries
|
||||||
run: node ./build/download-binaries.js
|
run: ./download-asset.sh
|
||||||
env:
|
env:
|
||||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
OS: ${{ runner.os }}
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
shell: bash
|
||||||
|
working-directory: ./downloads
|
||||||
|
|
||||||
- name: Extract zip binaries
|
- name: Extract zip binaries
|
||||||
if: runner.os != 'Linux'
|
if: runner.os != 'Linux'
|
||||||
run: unzip latest.zip
|
run: unzip latest
|
||||||
shell: bash
|
shell: bash
|
||||||
working-directory: ./downloads
|
working-directory: ./downloads
|
||||||
|
|
||||||
- name: Extract xz binaries
|
- name: Extract xz binaries
|
||||||
if: runner.os == 'Linux'
|
if: runner.os == 'Linux'
|
||||||
run: tar -xf latest.xz
|
run: tar -xf latest
|
||||||
shell: bash
|
shell: bash
|
||||||
working-directory: ./downloads
|
working-directory: ./downloads
|
||||||
|
|
||||||
|
|
|
@ -16,18 +16,26 @@ jobs:
|
||||||
- name: Checkout git repo
|
- name: Checkout git repo
|
||||||
uses: actions/checkout@v1
|
uses: actions/checkout@v1
|
||||||
|
|
||||||
|
# Read node version from `.nvmrc` file
|
||||||
|
- name: Read nvm rc
|
||||||
|
id: nvmrc
|
||||||
|
uses: browniebroke/read-nvmrc-action@v1
|
||||||
|
|
||||||
- name: Install node
|
- name: Install node
|
||||||
uses: actions/setup-node@v1
|
uses: actions/setup-node@v1
|
||||||
with:
|
with:
|
||||||
node-version: "11.9.0"
|
node-version: ${{ steps.nvmrc.outputs.node_version }}
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: npm install
|
run: npm install
|
||||||
|
|
||||||
- name: Download lokid binaries
|
- name: Download lokid binaries
|
||||||
run: node ./build/download-binaries.js
|
run: ./download-asset.sh
|
||||||
env:
|
env:
|
||||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
OS: ${{ runner.os }}
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
shell: bash
|
||||||
|
working-directory: ./downloads
|
||||||
|
|
||||||
- name: Extract zip binaries
|
- name: Extract zip binaries
|
||||||
if: runner.os != 'Linux'
|
if: runner.os != 'Linux'
|
||||||
|
|
|
@ -28,6 +28,7 @@ bin/*
|
||||||
|
|
||||||
.env
|
.env
|
||||||
|
|
||||||
/downloads
|
downloads/*
|
||||||
|
!downloads/*.sh
|
||||||
|
|
||||||
dev-app-update.yml
|
dev-app-update.yml
|
||||||
|
|
|
@ -1,54 +0,0 @@
|
||||||
const axios = require("axios").default;
|
|
||||||
const fs = require("fs-extra");
|
|
||||||
const path = require("path");
|
|
||||||
|
|
||||||
async function download() {
|
|
||||||
const { platform, env } = process;
|
|
||||||
const repoUrl = "https://api.github.com/repos/loki-project/loki-core/releases/latest";
|
|
||||||
try {
|
|
||||||
const pwd = process.cwd();
|
|
||||||
const downloadDir = path.join(pwd, "downloads");
|
|
||||||
await fs.ensureDir(downloadDir);
|
|
||||||
|
|
||||||
const headers = {
|
|
||||||
"Content-Type": "application/json",
|
|
||||||
"User-Agent": "Loki-Electron-Wallet"
|
|
||||||
};
|
|
||||||
if (env.GH_TOKEN) {
|
|
||||||
headers.Authorisation = `Bearer ${env.GH_TOKEN}`;
|
|
||||||
}
|
|
||||||
|
|
||||||
const { data } = await axios.get(repoUrl, { headers });
|
|
||||||
const { name } = data;
|
|
||||||
console.log("Latest release: " + name);
|
|
||||||
|
|
||||||
const url = (data.assets || [])
|
|
||||||
.map(asset => asset["browser_download_url"])
|
|
||||||
.find(url => {
|
|
||||||
if (platform === "darwin") {
|
|
||||||
return url.includes("osx") || url.includes("mac");
|
|
||||||
} else if (platform === "win32") {
|
|
||||||
return url.includes("win") || url.includes("windows");
|
|
||||||
}
|
|
||||||
return url.includes("linux");
|
|
||||||
});
|
|
||||||
|
|
||||||
if (!url) {
|
|
||||||
throw new Error("Download url not found for " + process);
|
|
||||||
}
|
|
||||||
console.log("Downloading binary at url: " + url);
|
|
||||||
|
|
||||||
const extension = path.extname(url);
|
|
||||||
const filePath = path.join(downloadDir, "latest" + extension);
|
|
||||||
const { data: artifact } = await axios.get(url, {
|
|
||||||
responseType: "stream"
|
|
||||||
});
|
|
||||||
artifact.pipe(fs.createWriteStream(filePath));
|
|
||||||
console.log("Downloaded binary to: " + filePath);
|
|
||||||
} catch (err) {
|
|
||||||
console.error("Failed to download file: " + err);
|
|
||||||
process.exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
download();
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# Source from: https://github.com/houqp/download-release-assets-action
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
if [ -z "$OS" ]; then
|
||||||
|
echo "OS must be set"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$RENAME" ]; then
|
||||||
|
RENAME="latest"
|
||||||
|
fi
|
||||||
|
|
||||||
|
REPO="loki-project/loki-core"
|
||||||
|
RELEASE="latest"
|
||||||
|
|
||||||
|
if [ "$OS" == "Linux" ]; then
|
||||||
|
FILE_NAME_REGEX="linux"
|
||||||
|
elif [ "$OS" == "Windows" ]; then
|
||||||
|
FILE_NAME_REGEX="win"
|
||||||
|
elif [ "$OS" == "macOS" ]; then
|
||||||
|
FILE_NAME_REGEX="osx"
|
||||||
|
else
|
||||||
|
echo "OS must be Linux, Windows or macOS"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
ASSET_URL=$(curl -sL --fail \
|
||||||
|
-H "Accept: application/vnd.github.v3+json" \
|
||||||
|
-H "Authorization: Bearer ${GITHUB_TOKEN}" \
|
||||||
|
"https://api.github.com/repos/${REPO}/releases/${RELEASE}" \
|
||||||
|
| jq -r ".assets | .[] | select(.name | test(\"${FILE_NAME_REGEX}\")) | .url")
|
||||||
|
|
||||||
|
curl -sL --fail \
|
||||||
|
-H "Accept: application/octet-stream" \
|
||||||
|
-H "Authorization: Bearer ${GITHUB_TOKEN}" \
|
||||||
|
-o "${RENAME}" \
|
||||||
|
"$ASSET_URL"
|
|
@ -158,7 +158,8 @@ module.exports = function() {
|
||||||
|
|
||||||
appId: "com.loki-project.electron-wallet",
|
appId: "com.loki-project.electron-wallet",
|
||||||
productName: "Loki Electron Wallet",
|
productName: "Loki Electron Wallet",
|
||||||
copyright: "Copyright © 2018-2019 Loki Project, 2018 Ryo Currency Project",
|
copyright:
|
||||||
|
"Copyright © 2018-2020 Loki Project, 2018 Ryo Currency Project",
|
||||||
afterSign: "build/notarize.js",
|
afterSign: "build/notarize.js",
|
||||||
artifactName: "loki-electron-wallet-${version}-${os}.${ext}",
|
artifactName: "loki-electron-wallet-${version}-${os}.${ext}",
|
||||||
publish: "github",
|
publish: "github",
|
||||||
|
@ -192,7 +193,13 @@ module.exports = function() {
|
||||||
allowToChangeInstallationDirectory: true
|
allowToChangeInstallationDirectory: true
|
||||||
},
|
},
|
||||||
|
|
||||||
files: ["!build/*.js", "!.env", "!dev-app-update.yml"],
|
files: [
|
||||||
|
"!build/*.js",
|
||||||
|
"!.env",
|
||||||
|
"!dev-app-update.yml",
|
||||||
|
"!downloads/**",
|
||||||
|
"!dist/**"
|
||||||
|
],
|
||||||
|
|
||||||
extraResources: ["bin"]
|
extraResources: ["bin"]
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue