mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Build and release amd64 & arm64 together (macOS) (#3700)
* build and release amd64 & arm64 together Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com> * fixes Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
This commit is contained in:
parent
d78c65d7e1
commit
9d6bed8786
@ -56,11 +56,12 @@ jobs:
|
|||||||
AWS_ACCESS_KEY_ID: $(AWS_ACCESS_KEY_ID)
|
AWS_ACCESS_KEY_ID: $(AWS_ACCESS_KEY_ID)
|
||||||
AWS_SECRET_ACCESS_KEY: $(AWS_SECRET_ACCESS_KEY)
|
AWS_SECRET_ACCESS_KEY: $(AWS_SECRET_ACCESS_KEY)
|
||||||
BUILD_NUMBER: $(Build.BuildNumber)
|
BUILD_NUMBER: $(Build.BuildNumber)
|
||||||
|
ELECTRON_BUILDER_EXTRA_ARGS: "--x64 --ia32"
|
||||||
displayName: Build
|
displayName: Build
|
||||||
|
|
||||||
- job: macOS
|
- job: macOS
|
||||||
pool:
|
pool:
|
||||||
vmImage: macOS-10.14
|
vmImage: macOS-11
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
node_14.x:
|
node_14.x:
|
||||||
@ -103,54 +104,7 @@ jobs:
|
|||||||
AWS_ACCESS_KEY_ID: $(AWS_ACCESS_KEY_ID)
|
AWS_ACCESS_KEY_ID: $(AWS_ACCESS_KEY_ID)
|
||||||
AWS_SECRET_ACCESS_KEY: $(AWS_SECRET_ACCESS_KEY)
|
AWS_SECRET_ACCESS_KEY: $(AWS_SECRET_ACCESS_KEY)
|
||||||
BUILD_NUMBER: $(Build.BuildNumber)
|
BUILD_NUMBER: $(Build.BuildNumber)
|
||||||
displayName: Build
|
ELECTRON_BUILDER_EXTRA_ARGS: "--x64 --arm64"
|
||||||
|
|
||||||
- job: macOS-arm64
|
|
||||||
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
|
|
||||||
condition: "and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))"
|
|
||||||
env:
|
|
||||||
BINARY_ARCH: arm64
|
|
||||||
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
|
displayName: Build
|
||||||
|
|
||||||
- job: Linux
|
- job: Linux
|
||||||
|
|||||||
16
.github/workflows/test.yml
vendored
16
.github/workflows/test.yml
vendored
@ -83,13 +83,15 @@ jobs:
|
|||||||
if: runner.os == 'Linux'
|
if: runner.os == 'Linux'
|
||||||
|
|
||||||
- run: make integration
|
- run: make integration
|
||||||
name: Run integration tests
|
name: Run macOS integration tests
|
||||||
shell: bash
|
|
||||||
if: runner.os != 'Linux'
|
|
||||||
|
|
||||||
- run: make build
|
|
||||||
name: Test build (arm64)
|
|
||||||
shell: bash
|
shell: bash
|
||||||
env:
|
env:
|
||||||
BINARY_ARCH: arm64
|
ELECTRON_BUILDER_EXTRA_ARGS: "--x64 --arm64"
|
||||||
if: runner.os == 'macOS'
|
if: runner.os == 'macOS'
|
||||||
|
|
||||||
|
- run: make integration
|
||||||
|
name: Run Windows integration tests
|
||||||
|
shell: bash
|
||||||
|
env:
|
||||||
|
ELECTRON_BUILDER_EXTRA_ARGS: "--x64 --ia32"
|
||||||
|
if: runner.os == 'Windows'
|
||||||
|
|||||||
6
Makefile
6
Makefile
@ -3,8 +3,8 @@ CMD_ARGS = $(filter-out $@,$(MAKECMDGOALS))
|
|||||||
%:
|
%:
|
||||||
@:
|
@:
|
||||||
|
|
||||||
BINARY_ARCH ?= x64
|
|
||||||
NPM_RELEASE_TAG ?= latest
|
NPM_RELEASE_TAG ?= latest
|
||||||
|
ELECTRON_BUILDER_EXTRA_ARGS ?=
|
||||||
EXTENSIONS_DIR = ./extensions
|
EXTENSIONS_DIR = ./extensions
|
||||||
extensions = $(foreach dir, $(wildcard $(EXTENSIONS_DIR)/*), ${dir})
|
extensions = $(foreach dir, $(wildcard $(EXTENSIONS_DIR)/*), ${dir})
|
||||||
extension_node_modules = $(foreach dir, $(wildcard $(EXTENSIONS_DIR)/*), ${dir}/node_modules)
|
extension_node_modules = $(foreach dir, $(wildcard $(EXTENSIONS_DIR)/*), ${dir}/node_modules)
|
||||||
@ -63,10 +63,8 @@ build: node_modules binaries/client
|
|||||||
ifeq "$(DETECTED_OS)" "Windows"
|
ifeq "$(DETECTED_OS)" "Windows"
|
||||||
# https://github.com/ukoloff/win-ca#clear-pem-folder-on-publish
|
# https://github.com/ukoloff/win-ca#clear-pem-folder-on-publish
|
||||||
rm -rf node_modules/win-ca/pem
|
rm -rf node_modules/win-ca/pem
|
||||||
yarn run electron-builder --publish onTag --x64 --ia32
|
|
||||||
else
|
|
||||||
yarn run electron-builder --publish onTag --$(BINARY_ARCH)
|
|
||||||
endif
|
endif
|
||||||
|
yarn run electron-builder --publish onTag $(ELECTRON_BUILDER_EXTRA_ARGS)
|
||||||
|
|
||||||
$(extension_node_modules): node_modules
|
$(extension_node_modules): node_modules
|
||||||
cd $(@:/node_modules=) && ../../node_modules/.bin/npm install --no-audit --no-fund
|
cd $(@:/node_modules=) && ../../node_modules/.bin/npm install --no-audit --no-fund
|
||||||
|
|||||||
@ -18,6 +18,18 @@
|
|||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
import { helmCli } from "../src/main/helm/helm-cli";
|
import packageInfo from "../package.json";
|
||||||
|
import { isWindows } from "../src/common/vars";
|
||||||
|
import { HelmCli } from "../src/main/helm/helm-cli";
|
||||||
|
import * as path from "path";
|
||||||
|
|
||||||
helmCli.ensureBinary();
|
const helmVersion = packageInfo.config.bundledHelmVersion;
|
||||||
|
|
||||||
|
if (!isWindows) {
|
||||||
|
Promise.all([
|
||||||
|
new HelmCli(path.join(process.cwd(), "binaries", "client", "x64"), helmVersion).ensureBinary(),
|
||||||
|
new HelmCli(path.join(process.cwd(), "binaries", "client", "arm64"), helmVersion).ensureBinary()
|
||||||
|
]);
|
||||||
|
} else {
|
||||||
|
new HelmCli(path.join(process.cwd(), "binaries", "client", "x64"), helmVersion).ensureBinary();
|
||||||
|
}
|
||||||
|
|||||||
@ -118,17 +118,17 @@ 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 binaryArch = process.env.BINARY_ARCH || "amd64";
|
|
||||||
const binaryTargetArch = binaryArch === "amd64" ? "x64" : "arm64";
|
|
||||||
|
|
||||||
const downloads = [];
|
const downloads = [];
|
||||||
|
|
||||||
if (isMac) {
|
if (isMac) {
|
||||||
downloads.push({ platform: "darwin", arch: binaryArch, target: path.join(baseDir, "darwin", binaryTargetArch, "kubectl") });
|
downloads.push({ platform: "darwin", arch: "amd64", target: path.join(baseDir, "darwin", "x64", "kubectl") });
|
||||||
|
downloads.push({ platform: "darwin", arch: "arm64", target: path.join(baseDir, "darwin", "arm64", "kubectl") });
|
||||||
} else if (isLinux) {
|
} else if (isLinux) {
|
||||||
downloads.push({ platform: "linux", arch: binaryArch, target: path.join(baseDir, "linux", binaryTargetArch, "kubectl") });
|
downloads.push({ platform: "linux", arch: "amd64", target: path.join(baseDir, "linux", "x64", "kubectl") });
|
||||||
|
downloads.push({ platform: "linux", arch: "arm64", target: path.join(baseDir, "linux", "arm64", "kubectl") });
|
||||||
} else {
|
} else {
|
||||||
downloads.push({ platform: "windows", arch: "amd64", target: path.join(baseDir, "windows", binaryTargetArch, "kubectl.exe") });
|
downloads.push({ platform: "windows", arch: "amd64", target: path.join(baseDir, "windows", "x64", "kubectl.exe") });
|
||||||
downloads.push({ platform: "windows", arch: "386", target: path.join(baseDir, "windows", "ia32", "kubectl.exe") });
|
downloads.push({ platform: "windows", arch: "386", target: path.join(baseDir, "windows", "ia32", "kubectl.exe") });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
14
package.json
14
package.json
@ -121,8 +121,8 @@
|
|||||||
],
|
],
|
||||||
"extraResources": [
|
"extraResources": [
|
||||||
{
|
{
|
||||||
"from": "binaries/client/linux/x64/kubectl",
|
"from": "binaries/client/linux/${arch}/kubectl",
|
||||||
"to": "./x64/kubectl"
|
"to": "./${arch}/kubectl"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"from": "binaries/client/helm3/helm3",
|
"from": "binaries/client/helm3/helm3",
|
||||||
@ -137,15 +137,11 @@
|
|||||||
"entitlementsInherit": "build/entitlements.mac.plist",
|
"entitlementsInherit": "build/entitlements.mac.plist",
|
||||||
"extraResources": [
|
"extraResources": [
|
||||||
{
|
{
|
||||||
"from": "binaries/client/darwin/x64/kubectl",
|
"from": "binaries/client/darwin/${arch}/kubectl",
|
||||||
"to": "./x64/kubectl"
|
"to": "./${arch}/kubectl"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"from": "binaries/client/darwin/arm64/kubectl",
|
"from": "binaries/client/${arch}/helm3/helm3",
|
||||||
"to": "./arm64/kubectl"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": "binaries/client/helm3/helm3",
|
|
||||||
"to": "./helm3/helm3"
|
"to": "./helm3/helm3"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@ -58,7 +58,7 @@ const helmVersion = packageInfo.config.bundledHelmVersion;
|
|||||||
let baseDir = process.resourcesPath;
|
let baseDir = process.resourcesPath;
|
||||||
|
|
||||||
if (!isProduction) {
|
if (!isProduction) {
|
||||||
baseDir = path.join(process.cwd(), "binaries", "client");
|
baseDir = path.join(process.cwd(), "binaries", "client", process.arch);
|
||||||
}
|
}
|
||||||
|
|
||||||
export const helmCli = new HelmCli(baseDir, helmVersion);
|
export const helmCli = new HelmCli(baseDir, helmVersion);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user