-
-
Notifications
You must be signed in to change notification settings - Fork 553
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Enhance CI/CD workflow with Yarn 3, Node.js 14, and GitHub Actions (#799
) * Publish package-lock file to Appveyor artifacts * chore: bump to Node.js 14 and Yarn 3 * ci: add GitHub workflow for CI build * ci: refactor build scripts for CI pipeline * chore: revert to use npm to run electron builder script * ci: omit Linux i386 support due to lack of Electron binary support * ci: add "export ARCHFLAGS="-arch x86_64" to overcome the issue of incompatible architecture with macOS 10.15 * ci: remove Windows x86 build * ci: bump electron dependencies * chore: update build scripts in package.json * ci: implement CI/CD with GitHub action workflow * ci: deprecate AppVeyor and use GitHub Actions * chore: target the next release version to 1.10.0 * ci: remove GITHUB_TOKEN environment variable from build.yml * chore: sync dependencies in src/package.json * chore: update Node.js engine version in package.json * chore: provide access to env.GITHUB_TOKEN when building packages * ci: update build-latest.sh * fix: upgrade serialport to v10 * docs: update README.md for Node.js support * fix: use named import for the SerialPort module * feat: upgrade Electron application * feat: change indentation from 4 spaces to 2 spaces * chore: rename `read-user-data` and `write-user-data` to `read-user-config` and `write-user-config` * chore: babel polyfill is no longer needed Co-authored-by: cheton <cheton@gmail.com>
- Loading branch information
Showing
364 changed files
with
63,047 additions
and
41,133 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,277 @@ | ||
name: CI | ||
|
||
on: | ||
push: | ||
branches: [ "master" ] | ||
pull_request: | ||
branches: [ "master" ] | ||
|
||
jobs: | ||
build-linux: | ||
name: Build Linux packages | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
node-version: [14.x] | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
steps: | ||
- name: Checkout code | ||
uses: actions/checkout@v3 | ||
- name: Setup Node.js ${{ matrix.node-version }} | ||
uses: actions/setup-node@v3 | ||
with: | ||
node-version: ${{ matrix.node-version }} | ||
- name: Environment variables | ||
run: | | ||
# https://docs.github.com/en/actions/learn-github-actions/variables#default-environment-variables | ||
echo "• GITHUB_REF_NAME=$GITHUB_REF_NAME" | ||
echo "• GITHUB_REF_TYPE=$GITHUB_REF_TYPE" # `branch` or `tag` | ||
echo "• GITHUB_RUN_NUMBER=$GITHUB_RUN_NUMBER" | ||
echo "• GITHUB_SHA=$GITHUB_SHA" | ||
echo "• RUNNER_ARCH=$RUNNER_ARCH" | ||
echo "• RUNNER_NAME=$RUNNER_NAME" | ||
echo "• RUNNER_OS=$RUNNER_OS" | ||
echo "• RUNNER_TEMP=$RUNNER_TEMP" | ||
echo "• RUNNER_TOOL_CACHE=$RUNNER_TOOL_CACHE" | ||
- name: Install Yarn package manager | ||
run: npm install -g yarn | ||
- name: Install necessary dependencies and perform initial checks | ||
run: | | ||
yarn up | ||
yarn install | ||
yarn lint | ||
yarn test | ||
- name: Run "build" script | ||
if: github.ref_type == 'tag' | ||
run: yarn run build | ||
- name: Run "build-latest" script | ||
if: github.ref_type == 'branch' | ||
run: yarn run build-latest | ||
- name: Build Linux binaries | ||
run: | | ||
yarn run build:linux | ||
- name: Prepare release assets | ||
shell: bash | ||
run: | | ||
GIT_COMMIT_LOG=`git log -1 --format='%ci %H %s'` | ||
PRODUCT_NAME=CNCjs | ||
PACKAGE_NAME=`node -e "console.log(require('./src/package.json').name)"` | ||
PACKAGE_VERSION=`node -e "console.log(require('./src/package.json').version)"` | ||
mkdir -p releases/linux | ||
cp -af "output/${PACKAGE_NAME}-${PACKAGE_VERSION}.x86_64.rpm" "releases/linux/${PACKAGE_NAME}-${PACKAGE_VERSION}-linux.x86_64.rpm" | ||
cp -af "output/${PRODUCT_NAME}-${PACKAGE_VERSION}.AppImage" "releases/linux/${PACKAGE_NAME}-${PACKAGE_VERSION}-linux-x86_64.AppImage" | ||
cp -af "output/${PACKAGE_NAME}_${PACKAGE_VERSION}_amd64.deb" "releases/linux/${PACKAGE_NAME}-${PACKAGE_VERSION}-linux-amd64.deb" | ||
cp -af "output/${PACKAGE_NAME}-${PACKAGE_VERSION}.armv7l.rpm" "releases/linux/${PACKAGE_NAME}-${PACKAGE_VERSION}-linux.armv7l.rpm" | ||
cp -af "output/${PRODUCT_NAME}-${PACKAGE_VERSION}-armv7l.AppImage" "releases/linux/${PACKAGE_NAME}-${PACKAGE_VERSION}-linux-armv7l.AppImage" | ||
cp -af "output/${PACKAGE_NAME}_${PACKAGE_VERSION}_armv7l.deb" "releases/linux/${PACKAGE_NAME}-${PACKAGE_VERSION}-linux-armv7l.deb" | ||
cp -af "output/${PACKAGE_NAME}-${PACKAGE_VERSION}.aarch64.rpm" "releases/linux/${PACKAGE_NAME}-${PACKAGE_VERSION}-linux.aarch64.rpm" | ||
cp -af "output/${PRODUCT_NAME}-${PACKAGE_VERSION}-arm64.AppImage" "releases/linux/${PACKAGE_NAME}-${PACKAGE_VERSION}-linux-arm64.AppImage" | ||
cp -af "output/${PACKAGE_NAME}_${PACKAGE_VERSION}_arm64.deb" "releases/linux/${PACKAGE_NAME}-${PACKAGE_VERSION}-linux-arm64.deb" | ||
pushd releases/linux | ||
ln -sf ../../output/linux-unpacked "${PACKAGE_NAME}-${PACKAGE_VERSION}-linux-x64" | ||
tar zcfh "${PACKAGE_NAME}-${PACKAGE_VERSION}-linux-x64.tar.gz" "${PACKAGE_NAME}-${PACKAGE_VERSION}-linux-x64" | ||
rm -f "${PACKAGE_NAME}-${PACKAGE_VERSION}-linux-x64" | ||
ln -sf ../../output/linux-armv7l-unpacked "${PACKAGE_NAME}-${PACKAGE_VERSION}-linux-armv7l" | ||
tar zcfh "${PACKAGE_NAME}-${PACKAGE_VERSION}-linux-armv7l.tar.gz" "${PACKAGE_NAME}-${PACKAGE_VERSION}-linux-armv7l" | ||
rm -f "${PACKAGE_NAME}-${PACKAGE_VERSION}-linux-armv7l" | ||
ln -sf ../../output/linux-arm64-unpacked "${PACKAGE_NAME}-${PACKAGE_VERSION}-linux-arm64" | ||
tar zcfh "${PACKAGE_NAME}-${PACKAGE_VERSION}-linux-arm64.tar.gz" "${PACKAGE_NAME}-${PACKAGE_VERSION}-linux-arm64" | ||
rm -f "${PACKAGE_NAME}-${PACKAGE_VERSION}-linux-arm64" | ||
popd | ||
ls -al output releases/linux | ||
if [[ "$GITHUB_REF_TYPE" == "branch" && "$GITHUB_REF_NAME" == "master" ]]; then | ||
yarn github-release delete \ | ||
--owner=cncjs \ | ||
--repo=cncjs \ | ||
--tag="${GITHUB_REF_NAME}-latest" \ | ||
--release-name="${GITHUB_REF_NAME}" \ | ||
"*-linux*"; | ||
yarn github-release upload \ | ||
--owner=cncjs \ | ||
--repo=cncjs \ | ||
--tag="${GITHUB_REF_NAME}-latest" \ | ||
--release-name="${GITHUB_REF_NAME}" \ | ||
--body="${GIT_COMMIT_LOG}" \ | ||
releases/linux/*; | ||
fi | ||
#- name: Upload release assets | ||
# uses: actions/github-script@v6 | ||
# with: | ||
# github-token: ${{ secrets.GITHUB_TOKEN }} | ||
# script: | | ||
# // https://github.com/actions/upload-release-asset/issues/47#issuecomment-659071145 | ||
# console.log('environment:', process.versions); | ||
- name: Release | ||
uses: softprops/action-gh-release@v1 | ||
if: startsWith(github.ref, 'refs/tags/') | ||
with: | ||
files: | | ||
releases/linux/* | ||
build-macos: | ||
name: Build macOS packages | ||
runs-on: macos-latest | ||
strategy: | ||
matrix: | ||
node-version: [14.x] | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
steps: | ||
- name: Checkout code | ||
uses: actions/checkout@v3 | ||
- name: Setup Node.js ${{ matrix.node-version }} | ||
uses: actions/setup-node@v3 | ||
with: | ||
node-version: ${{ matrix.node-version }} | ||
- name: Environment variables | ||
run: | | ||
# https://docs.github.com/en/actions/learn-github-actions/variables#default-environment-variables | ||
echo "• GITHUB_REF_NAME=$GITHUB_REF_NAME" | ||
echo "• GITHUB_REF_TYPE=$GITHUB_REF_TYPE" # `branch` or `tag` | ||
echo "• GITHUB_RUN_NUMBER=$GITHUB_RUN_NUMBER" | ||
echo "• GITHUB_SHA=$GITHUB_SHA" | ||
echo "• RUNNER_ARCH=$RUNNER_ARCH" | ||
echo "• RUNNER_NAME=$RUNNER_NAME" | ||
echo "• RUNNER_OS=$RUNNER_OS" | ||
echo "• RUNNER_TEMP=$RUNNER_TEMP" | ||
echo "• RUNNER_TOOL_CACHE=$RUNNER_TOOL_CACHE" | ||
- name: Install Yarn package manager | ||
run: npm install -g yarn | ||
- name: Install necessary dependencies and perform initial checks | ||
run: | | ||
yarn up | ||
yarn install | ||
yarn lint | ||
yarn test | ||
- name: Run "build" script | ||
if: github.ref_type == 'tag' | ||
run: yarn run build | ||
- name: Run "build-latest" script | ||
if: github.ref_type == 'branch' | ||
run: yarn run build-latest | ||
- name: Build macOS binaries | ||
run: yarn run build:macos | ||
- name: Prepare release assets | ||
shell: bash | ||
run: | | ||
GIT_COMMIT_LOG=`git log -1 --format='%ci %H %s'` | ||
PRODUCT_NAME=CNCjs | ||
PACKAGE_NAME=`node -e "console.log(require('./src/package.json').name)"` | ||
PACKAGE_VERSION=`node -e "console.log(require('./src/package.json').version)"` | ||
mkdir -p releases/macos | ||
cp -af "output/${PRODUCT_NAME}-${PACKAGE_VERSION}.dmg" "releases/macos/${PACKAGE_NAME}-${PACKAGE_VERSION}-macos-x64.dmg" | ||
cp -af "output/${PRODUCT_NAME}-${PACKAGE_VERSION}-arm64.dmg" "releases/macos/${PACKAGE_NAME}-${PACKAGE_VERSION}-macos-arm64.dmg" | ||
ls -al output releases/macos | ||
if [[ "$GITHUB_REF_TYPE" == "branch" && "$GITHUB_REF_NAME" == "master" ]]; then | ||
yarn github-release delete \ | ||
--owner=cncjs \ | ||
--repo=cncjs \ | ||
--tag="${GITHUB_REF_NAME}-latest" \ | ||
--release-name="${GITHUB_REF_NAME}" \ | ||
"*-macos*"; | ||
yarn github-release upload \ | ||
--owner=cncjs \ | ||
--repo=cncjs \ | ||
--tag="${GITHUB_REF_NAME}-latest" \ | ||
--release-name="${GITHUB_REF_NAME}" \ | ||
--body="${GIT_COMMIT_LOG}" \ | ||
releases/macos/*; | ||
fi | ||
#- name: Upload release assets | ||
# uses: actions/github-script@v6 | ||
# with: | ||
# github-token: ${{ secrets.GITHUB_TOKEN }} | ||
# script: | | ||
# // https://github.com/actions/upload-release-asset/issues/47#issuecomment-659071145 | ||
# console.log('environment:', process.versions); | ||
- name: Release | ||
uses: softprops/action-gh-release@v1 | ||
if: startsWith(github.ref, 'refs/tags/') | ||
with: | ||
files: | | ||
releases/macos/* | ||
build-windows: | ||
name: Build Windows packages | ||
runs-on: windows-latest | ||
strategy: | ||
matrix: | ||
node-version: [14.x] | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
steps: | ||
- name: Prepare VC++ Runtime | ||
run: choco install -y vcredist2017 | ||
- name: Checkout code | ||
uses: actions/checkout@v3 | ||
- name: Setup Node.js ${{ matrix.node-version }} | ||
uses: actions/setup-node@v3 | ||
with: | ||
node-version: ${{ matrix.node-version }} | ||
- name: Environment variables | ||
run: | | ||
# https://docs.github.com/en/actions/learn-github-actions/variables#default-environment-variables | ||
echo "• GITHUB_REF_NAME=$GITHUB_REF_NAME" | ||
echo "• GITHUB_REF_TYPE=$GITHUB_REF_TYPE" # `branch` or `tag` | ||
echo "• GITHUB_RUN_NUMBER=$GITHUB_RUN_NUMBER" | ||
echo "• GITHUB_SHA=$GITHUB_SHA" | ||
echo "• RUNNER_ARCH=$RUNNER_ARCH" | ||
echo "• RUNNER_NAME=$RUNNER_NAME" | ||
echo "• RUNNER_OS=$RUNNER_OS" | ||
echo "• RUNNER_TEMP=$RUNNER_TEMP" | ||
echo "• RUNNER_TOOL_CACHE=$RUNNER_TOOL_CACHE" | ||
- name: Install Yarn package manager | ||
run: npm install -g yarn | ||
- name: Install necessary dependencies and perform initial checks | ||
run: | | ||
yarn up | ||
yarn install | ||
yarn lint | ||
yarn test | ||
- name: Run "build" script | ||
if: github.ref_type == 'tag' | ||
run: yarn run build | ||
- name: Run "build-latest" script | ||
if: github.ref_type == 'branch' | ||
run: yarn run build-latest | ||
- name: Build Windows binaries | ||
run: yarn run build:windows | ||
- name: Prepare release assets | ||
shell: bash | ||
run: | | ||
GIT_COMMIT_LOG=`git log -1 --format='%ci %H %s'` | ||
PRODUCT_NAME=CNCjs | ||
PACKAGE_NAME=`node -e "console.log(require('./src/package.json').name)"` | ||
PACKAGE_VERSION=`node -e "console.log(require('./src/package.json').version)"` | ||
mkdir -p releases/windows | ||
cp -af "output/${PRODUCT_NAME} Setup ${PACKAGE_VERSION}.exe" "releases/windows/${PACKAGE_NAME}-${PACKAGE_VERSION}-windows-x64.exe" | ||
ls -al output releases/windows | ||
if [[ "$GITHUB_REF_TYPE" == "branch" && "$GITHUB_REF_NAME" == "master" ]]; then | ||
yarn github-release delete \ | ||
--owner=cncjs \ | ||
--repo=cncjs \ | ||
--tag="${GITHUB_REF_NAME}-latest" \ | ||
--release-name="${GITHUB_REF_NAME}" \ | ||
"*-windows*"; | ||
yarn github-release upload \ | ||
--owner=cncjs \ | ||
--repo=cncjs \ | ||
--tag="${GITHUB_REF_NAME}-latest" \ | ||
--release-name="${GITHUB_REF_NAME}" \ | ||
--body="${GIT_COMMIT_LOG}" \ | ||
releases/windows/*; | ||
fi | ||
#- name: Upload release assets | ||
# uses: actions/github-script@v6 | ||
# with: | ||
# github-token: ${{ secrets.GITHUB_TOKEN }} | ||
# script: | | ||
# // https://github.com/actions/upload-release-asset/issues/47#issuecomment-659071145 | ||
# console.log('environment:', process.versions); | ||
- name: Release | ||
uses: softprops/action-gh-release@v1 | ||
if: startsWith(github.ref, 'refs/tags/') | ||
with: | ||
files: | | ||
releases/windows/* |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,19 @@ | ||
node_modules | ||
npm-debug.log | ||
package-lock.json | ||
yarn-debug.log* | ||
yarn-error.log | ||
/.eslintcache | ||
/.nyc_output | ||
/coverage | ||
/dist | ||
/output | ||
/releases | ||
|
||
# https://next.yarnpkg.com/getting-started/qa#which-files-should-be-gitignored | ||
.pnp.* | ||
.yarn/* | ||
!.yarn/patches | ||
!.yarn/plugins | ||
!.yarn/releases | ||
!.yarn/sdks | ||
!.yarn/versions |
Oops, something went wrong.