Skip to content

Commit

Permalink
ci: switch from circleci to gh actions
Browse files Browse the repository at this point in the history
  • Loading branch information
matthewjablack committed Oct 19, 2024
1 parent 6610635 commit a805525
Show file tree
Hide file tree
Showing 6 changed files with 217 additions and 146 deletions.
137 changes: 0 additions & 137 deletions .circleci/config.yml

This file was deleted.

203 changes: 203 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,203 @@
name: CI

on:
push:
branches:
- '**'
pull_request:
branches:
- '**'
workflow_dispatch:

jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install Node.js
uses: actions/setup-node@v2
with:
node-version: 'lts/*'
- run: npm ci
- run: npm run tslint_check

build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install Node.js
uses: actions/setup-node@v2
with:
node-version: 'lts/*'
- run: npm ci
- run: npm run cmake_all
- name: Persist workspace
uses: actions/upload-artifact@v3
with:
name: workspace
path: .

test:
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v2
- name: Download workspace
uses: actions/download-artifact@v3
with:
name: workspace
- name: Install Docker
run: |
sudo apt-get remove -y docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get install -y \
ca-certificates \
curl \
gnupg \
lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
- name: Run tests in Docker
run: |
docker pull ghcr.io/cryptogarageinc/elements-testing:v0.1.0
docker run --rm -v ${{ github.workspace }}:/workspace -w /workspace ghcr.io/cryptogarageinc/elements-testing:v0.1.0 /bin/bash -c "
npm ci &&
npm run test_report
"
- name: Store test results
uses: actions/upload-artifact@v3
with:
name: jest-reports
path: ./reports/jest

integration:
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v2
- name: Download workspace
uses: actions/download-artifact@v3
with:
name: workspace
- name: Install Docker
run: |
sudo apt-get remove -y docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get install -y \
ca-certificates \
curl \
gnupg \
lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
- name: Run integration tests in Docker
run: |
docker pull ghcr.io/cryptogarageinc/elements-testing:v0.1.0
docker run --rm -v ${{ github.workspace }}:/workspace -w /workspace ghcr.io/cryptogarageinc/elements-testing:v0.1.0 /bin/bash -c "
npm ci &&
./integration_tests/__tests__/start-bitcoind.sh $(pwd) 'integration_tests' &&
sleep 3 &&
npm run test_integration
"
- name: Store integration artifacts
uses: actions/upload-artifact@v3
with:
name: integration-artifacts
path: ./build_coverage/lcov_cfddlc_output
- name: Store integration test results
uses: actions/upload-artifact@v3
with:
name: integration-reports
path: ./reports/integration

prebuild-linux:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install Node.js
uses: actions/setup-node@v2
with:
node-version: 'lts/*'
- run: touch .no-postinstall
- run: npm ci
- run: npm run-script prebuild_all
- name: Store Linux prebuild artifacts
uses: actions/upload-artifact@v3
with:
name: prebuilds-linux
path: ./prebuilds

prebuild-windows:
runs-on: windows-latest
steps:
- uses: actions/checkout@v3

- name: Install Node.js
uses: actions/setup-node@v3
with:
node-version: '20.x'

- name: Install Git
shell: powershell
run: |
choco install git --params "/GitAndUnixToolsOnPath"
- name: Install CMake
shell: powershell
run: |
choco install cmake --installargs '"ADD_CMAKE_TO_PATH=System"'
- name: Set npm script-shell to bash
shell: powershell
run: |
npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe"
- name: Install cmake-js globally
shell: bash
run: |
npm install -g cmake-js
- name: Install dependencies
shell: bash
run: |
npm ci
- name: Run prebuild script
shell: bash
run: |
npm run prebuild_all
- name: Store Windows prebuild artifacts
uses: actions/upload-artifact@v3
with:
name: prebuilds-windows
path: ./prebuilds

