ci(github): migrate yarn to pnpm #936
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
name: Node.js | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
branches: | |
- master | |
jobs: | |
test: | |
name: Node.js v${{ matrix.node-version }} on ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
node-version: [20, 18, 16] | |
os: [ubuntu-latest, windows-latest, macos-latest] | |
exclude: | |
- os: macos-latest | |
node-version: 12 | |
- os: macos-latest | |
node-version: 14 | |
steps: | |
- name: Config git | |
run: git config --global core.autocrlf input | |
- uses: actions/checkout@v3 | |
- uses: pnpm/action-setup@v2 | |
- name: Use Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node-version }} | |
cache: pnpm | |
- name: Restore Node cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
.eslintcache | |
node_modules | |
*/node_modules | |
*/*/node_modules | |
key: ${{ runner.os }}-node${{ matrix.node-version }}-${{ hashFiles('**/package.json') }}-${{ secrets.CACHE_VERSION }} | |
- name: Install dependencies | |
run: pnpm install --frozen-lockfile | |
- name: Build | |
run: | | |
pnpm prepare | |
pushd packages/cordova | |
npx nx build | |
popd | |
pushd internal/rollup-config | |
# pnpm prepack | |
popd | |
# pnpm lerna run --stream prepublishOnly | |
- name: Test | |
run: | | |
# pnpm lint | |
pnpm test | |
shell: bash | |
test-android: | |
name: Android on ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
node-version: [16.x] | |
os: [ubuntu-latest] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: pnpm/action-setup@v2 | |
- name: Set up JDK 1.8 | |
uses: actions/setup-java@v2 | |
with: | |
distribution: 'adopt' | |
java-version: '8' | |
- name: Use Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node-version }} | |
cache: pnpm | |
- name: Restore Node cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
node_modules | |
*/node_modules | |
*/*/node_modules | |
key: ${{ runner.os }}-node${{ matrix.node-version }}-${{ hashFiles('**/package.json') }}-${{ secrets.CACHE_VERSION }} | |
- name: Restore Gradle cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.gradle/caches | |
~/.gradle/wrapper | |
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }} | |
restore-keys: | | |
${{ runner.os }}-gradle- | |
- name: Install dependencies | |
run: | | |
echo "/usr/local/lib/android/sdk/platform-tools" >> $GITHUB_PATH | |
echo "/usr/local/lib/android/sdk/tools" >> $GITHUB_PATH | |
pnpm i | |
pushd examples/cordova | |
pnpm cordova prepare | |
pnpm cordova platform rm ios | |
popd | |
# | |
- name: Test | |
uses: reactivecircus/android-emulator-runner@v2 | |
with: | |
api-level: 28 | |
script: | | |
cd examples/cordova | |
# pnpm test | |
test-ios: | |
name: iOS on ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
node-version: [16.x] | |
os: [macos-latest] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: pnpm/action-setup@v2 | |
- name: Use Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node-version }} | |
cache: pnpm | |
- name: Restore Node cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
node_modules | |
*/node_modules | |
*/*/node_modules | |
key: ${{ runner.os }}-node${{ matrix.node-version }}-${{ hashFiles('**/package.json') }}-${{ secrets.CACHE_VERSION }} | |
- name: Install dependencies | |
run: | | |
pnpm i | |
pushd examples/cordova | |
pnpm cordova prepare | |
pnpm cordova platform rm android | |
popd | |
pushd examples/ionic3 | |
pnpm i | |
popd | |
- name: Test | |
run: | | |
pnpm test-ios | |
pushd examples/cordova | |
# pnpm test:ios | |
popd | |
pushd examples/ionic3 | |
pnpm build --prod | |
popd | |
link-checker: | |
name: Check links | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: lychee Link Checker | |
id: lc | |
uses: lycheeverse/lychee-action@v1.8.0 | |
with: | |
args: > | |
README.md | |
packages/*/README.md | |
website/**/*.md | |
--base https://admob-plus.github.io | |
--config lychee.toml | |
fail: true | |
deploy-docs: | |
name: Deploy website | |
needs: [test] | |
if: github.event_name != 'pull_request' | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: pnpm/action-setup@v2 | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: '18.x' | |
cache: pnpm | |
- uses: webfactory/ssh-agent@v0.5.4 | |
with: | |
ssh-private-key: ${{ secrets.GH_PAGES_DEPLOY }} | |
- name: Release to GitHub Pages | |
run: | | |
git config --global user.name "${GIT_USER}" | |
git config --global user.email "${{ secrets.GH_EMAIL }}" | |
pushd website | |
pnpm deploy | |
popd | |
env: | |
GIT_USER: "${{ secrets.GH_NAME }}" | |
USE_SSH: true | |
DEPLOYMENT_BRANCH: master | |
- name: Check links | |
id: lc | |
uses: lycheeverse/lychee-action@v1 | |
with: | |
args: > | |
build/**/*.html | |
--config lychee.toml | |
fail: true | |
- uses: hkusu/status-create-action@v1 | |
id: status-create | |
with: | |
sha: ${{ github.sha }} | |
state: success | |
- name: Status creation result | |
if: always() | |
run: echo '${{ steps.status-create.outputs.result }}' |