Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
92 changes: 29 additions & 63 deletions .github/workflows/check.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,72 +3,38 @@
name: Check

on:
pull_request:
pull_request:
workflow_call:

jobs:
# NPM install is done in a separate job and cached to speed up the following jobs.
build_and_test:
name: Build & Test
if: ${{ !contains(github.event.head_commit.message, '[skip ci]') }}
runs-on: ${{ matrix.os }}
lint_and_test:
name: Lint & Test
if: ${{ !contains(github.event.head_commit.message, '[skip ci]') }}
runs-on: ubuntu-22.04

strategy:
matrix:
os: [ubuntu-22.04] # add windows-latest later
node-version: [14, 16, 18]
strategy:
matrix:
node-version: [14, 16, 18]

steps:
-
uses: actions/checkout@v2
-
name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
-
name: Cache Node Modules
if: ${{ matrix.node-version == 18 }}
uses: actions/cache@v4
with:
path: |
node_modules
build
key: cache-${{ github.run_id }}-v18
-
name: Install Dependencies
run: npm install
-
name: Add localhost-test to Linux hosts file
if: ${{ matrix.os == 'ubuntu-22.04' }}
run: sudo echo "127.0.0.1 localhost-test" | sudo tee -a /etc/hosts
# -
# name: Add localhost-test to Windows hosts file
# if: ${{ matrix.os == 'windows-latest' }}
# run: echo "`n127.0.0.1 localhost-test">>C:\Windows\System32\drivers\etc\hosts
-
name: Run Tests
run: npm test
steps:
- name: Checkout repository
uses: actions/checkout@v6

lint:
name: Lint
needs: [build_and_test]
runs-on: ubuntu-22.04
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v6
with:
node-version: ${{ matrix.node-version }}

steps:
-
uses: actions/checkout@v2
-
name: Use Node.js 18
uses: actions/setup-node@v1
with:
node-version: 18
-
name: Load Cache
uses: actions/cache@v4
with:
path: |
node_modules
build
key: cache-${{ github.run_id }}-v18
-
run: npm run lint
- name: Install Dependencies
run: npm install

# Lint only on the latest Node.js version to save time.
- name: Lint code
if: ${{ matrix.node-version == 18 }}
run: npm run lint

- name: Add localhost-test to Linux hosts file
run: sudo echo "127.0.0.1 localhost-test" | sudo tee -a /etc/hosts

- name: Run Tests
run: npm test
131 changes: 34 additions & 97 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,114 +7,51 @@ on:
- master
# A release via GitHub releases will deploy a latest version
release:
types: [ published ]
types: [published]

# Necessary permissions for publishing to NPM with OIDC
permissions:
contents: write
id-token: write

jobs:
# NPM install is done in a separate job and cached to speed up the following jobs.
build_and_test:
name: Build & Test
if: ${{ !contains(github.event.head_commit.message, '[skip ci]') }}
runs-on: ${{ matrix.os }}
lint_and_test:
name: Lint and test
uses: ./.github/workflows/check.yaml

strategy:
matrix:
os: [ubuntu-22.04] # add windows-latest later
node-version: [14, 16, 18]
deploy:
name: Publish to NPM
needs: [lint_and_test]
runs-on: ubuntu-22.04

steps:
-
uses: actions/checkout@v2
-
name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
-
name: Cache Node Modules
if: ${{ matrix.node-version == 18 }}
uses: actions/cache@v4
- name: Checkout repository
uses: actions/checkout@v6

- name: Use Node.js 24
uses: actions/setup-node@v6
with:
path: |
node_modules
build
key: cache-${{ github.run_id }}-v18
-
name: Install Dependencies
node-version: 24

- name: Install dependencies
run: npm install
- name: Add localhost-test to Linux hosts file
if: ${{ matrix.os == 'ubuntu-22.04' }}
run: sudo echo "127.0.0.1 localhost-test" | sudo tee -a /etc/hosts
# -
# name: Add localhost-test to Windows hosts file
# if: ${{ matrix.os == 'windows-latest' }}
# run: echo "`n127.0.0.1 localhost-test">>C:\Windows\System32\drivers\etc\hosts
-
name: Run Tests
run: npm test

lint:
name: Lint
needs: [build_and_test]
runs-on: ubuntu-22.04
# Determine if this is a beta or latest release
- name: Get release tag
id: get_release_tag
run: echo "release_tag=$(if [ ${{ github.event_name }} = release ]; then echo latest; else echo beta; fi)" >> $GITHUB_OUTPUT

steps:
-
uses: actions/checkout@v2
-
name: Use Node.js 18
uses: actions/setup-node@v1
with:
node-version: 18
-
name: Load Cache
uses: actions/cache@v4
with:
path: |
node_modules
build
key: cache-${{ github.run_id }}-v18
-
run: npm run lint
# Check version consistency and increment pre-release version number for beta only.
- name: Bump pre-release version
if: steps.get_release_tag.outputs.release_tag == 'beta'
run: node ./.github/scripts/before-beta-release.js

- name: Publish to NPM
run: npm publish --tag ${{ steps.get_release_tag.outputs.release_tag }}

# The deploy job is long but there are only 2 important parts. NPM publish
# and triggering of docker image builds in the apify-actor-docker repo.
deploy:
name: Publish to NPM
needs: [lint]
runs-on: ubuntu-22.04
steps:
-
uses: actions/checkout@v2
-
uses: actions/setup-node@v1
with:
node-version: 18
registry-url: https://registry.npmjs.org/
-
name: Load Cache
uses: actions/cache@v4
with:
path: |
node_modules
build
key: cache-${{ github.run_id }}-v18
-
# Determine if this is a beta or latest release
name: Set Release Tag
run: echo "RELEASE_TAG=$(if [ ${{ github.event_name }} = release ]; then echo latest; else echo beta; fi)" >> $GITHUB_ENV
-
# Check version consistency and increment pre-release version number for beta only.
name: Bump pre-release version
if: env.RELEASE_TAG == 'beta'
run: node ./.github/scripts/before-beta-release.js
-
name: Publish to NPM
run: NODE_AUTH_TOKEN=${{secrets.NPM_TOKEN}} npm publish --tag ${{ env.RELEASE_TAG }} --access public
-
# Latest version is tagged by the release process so we only tag beta here.
name: Tag Version
if: env.RELEASE_TAG == 'beta'
# Latest version is tagged by the release process so we only tag beta here.
- name: Tag version
if: steps.get_release_tag.outputs.release_tag == 'beta'
run: |
git_tag=v`node -p "require('./package.json').version"`
git tag $git_tag
Expand Down