mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Support MacOS arm64 build (#3682)
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com> Co-authored-by: Jari Kolehmainen <jari.kolehmainen@gmail.com> Co-authored-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
parent
32e0293b08
commit
56bd8cd0b1
@ -16,8 +16,8 @@ jobs:
|
|||||||
vmImage: windows-2019
|
vmImage: windows-2019
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
node_12.x:
|
node_14.x:
|
||||||
node_version: 12.x
|
node_version: 14.x
|
||||||
steps:
|
steps:
|
||||||
- powershell: |
|
- powershell: |
|
||||||
$CI_BUILD_TAG = git describe --tags
|
$CI_BUILD_TAG = git describe --tags
|
||||||
@ -48,12 +48,6 @@ jobs:
|
|||||||
GH_TOKEN: $(LENS_IDE_GH_TOKEN)
|
GH_TOKEN: $(LENS_IDE_GH_TOKEN)
|
||||||
displayName: Customize config
|
displayName: Customize config
|
||||||
|
|
||||||
- script: make node_modules
|
|
||||||
displayName: Install dependencies
|
|
||||||
|
|
||||||
- script: make build-npm
|
|
||||||
displayName: Generate npm package
|
|
||||||
|
|
||||||
- script: make build
|
- script: make build
|
||||||
condition: "and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))"
|
condition: "and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))"
|
||||||
env:
|
env:
|
||||||
@ -69,8 +63,8 @@ jobs:
|
|||||||
vmImage: macOS-10.14
|
vmImage: macOS-10.14
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
node_12.x:
|
node_14.x:
|
||||||
node_version: 12.x
|
node_version: 14.x
|
||||||
steps:
|
steps:
|
||||||
- script: CI_BUILD_TAG=`git describe --tags` && echo "##vso[task.setvariable variable=CI_BUILD_TAG]$CI_BUILD_TAG"
|
- script: CI_BUILD_TAG=`git describe --tags` && echo "##vso[task.setvariable variable=CI_BUILD_TAG]$CI_BUILD_TAG"
|
||||||
condition: "and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))"
|
condition: "and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))"
|
||||||
@ -99,15 +93,57 @@ jobs:
|
|||||||
GH_TOKEN: $(LENS_IDE_GH_TOKEN)
|
GH_TOKEN: $(LENS_IDE_GH_TOKEN)
|
||||||
displayName: Customize config
|
displayName: Customize config
|
||||||
|
|
||||||
- script: make node_modules
|
- script: make build
|
||||||
displayName: Install dependencies
|
condition: "and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))"
|
||||||
|
env:
|
||||||
|
APPLEID: $(APPLEID)
|
||||||
|
APPLEIDPASS: $(APPLEIDPASS)
|
||||||
|
CSC_LINK: $(CSC_LINK)
|
||||||
|
CSC_KEY_PASSWORD: $(CSC_KEY_PASSWORD)
|
||||||
|
AWS_ACCESS_KEY_ID: $(AWS_ACCESS_KEY_ID)
|
||||||
|
AWS_SECRET_ACCESS_KEY: $(AWS_SECRET_ACCESS_KEY)
|
||||||
|
BUILD_NUMBER: $(Build.BuildNumber)
|
||||||
|
displayName: Build
|
||||||
|
|
||||||
- script: make build-npm
|
- job: macOS-arm64
|
||||||
displayName: Generate npm package
|
pool:
|
||||||
|
vmImage: macOS-10.14
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
node_14.x:
|
||||||
|
node_version: 14.x
|
||||||
|
steps:
|
||||||
|
- script: CI_BUILD_TAG=`git describe --tags` && echo "##vso[task.setvariable variable=CI_BUILD_TAG]$CI_BUILD_TAG"
|
||||||
|
condition: "and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))"
|
||||||
|
displayName: Set the tag name as an environment variable
|
||||||
|
|
||||||
|
- task: NodeTool@0
|
||||||
|
inputs:
|
||||||
|
versionSpec: $(node_version)
|
||||||
|
displayName: Install Node.js
|
||||||
|
|
||||||
|
- task: Cache@2
|
||||||
|
inputs:
|
||||||
|
key: 'yarn | "$(Agent.OS)" | yarn.lock'
|
||||||
|
restoreKeys: |
|
||||||
|
yarn | "$(Agent.OS)"
|
||||||
|
path: $(YARN_CACHE_FOLDER)
|
||||||
|
displayName: Cache Yarn packages
|
||||||
|
|
||||||
|
- bash: |
|
||||||
|
set -e
|
||||||
|
git clone "https://${GH_TOKEN}@github.com/lensapp/lens-ide.git" .lens-ide-overlay
|
||||||
|
rm -rf .lens-ide-overlay/.git
|
||||||
|
cp -r .lens-ide-overlay/* ./
|
||||||
|
jq -s '.[0] * .[1]' package.json package.ide.json > package.custom.json && mv package.custom.json package.json
|
||||||
|
env:
|
||||||
|
GH_TOKEN: $(LENS_IDE_GH_TOKEN)
|
||||||
|
displayName: Customize config
|
||||||
|
|
||||||
- script: make build
|
- script: make build
|
||||||
condition: "and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))"
|
condition: "and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))"
|
||||||
env:
|
env:
|
||||||
|
BINARY_ARCH: arm64
|
||||||
APPLEID: $(APPLEID)
|
APPLEID: $(APPLEID)
|
||||||
APPLEIDPASS: $(APPLEIDPASS)
|
APPLEIDPASS: $(APPLEIDPASS)
|
||||||
CSC_LINK: $(CSC_LINK)
|
CSC_LINK: $(CSC_LINK)
|
||||||
@ -122,8 +158,8 @@ jobs:
|
|||||||
vmImage: ubuntu-16.04
|
vmImage: ubuntu-16.04
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
node_12.x:
|
node_14.x:
|
||||||
node_version: 12.x
|
node_version: 14.x
|
||||||
steps:
|
steps:
|
||||||
- script: CI_BUILD_TAG=`git describe --tags` && echo "##vso[task.setvariable variable=CI_BUILD_TAG]$CI_BUILD_TAG"
|
- script: CI_BUILD_TAG=`git describe --tags` && echo "##vso[task.setvariable variable=CI_BUILD_TAG]$CI_BUILD_TAG"
|
||||||
condition: "and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))"
|
condition: "and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))"
|
||||||
@ -152,23 +188,6 @@ jobs:
|
|||||||
GH_TOKEN: $(LENS_IDE_GH_TOKEN)
|
GH_TOKEN: $(LENS_IDE_GH_TOKEN)
|
||||||
displayName: Customize config
|
displayName: Customize config
|
||||||
|
|
||||||
- script: make node_modules
|
|
||||||
displayName: Install dependencies
|
|
||||||
|
|
||||||
- script: make build-npm
|
|
||||||
displayName: Generate npm package
|
|
||||||
|
|
||||||
- bash: |
|
|
||||||
sudo chown root:root /
|
|
||||||
sudo apt-get update && sudo apt-get install -y snapd
|
|
||||||
sudo snap install snapcraft --classic
|
|
||||||
echo -n "${SNAP_LOGIN}" | base64 -i -d > snap_login
|
|
||||||
snapcraft login --with snap_login
|
|
||||||
condition: "and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))"
|
|
||||||
env:
|
|
||||||
SNAP_LOGIN: $(SNAP_LOGIN)
|
|
||||||
displayName: Setup snapcraft
|
|
||||||
|
|
||||||
- script: make build
|
- script: make build
|
||||||
condition: "and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))"
|
condition: "and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))"
|
||||||
env:
|
env:
|
||||||
|
|||||||
3
Makefile
3
Makefile
@ -3,6 +3,7 @@ CMD_ARGS = $(filter-out $@,$(MAKECMDGOALS))
|
|||||||
%:
|
%:
|
||||||
@:
|
@:
|
||||||
|
|
||||||
|
BINARY_ARCH ?= x64
|
||||||
NPM_RELEASE_TAG ?= latest
|
NPM_RELEASE_TAG ?= latest
|
||||||
EXTENSIONS_DIR = ./extensions
|
EXTENSIONS_DIR = ./extensions
|
||||||
extensions = $(foreach dir, $(wildcard $(EXTENSIONS_DIR)/*), ${dir})
|
extensions = $(foreach dir, $(wildcard $(EXTENSIONS_DIR)/*), ${dir})
|
||||||
@ -64,7 +65,7 @@ ifeq "$(DETECTED_OS)" "Windows"
|
|||||||
rm -rf node_modules/win-ca/pem
|
rm -rf node_modules/win-ca/pem
|
||||||
yarn run electron-builder --publish onTag --x64 --ia32
|
yarn run electron-builder --publish onTag --x64 --ia32
|
||||||
else
|
else
|
||||||
yarn run electron-builder --publish onTag
|
yarn run electron-builder --publish onTag --$(BINARY_ARCH)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
$(extension_node_modules): node_modules
|
$(extension_node_modules): node_modules
|
||||||
|
|||||||
@ -26,6 +26,7 @@ import requestPromise from "request-promise-native";
|
|||||||
import { ensureDir, pathExists } from "fs-extra";
|
import { ensureDir, pathExists } from "fs-extra";
|
||||||
import path from "path";
|
import path from "path";
|
||||||
import { noop } from "lodash";
|
import { noop } from "lodash";
|
||||||
|
import { isLinux, isMac } from "../src/common/vars";
|
||||||
|
|
||||||
class KubectlDownloader {
|
class KubectlDownloader {
|
||||||
public kubectlVersion: string;
|
public kubectlVersion: string;
|
||||||
@ -115,15 +116,21 @@ class KubectlDownloader {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const downloadVersion = packageInfo.config.bundledKubectlVersion;
|
const downloadVersion = packageInfo.config.bundledKubectlVersion;
|
||||||
const baseDir = path.join(__dirname, "..", "binaries", "client");
|
const baseDir = path.join(__dirname, "..", "binaries", "client");
|
||||||
const downloads = [
|
const binaryArch = process.env.BINARY_ARCH || "amd64";
|
||||||
{ platform: "linux", arch: "amd64", target: path.join(baseDir, "linux", "x64", "kubectl") },
|
const binaryTargetArch = binaryArch === "amd64" ? "x64" : "arm64";
|
||||||
{ platform: "darwin", arch: "amd64", target: path.join(baseDir, "darwin", "x64", "kubectl") },
|
|
||||||
{ platform: "windows", arch: "amd64", target: path.join(baseDir, "windows", "x64", "kubectl.exe") },
|
const downloads = [];
|
||||||
{ platform: "windows", arch: "386", target: path.join(baseDir, "windows", "ia32", "kubectl.exe") }
|
|
||||||
];
|
if (isMac) {
|
||||||
|
downloads.push({ platform: "darwin", arch: binaryArch, target: path.join(baseDir, "darwin", binaryTargetArch, "kubectl") });
|
||||||
|
} else if (isLinux) {
|
||||||
|
downloads.push({ platform: "linux", arch: binaryArch, target: path.join(baseDir, "linux", binaryTargetArch, "kubectl") });
|
||||||
|
} else {
|
||||||
|
downloads.push({ platform: "windows", arch: "amd64", target: path.join(baseDir, "windows", binaryTargetArch, "kubectl.exe") });
|
||||||
|
downloads.push({ platform: "windows", arch: "386", target: path.join(baseDir, "windows", "ia32", "kubectl.exe") });
|
||||||
|
}
|
||||||
|
|
||||||
downloads.forEach((dlOpts) => {
|
downloads.forEach((dlOpts) => {
|
||||||
console.log(dlOpts);
|
console.log(dlOpts);
|
||||||
|
|||||||
@ -63,7 +63,7 @@ describe("preferences page tests", () => {
|
|||||||
}
|
}
|
||||||
}, 10*60*1000);
|
}, 10*60*1000);
|
||||||
|
|
||||||
it("ensures helm repos", async () => {
|
utils.itIf(process.platform !== "win32")("ensures helm repos", async () => {
|
||||||
await window.click("[data-testid=kubernetes-tab]");
|
await window.click("[data-testid=kubernetes-tab]");
|
||||||
await window.waitForSelector("[data-testid=repository-name]", {
|
await window.waitForSelector("[data-testid=repository-name]", {
|
||||||
timeout: 100_000,
|
timeout: 100_000,
|
||||||
|
|||||||
@ -30,7 +30,6 @@
|
|||||||
"build:win": "yarn run compile && electron-builder --win --dir",
|
"build:win": "yarn run compile && electron-builder --win --dir",
|
||||||
"integration": "jest --runInBand --detectOpenHandles --forceExit integration",
|
"integration": "jest --runInBand --detectOpenHandles --forceExit integration",
|
||||||
"dist": "yarn run compile && electron-builder --publish onTag",
|
"dist": "yarn run compile && electron-builder --publish onTag",
|
||||||
"dist:win": "yarn run compile && electron-builder --publish onTag --x64 --ia32",
|
|
||||||
"dist:dir": "yarn run dist --dir -c.compression=store -c.mac.identity=null",
|
"dist:dir": "yarn run dist --dir -c.compression=store -c.mac.identity=null",
|
||||||
"download-bins": "concurrently yarn:download:*",
|
"download-bins": "concurrently yarn:download:*",
|
||||||
"download:kubectl": "yarn run ts-node build/download_kubectl.ts",
|
"download:kubectl": "yarn run ts-node build/download_kubectl.ts",
|
||||||
@ -48,7 +47,7 @@
|
|||||||
},
|
},
|
||||||
"config": {
|
"config": {
|
||||||
"bundledKubectlVersion": "1.21.2",
|
"bundledKubectlVersion": "1.21.2",
|
||||||
"bundledHelmVersion": "3.5.4",
|
"bundledHelmVersion": "3.6.3",
|
||||||
"sentryDsn": ""
|
"sentryDsn": ""
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@ -141,6 +140,10 @@
|
|||||||
"from": "binaries/client/darwin/x64/kubectl",
|
"from": "binaries/client/darwin/x64/kubectl",
|
||||||
"to": "./x64/kubectl"
|
"to": "./x64/kubectl"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"from": "binaries/client/darwin/arm64/kubectl",
|
||||||
|
"to": "./arm64/kubectl"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"from": "binaries/client/helm3/helm3",
|
"from": "binaries/client/helm3/helm3",
|
||||||
"to": "./helm3/helm3"
|
"to": "./helm3/helm3"
|
||||||
|
|||||||
@ -60,13 +60,13 @@ export class LensBinary {
|
|||||||
this.logger = console;
|
this.logger = console;
|
||||||
let arch = null;
|
let arch = null;
|
||||||
|
|
||||||
if (process.arch == "x64") {
|
if (process.env.BINARY_ARCH) {
|
||||||
|
arch = process.env.BINARY_ARCH;
|
||||||
|
} else if (process.arch == "x64") {
|
||||||
arch = "amd64";
|
arch = "amd64";
|
||||||
}
|
} else if (process.arch == "x86" || process.arch == "ia32") {
|
||||||
else if (process.arch == "x86" || process.arch == "ia32") {
|
|
||||||
arch = "386";
|
arch = "386";
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
arch = process.arch;
|
arch = process.arch;
|
||||||
}
|
}
|
||||||
this.arch = arch;
|
this.arch = arch;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user