Skip to content

Commit

Permalink
support arm64
Browse files Browse the repository at this point in the history
  • Loading branch information
nwtgck committed Oct 16, 2021
1 parent 802a959 commit c401b38
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 19 deletions.
64 changes: 47 additions & 17 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: CI
on: [push, pull_request]

jobs:
build_executable:
build_x64_executables:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v2
Expand All @@ -15,22 +15,45 @@ jobs:
- run: npm ci
- run: npm run build-x64
- name: Tar for preserving executable permissions
run: tar cvf dist.tar ./dist/
run: tar cvf dist_x64.tar ./dist/
- uses: actions/upload-artifact@v2
with:
name: build_x64
path: dist.tar
path: dist_x64.tar

build_arm64_executables:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v2
with:
submodules: true
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- run: |
set -xeu
docker run --rm -i -v $PWD:/app arm32v7/node:14 bash << EOF
set -xeu
cd /app
npm ci
npm run build-arm64
EOF
- name: Tar for preserving executable permissions
run: tar cvf dist_arm64.tar ./dist/
- uses: actions/upload-artifact@v2
with:
name: build_arm64
path: dist_arm64.tar

linux_operational_test:
runs-on: ubuntu-18.04
needs: build_executable
needs: build_x64_executables
steps:
- uses: actions/download-artifact@v2
with:
name: build_x64
path: .
- name: Unarchive dist.tar
run: tar xvf dist.tar
- name: Unarchive dist_x64.tar
run: tar xvf dist_x64.tar
- name: Operational test
run: |
set -xeu
Expand Down Expand Up @@ -59,14 +82,14 @@ jobs:
alpine_operational_test:
runs-on: ubuntu-18.04
needs: build_executable
needs: build_x64_executables
steps:
- uses: actions/download-artifact@v2
with:
name: build_x64
path: .
- name: Unarchive dist.tar
run: tar xvf dist.tar
- name: Unarchive dist_x64.tar
run: tar xvf dist_x64.tar
- name: Operational test
run: |
docker run --rm -i -v $PWD/dist:/dist alpine:3.14 /bin/sh << EOF
Expand Down Expand Up @@ -94,14 +117,14 @@ jobs:
macos_operational_test:
runs-on: macos-10.15
needs: build_executable
needs: build_x64_executables
steps:
- uses: actions/download-artifact@v2
with:
name: build_x64
path: .
- name: Unarchive dist.tar
run: tar xvf dist.tar
- name: Unarchive dist_x64.tar
run: tar xvf dist_x64.tar
- name: Operational test
run: |
set -xeu
Expand Down Expand Up @@ -130,14 +153,14 @@ jobs:
windows_operational_test:
runs-on: windows-2019
needs: build_executable
needs: build_x64_executables
steps:
- uses: actions/download-artifact@v2
with:
name: build_x64
path: .
- name: Unarchive dist.tar
run: tar xvf dist.tar
- name: Unarchive dist_x64.tar
run: tar xvf dist_x64.tar
- name: Create certificates
run: |
mkdir ssl_certs
Expand Down Expand Up @@ -183,14 +206,21 @@ jobs:
- alpine_operational_test
- macos_operational_test
- windows_operational_test
- build_arm64_executables
runs-on: ubuntu-18.04
steps:
- uses: actions/download-artifact@v2
with:
name: build_x64
path: .
- name: Unarchive dist.tar
run: tar xvf dist.tar
- name: Unarchive dist_x64.tar
run: tar xvf dist_x64.tar
- uses: actions/download-artifact@v2
with:
name: build_arm64
path: .
- name: Unarchive dist_arm64.tar
run: tar xvf dist_arm64.tar
- run: |
set -xeu
TAG=$(echo $GITHUB_REF | cut -d / -f 3)
Expand Down
4 changes: 3 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,10 @@
"description": "Piping Server in single binary (Experimental)",
"scripts": {
"piping-build": "cd piping-server && npm ci && npm run build",
"pkg-x64": "pkg --out-path=dist --targets=node14-linux-x64,node14-mac-x64,node14-alpine-x64,node14-win-x64 piping-server && node scripts/add-x64-suffix.js",
"pkg-x64": "pkg --out-path=dist --targets=node14-linuxstatic-x64,node14-linux-x64,node14-mac-x64,node14-alpine-x64,node14-win-x64 piping-server && node scripts/add-suffix-to-bin.js x64",
"build-x64": "npm run piping-build && npm run pkg-x64",
"pkg-arm64": "pkg --out-path=dist --targets=node14-linuxstatic-arm64,node14-linux-arm64,node14-mac-arm64,node14-alpine-arm64,node14-win-arm64 piping-server && node scripts/add-suffix-to-bin.js arm64",
"build-arm64": "npm run piping-build && npm run pkg-arm64",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Ryo Ota <nwtgck@nwtgck.org> (https://github.com/nwtgck)",
Expand Down
8 changes: 7 additions & 1 deletion scripts/add-x64-suffix.js → scripts/add-suffix-to-bin.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,20 @@ const fsPromise = require("fs/promises");
const path = require("path");


const suffix = process.argv[2];
if (suffix === undefined) {
process.stderr.write("error: suffix is missing\n");
process.exit(1);
}

(async () => {
const projectRootDir = path.resolve(".");
const distDir = path.join(projectRootDir, "dist");
const fileNames = await fsPromise.readdir(distDir);
for (const fileName of fileNames) {
const extname = path.extname(fileName);
const basename = path.basename(fileName, extname);
const newFileName = `${basename}-x64${extname}`;
const newFileName = `${basename}-${suffix}${extname}`;
const filePath = path.join(distDir, fileName);
const newFilePath = path.join(distDir, newFileName);
await fsPromise.rename(filePath, newFilePath);
Expand Down

0 comments on commit c401b38

Please sign in to comment.