2.31.5-alpha.1 #225
Workflow file for this run
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
## GitHub Actions is used to build: | |
## - Electron (macOs) | |
## - Nwjs (macOs) | |
## - Node.js (macOs, linux) | |
name: build-and-release | |
on: | |
push: | |
tags: | |
- '*' | |
branches: | |
- develop | |
env: | |
NODE_LIBCURL_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
# all jobs here must have a matrix identical to the ones inside build-lint-test.yaml | |
jobs: | |
scan: | |
permissions: | |
packages: write | |
contents: write # publish sbom to GH releases/tag assets | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
path: ${{ github.repository }} | |
# Perform SCA analysis for the code repository | |
# Produces SBOM and CVE report | |
# Helps understand vulnerabilities / license compliance across third party dependencies | |
# Drift: Doesn't track any npm global or OS specific packages that involves scanning entire root file system. | |
# (TODO): Produce OS specific SBOM to detect build time depdencies. | |
- id: sca-project | |
uses: Kong/public-shared-actions/security-actions/sca@2f02738ecb1670f01391162e43fe3f5d4e7942a1 # v2.2.2 | |
with: | |
dir: ${{ github.repository }} | |
upload-sbom-release-assets: true | |
build-and-release-nodejs: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- macos-13-xlarge | |
- ubuntu-22.04 | |
libcurl-release: | |
- 7.86.0 | |
node-libcurl-cpp-std: | |
- c++17 | |
node: | |
- 20.16.0 | |
env: | |
LIBCURL_RELEASE: ${{ matrix.libcurl-release }} | |
LATEST_LIBCURL_RELEASE: ${{ matrix.libcurl-release }} | |
NODE_LIBCURL_CPP_STD: ${{ matrix.node-libcurl-cpp-std }} | |
steps: | |
- if: runner.os == 'macOS' | |
name: Install Needed packages on macOS | |
run: brew install coreutils wget automake libtool cmake gnu-sed m4 autoconf@2.69 groff | |
- if: runner.os == 'Linux' | |
name: Install Needed packages on Linux | |
run: sudo apt-get install -y cmake | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Setup Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version-file: '.nvmrc' | |
cache: 'npm' | |
cache-dependency-path: package-lock.json | |
- name: Restore libcurl deps cache | |
uses: actions/cache@v3 | |
id: libcurl-deps-cache | |
with: | |
path: | | |
~/.node-gyp | |
~/deps | |
key: v4-${{ runner.os }}-libcurl-deps-cache-node-${{ matrix.node }}-fork | |
restore-keys: | | |
v4-${{ runner.os }}-libcurl-deps-cache-node-${{ matrix.node }}-fork | |
- name: 'Set GIT_TAG' | |
if: startsWith(github.ref, 'refs/tags') | |
run: echo "GIT_TAG=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV | |
- name: 'Publish Binary' | |
run: | | |
pip install packaging | |
GIT_COMMIT=${{ github.sha }} GIT_TAG=$GIT_TAG RUNNER_OS=${{ runner.os }} ./scripts/ci/build.sh | |
- name: Upload artifacts | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: build-logs-${{ matrix.os }}-${{ matrix.libcurl-release }}-${{ matrix.node }} | |
path: ./logs/ | |
retention-days: 5 | |
build-and-release-electron: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- macos-13-xlarge | |
- ubuntu-22.04 | |
libcurl-release: | |
- 7.86.0 | |
node: | |
- 20.16.0 | |
electron-version: | |
- 31.4.0 | |
env: | |
LIBCURL_RELEASE: ${{ matrix.libcurl-release }} | |
LATEST_LIBCURL_RELEASE: ${{ matrix.libcurl-release }} | |
ELECTRON_VERSION: ${{ matrix.electron-version }} | |
NODE_LIBCURL_CPP_STD: c++17 | |
steps: | |
- if: runner.os == 'macOS' | |
name: Install Needed packages | |
run: brew install coreutils wget automake libtool cmake gnu-sed m4 autoconf@2.69 groff | |
- if: runner.os == 'Linux' | |
name: Install Needed packages on Linux | |
run: sudo apt-get install -y cmake | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Setup Node.js ${{ matrix.node }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version-file: '.nvmrc' | |
cache: 'npm' | |
cache-dependency-path: package-lock.json | |
- name: Restore Electron Cache | |
uses: actions/cache@v3 | |
with: | |
path: ~/Library/Caches/electron | |
key: v1-${{ runner.os }}-electron-cache-${{ matrix.electron-version }} | |
restore-keys: | | |
v1-${{ runner.os }}-electron-cache-${{ matrix.electron-version }} | |
v1-${{ runner.os }}-electron-cache- | |
- name: Restore libcurl deps cache | |
uses: actions/cache@v3 | |
id: libcurl-deps-cache | |
with: | |
path: | | |
~/.node-gyp | |
~/deps | |
key: v4-${{ runner.os }}-libcurl-deps-cache-electron-${{ matrix.electron-version }}-fork | |
restore-keys: | | |
v4-${{ runner.os }}-libcurl-deps-cache-electron-${{ matrix.electron-version }}-fork | |
- name: 'Set GIT_TAG' | |
if: startsWith(github.ref, 'refs/tags') | |
run: echo "GIT_TAG=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV | |
- name: 'Publish Binary' | |
run: | | |
pip install packaging | |
GIT_COMMIT=${{ github.sha }} GIT_TAG=$GIT_TAG ./scripts/ci/build.sh | |
# Perform SCA analysis for the code repository | |
- name: Upload artifacts | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: build-logs-${{ matrix.os }}-${{ matrix.libcurl-release }}-${{ matrix.electron-version }} | |
path: ./logs/ | |
retention-days: 5 | |
build-and-release-nodejs-windows: | |
runs-on: windows-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
node: | |
- 20.16.0 | |
env: | |
npm_config_msvs_version: 2022 | |
npm_config_build_from_source: true | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Setup Node.js ${{ matrix.node }} | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node }} | |
- name: Install dependencies | |
run: | | |
choco install nasm -y | |
$env:PATH=$env:PROGRAMFILES + "\NASM;" + $env:Path | |
python deps\curl-for-windows\configure.py | |
- name: Build | |
run: | | |
$env:PATH=$env:PROGRAMFILES + "\NASM;" + $env:Path | |
npm ci | |
- name: Test | |
run: | | |
npm run ts-node -e "console.log(require('./lib').Curl.getVersionInfoString())" | |
npm run test | |
if ($LASTEXITCODE -eq 0) { | |
$host.SetShouldExit(0) | |
} | |
- name: Publish binary | |
if: startsWith(github.ref, 'refs/tags/') | |
run: | | |
pip install packaging | |
npm run pregyp package testpackage --verbose | |
node scripts\module-packaging.js --publish $(npm run -s pregyp reveal staged_tarball --silent) | |
build-and-release-electron-windows: | |
runs-on: windows-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
node: | |
- 20.16.0 | |
electron-version: | |
- 31.4.0 | |
env: | |
ELECTRON_VERSION: ${{ matrix.electron-version }} | |
npm_config_msvs_version: 2022 | |
npm_config_build_from_source: true | |
npm_config_runtime: 'electron' | |
npm_config_dist_url: 'https://electronjs.org/headers' | |
npm_config_target: ${{ matrix.electron-version }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Setup Node.js ${{ matrix.node }} | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node }} | |
- name: Install dependencies | |
run: | | |
choco install nasm -y | |
$env:PATH=$env:PROGRAMFILES + "\NASM;" + $env:Path | |
python deps\curl-for-windows\configure.py | |
npm i -g electron@${env:ELECTRON_VERSION} | |
- name: Build | |
run: | | |
$env:PATH=$env:PROGRAMFILES + "\NASM;" + $env:Path | |
npm ci | |
- name: Test | |
run: | | |
npm run test:electron | |
if ($LASTEXITCODE -eq 0) { | |
$host.SetShouldExit(0) | |
} | |
- name: Publish binary | |
if: startsWith(github.ref, 'refs/tags/') | |
run: | | |
pip install packaging | |
npm run pregyp package testpackage --verbose | |
node scripts\module-packaging.js --publish $(npm run -s pregyp reveal staged_tarball --silent) |