Skip to content

Nightly Jobs

Nightly Jobs #526

Workflow file for this run

name: 'Nightly Jobs'
on:
schedule:
# Runs every day at 4AM
- cron: '0 4 * * *'
workflow_dispatch:
jobs:
wdio-smoke:
name: 'WDIO: Smoke Test'
uses: ./.github/workflows/wdio-single-browser.yml
with:
browser-target: chrome@latest
secrets: inherit
verify-ab-assets:
name: Verify A/B Assets
timeout-minutes: 60
runs-on: ubuntu-latest
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: lts/*
- name: Verify a/b assets
uses: ./.github/actions/fastly-verify
with:
fastly_key: ${{ secrets.FASTLY_PURGE_KEY }}
fastly_service: js-agent.newrelic.com
asset_path: |
internal/dev-released.js \
internal/dev-latest.js \
internal/dev-experiments.js \
internal/dev-postamble.js \
internal/staging-released.js \
internal/staging-latest.js \
internal/staging-experiments.js \
internal/staging-postamble.js \
internal/prod-released.js \
internal/prod-postamble.js \
internal/eu-prod-released.js \
internal/eu-prod-postamble.js
deprecate-old-versions:
name: Deprecate Unsupported Versions
runs-on: ubuntu-latest
steps:
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 'lts/*'
- name: Authenticate with npm
run: npm config set "//registry.npmjs.org/:_authToken" "${{ secrets.BROWSER_NPM_TOKEN }}"
- name: Deprecate old versions
shell: bash
run: |
# Get agent EoL table from NRQL
response=$(curl -X POST https://api.newrelic.com/graphql \
-H 'Content-Type: application/json' \
-H 'API-Key: ${{ secrets.NR_API_KEY_PRODUCTION }}' \
-d '{ "query": "{\n docs {\n agentReleases(agentName: BROWSER) {\n eolDate\n version\n }\n }\n}" }')
eol_table=$(echo "$response" | jq -r '.data.docs.agentReleases | map({(.version): .eolDate}) | add') # this is a map of version string to EoL date in yyyy-mm-dd format
echo "Fetched EoL table from NRDB."
# Fetch package metadata from npm registry
package_name="@newrelic/browser-agent"
metadata=$(curl -s "https://registry.npmjs.org/$package_name")
echo "Fetched agent releases metadata from NPM."
# Parse versions and their publication dates
today=$(date +%Y-%m-%d)
versions=$(echo "$metadata" | jq -r '.versions | keys[]') # this list is pre-sorted from oldest to newest
for version in $versions; do
eol_date=$(echo "$eol_table" | jq -r --arg version "$version" '.[$version]')
if [ "$eol_date" = "null" ]; then
echo "No EoL date found for version $version. Skipping..."
continue
fi
deprecation_message=$(echo "$metadata" | jq -r ".versions[\"$version\"].deprecated")
if [[ "$eol_date" < "$today" || "$eol_date" == "$today" ]]; then
if [ "$deprecation_message" = "null" ]; then
echo "Deprecating version $version no longer supported as of $eol_date..."
npm deprecate "$package_name@$version" "This version is no longer supported."
else
echo "Version $version is already deprecated."
fi
else
break # rest of the ascending versions should be within their support window
fi
done
# TODO: Need to add a job for cleaning up experiments to run nightly