release:
runs-on: ubuntu-latest
needs: [prebuild-linux, prebuild-windows]
steps:
- uses: actions/checkout@v2
- name: Download Linux prebuild artifacts
uses: actions/download-artifact@v3
with:
name: prebuilds-linux
- name: Download Windows prebuild artifacts
uses: actions/download-artifact@v3
with:
name: prebuilds-windows
- name: Install Node.js
uses: actions/setup-node@v2
with:
node-version: 'lts/*'
- run: touch .no-postinstall
- run: npm ci
- run: npm run-script prebuild_upload_all -- ${{ secrets.GH_ACCESS_TOKEN }}
8 changes: 5 additions & 3 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
"install:prod": "prebuild-install --force --verbose && mkdir -p wrap_js/build && cp -r build/* wrap_js/build/ || run-s install_cmake",
"install_cmake": "run-s cmake_clean cmake_install_configure cmake_compile",
"prebuild_all": "run-s prebuild_nodejs prebuild_electron",
"prebuild_nodejs": "prebuild --backend cmake-js -t 18.18.2 -t 15.1.0 -t -t 14.18.1 -t 12.18.1 -r node --verbose --include-regex \".*(node|a|so|dll|dylib)$\" -- -O build --CDENABLE_SHARED=off --CDENABLE_CAPI=off --CDENABLE_TESTS=off --CDENABLE_JSONAPI=off --CDENABLE_JS_WRAPPER=off --CDTARGET_RPATH=\"@executable_path;/usr/local/lib;/usr/local/lib64;./node_modules/cfd-dlc-js/wrap_js/build/Release;../node_modules/cfd-dlc-js/wrap_js/build/Release;../../node_modules/cfd-dlc-js/wrap_js/build/Release;../../../node_modules/cfd-dlc-js/wrap_js/build/Release;../../../../node_modules/cfd-dlc-js/wrap_js/build/Release;../../../../../node_modules/cfd-dlc-js/wrap_js/build/Release;../../../../../../node_modules/cfd-dlc-js/wrap_js/build/Release;./build/Release;./wrap_js/build/Release;./wrap_js/dl_lib/lib\" -C --CDnapi_build_version=3",
"prebuild_nodejs": "prebuild --backend cmake-js -t 20.18.0 -t 18.18.2 -t 15.1.0 -t 14.18.1 -t 12.18.1 -r node --verbose --include-regex \".*(node|a|so|dll|dylib)$\" -- -O build --CDENABLE_SHARED=off --CDENABLE_CAPI=off --CDENABLE_TESTS=off --CDENABLE_JSONAPI=off --CDENABLE_JS_WRAPPER=off --CDTARGET_RPATH=\"@executable_path;/usr/local/lib;/usr/local/lib64;./node_modules/cfd-dlc-js/wrap_js/build/Release;../node_modules/cfd-dlc-js/wrap_js/build/Release;../../node_modules/cfd-dlc-js/wrap_js/build/Release;../../../node_modules/cfd-dlc-js/wrap_js/build/Release;../../../../node_modules/cfd-dlc-js/wrap_js/build/Release;../../../../../node_modules/cfd-dlc-js/wrap_js/build/Release;../../../../../../node_modules/cfd-dlc-js/wrap_js/build/Release;./build/Release;./wrap_js/build/Release;./wrap_js/dl_lib/lib\" -C --CDnapi_build_version=3",
"prebuild_electron": "prebuild --backend cmake-js -t 7.0.0 -t 7.3.0 -t 8.0.0 -t 9.0.0 -r electron --verbose --include-regex \".*(node|a|so|dll|dylib)$\" -- -O build --CDENABLE_SHARED=off --CDENABLE_CAPI=off --CDENABLE_TESTS=off --CDENABLE_JSONAPI=off --CDENABLE_JS_WRAPPER=off --CDTARGET_RPATH=\"@executable_path;/usr/local/lib;/usr/local/lib64;\\$\\$ORIGIN/node_modules/cfd-dlc-js/wrap_js/build/Release;\\$ORIGIN/node_modules/cfd-dlc-js/wrap_js/build/Release;\\$ORIGIN/../node_modules/cfd-dlc-js/wrap_js/build/Release;\\$ORIGIN/../../node_modules/cfd-dlc-js/wrap_js/build/Release;\\$ORIGIN/../../../node_modules/cfd-dlc-js/wrap_js/build/Release;\\$ORIGIN/../../../../node_modules/cfd-dlc-js/wrap_js/build/Release;\\$ORIGIN/../../../../../node_modules/cfd-dlc-js/wrap_js/build/Release;\\$ORIGIN/../../../../../../node_modules/cfd-dlc-js/wrap_js/build/Release;\\$ORIGIN/build/Release;\\$ORIGIN/wrap_js/build/Release;\\$ORIGIN/wrap_js/dl_lib/lib\" -C --CDnapi_build_version=3",
"prebuild_upload_all": "prebuild --upload-all",
"cmake_compile": "cmake-js compile -O wrap_js/build",
Expand Down Expand Up @@ -97,6 +97,7 @@
"big-integer": "^1.6.26",
"cmake-js": "^6.1.0",
"nan": "^2.14.2",
"node-abi": "^3.71.0",
"node-addon-api": "^1.6.3",
"node-gyp": "^5.0.2",
"npm-run-all": "^4.1.5",
Expand Down
4 changes: 3 additions & 1 deletion tslint.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@
"no-console": {
"severity": "warning",
"options": ["debug", "info", "log", "time", "timeEnd", "trace"]
}
},
"no-unused-expression": false,
"label-position": false
},
"jsRules": {
"max-line-length": {
Expand Down
Loading

0 comments on commit a805525

Please sign in to comment.