docs: add "Edit this Page" link to the docs (#392) #45
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: Check & Release | |
on: | |
# Push to master will deploy a beta version | |
push: | |
branches: | |
- master | |
# A release via GitHub releases will deploy a latest version | |
release: | |
types: [ published ] | |
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 }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest] | |
node-version: [ 16, 18, 20 ] | |
steps: | |
- | |
uses: actions/checkout@v3 | |
- | |
name: Use Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- | |
name: Cache Node Modules | |
if: ${{ matrix.node-version == 16 }} | |
uses: actions/cache@v3 | |
with: | |
path: | | |
node_modules | |
build | |
key: cache-${{ github.run_id }} | |
- | |
name: Install Dependencies | |
run: npm install | |
- | |
name: Remove $HOME\.apify directory on Windows | |
if: runner.os == 'Windows' | |
run: Remove-Item -Recurse -Force -ErrorAction SilentlyContinue $HOME\.apify | |
- | |
name: Remove ~/.apify directory on Linux | |
if: runner.os != 'Windows' | |
run: rm -rf ~/.apify | |
- | |
name: Run Tests | |
env: | |
TEST_USER_TOKEN: ${{ secrets.APIFY_TEST_USER_API_TOKEN }} | |
APIFY_CLI_DISABLE_TELEMETRY: 1 | |
run: npm test | |
test_python_support: | |
name: Test Python template support | |
needs: [build_and_test] | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest] | |
python-version: ["3.8", "3.9", "3.10", "3.11"] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- | |
uses: actions/checkout@v3 | |
- | |
name: Use Node.js 16 | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 16 | |
- | |
name: Load cached node_modules | |
uses: actions/cache@v3 | |
with: | |
path: | | |
node_modules | |
build | |
key: cache-${{ github.run_id }} | |
- | |
name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- | |
name: Run Python tests | |
env: | |
TEST_USER_TOKEN: ${{ secrets.APIFY_TEST_USER_API_TOKEN }} | |
APIFY_CLI_DISABLE_TELEMETRY: 1 | |
run: npm run test-python | |
lint: | |
name: Lint | |
needs: [build_and_test, test_python_support] | |
runs-on: ubuntu-latest | |
steps: | |
- | |
uses: actions/checkout@v3 | |
- | |
name: Use Node.js 16 | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 16 | |
- | |
name: Load Cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
node_modules | |
build | |
key: cache-${{ github.run_id }} | |
- | |
run: npm run lint | |
# 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-latest | |
steps: | |
- | |
uses: actions/checkout@v3 | |
- | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 16 | |
registry-url: https://registry.npmjs.org/ | |
- | |
name: Load Cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
node_modules | |
build | |
key: cache-${{ github.run_id }} | |
- | |
# 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.APIFY_SERVICE_ACCOUNT_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' | |
run: | | |
git_tag=v`node -p "require('./package.json').version"` | |
git tag $git_tag | |
git push origin $git_tag | |
update_homebrew_formula: | |
name: Update Homebrew Formula | |
needs: [deploy] | |
runs-on: ubuntu-latest | |
if: ${{ github.event_name == 'release' && github.event.action == 'published' }} | |
steps: | |
- | |
name: Checkout repository | |
uses: actions/checkout@v3 | |
- | |
name: Set git identity | |
run: | | |
git config --global user.name 'Apify Service Account' | |
git config --global user.email 'apify-service-account@users.noreply.github.com' | |
- | |
name: Set up Homebrew | |
uses: Homebrew/actions/setup-homebrew@master | |
- | |
# It can happen that the updated package version is not available right after the `npm publish` command finishes | |
# Try waiting 3 minutes until the updated package version is available | |
name: Wait for updated package to be available on NPM | |
run: | | |
PACKAGE_VERSION=`node -p "require('./package.json').version"` | |
PACKAGE_DEFINITION_URL="https://registry.npmjs.org/apify-cli/${PACKAGE_VERSION}" | |
for _i in {1..30}; do | |
curl -sf "${PACKAGE_DEFINITION_URL}" &> /dev/null && exit 0; | |
echo "Package 'apify-cli' version '${PACKAGE_VERSION}' is not available yet, will retry in 10 seconds." | |
sleep 10; | |
done | |
curl -sf "${PACKAGE_DEFINITION_URL}" &> /dev/null || exit 1; | |
- | |
name: Update Homebrew formula in apify/homebrew-tap repo | |
run: | | |
PACKAGE_VERSION=`node -p "require('./package.json').version"` | |
gh workflow run update_formula.yaml --repo apify/homebrew-tap --field package=apify-cli --field version=$PACKAGE_VERSION | |
env: | |
GH_TOKEN: ${{ secrets.APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN }} | |
- | |
name: Send PR with formula update to homebrew/homebrew-core repo | |
run: | | |
PACKAGE_VERSION=`node -p "require('./package.json').version"` | |
brew tap --force homebrew/core | |
brew bump-formula-pr apify-cli \ | |
--version ${PACKAGE_VERSION} \ | |
--no-browse \ | |
--message "Automatic update of the \`apify-cli\` formula. | |
CC @fnesveda @B4nan" | |
env: | |
HOMEBREW_GITHUB_API_TOKEN: ${{ secrets.APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN }} |