Skip to content

NEW (Extension) @W-16812379@ Add production heartbeat test #60

NEW (Extension) @W-16812379@ Add production heartbeat test

NEW (Extension) @W-16812379@ Add production heartbeat test #60

name: production-heartbeat
on:
workflow_dispatch: # As per documentation, the colon is necessary even though no config is required.
schedule:
# Cron syntax is "minute[0-59] hour[0-23] date[1-31] month[1-12] day[0-6]". '*' is 'any value', and multiple values
# can be specified with comma-separated lists. All times are UTC.
# So this expression means "run at 45 minutes past 1, 5, and 9 AM/PM UTC". The hours were chosen so that
# the jobs run only close to business hours of Central Time.
# Days were chosen to run only from Monday through Friday.
- cron: '45 13,17,21 * * 1,2,3,4,5'
jobs:
production-heartbeat:
strategy:
fail-fast: false
matrix:
os: [{vm: ubuntu-latest}, {vm: windows-2019}, {vm: macos-latest}]
node: ['lts/*']
runs-on: ${{ matrix.os.vm }}
timeout-minutes: 60
steps:
# 1 Install VS Code and Extension on Ubuntu
- name: Install VS Code on Ubuntu
if: runner.os == 'Linux'
run: |
sudo apt update
sudo apt install wget gpg -y
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
sudo install -o root -g root -m 644 packages.microsoft.gpg /usr/share/keyrings/
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list'
sudo apt update
sudo apt install code -y
- name: Install Salesforce Code Analyzer Extension on Ubuntu
if: runner.os == 'Linux'
run: |
code --install-extension salesforce.sfdx-code-analyzer-vscode
- name: Verify Extension Installation on Ubuntu
if: runner.os == 'Linux'
run: |
if code --list-extensions | grep -q 'salesforce.sfdx-code-analyzer-vscode'; then
echo "Extension installed successfully"
else
echo "::error Extension installation failed" && exit 1
fi
# 2 Install VS Code and Extension on Windows
# We use chocolatey to install vscode since it gives a reliable path for the location of code.exe
# We have also seen Windows to be flaky, so adding addition echo statements.
- name: Install VS Code on Windows
if: runner.os == 'Windows'
run: |
Write-Host "Installing Chocolatey..."
Set-ExecutionPolicy Bypass -Scope Process -Force;
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072;
iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
Write-Host "Installing Visual Studio Code using Chocolatey..."
choco install vscode -y
- name: Install Salesforce Code Analyzer Extension on Windows
if: runner.os == 'Windows'
run: |
echo "Installing Code Analyzer Extension..."
"/c/Program Files/Microsoft VS Code/bin/code" --install-extension salesforce.sfdx-code-analyzer-vscode
echo "Installing Code Analyzer Complete"
echo "Waiting for 10 seconds..."
sleep 10
echo "Listing installed extensions..."
"/c/Program Files/Microsoft VS Code/bin/code" --list-extensions
shell: bash
- name: Verify Extension on Windows
if: runner.os == 'Windows'
run: |
echo "Waiting for 10 seconds..."
sleep 10
echo "Listing installed extensions..."
extensions=$("/c/Program Files/Microsoft VS Code/bin/code" --list-extensions)
echo "$extensions"
if echo "$extensions" | grep -q 'salesforce.sfdx-code-analyzer-vscode'; then
echo "Extension 'salesforce.sfdx-code-analyzer-vscode' is installed successfully"
else
echo "::error Extension 'salesforce.sfdx-code-analyzer-vscode' is NOT installed"
exit 1
fi
shell: bash
# 3 Install VS Code and Extension on macOS
- name: Install VS Code on macOS
if: runner.os == 'macOS'
run: |
brew install --cask visual-studio-code
- name: Install Salesforce Code Analyzer Extension on macOS
if: runner.os == 'macOS'
run: |
code --install-extension salesforce.sfdx-code-analyzer-vscode
- name: Verify Extension Installation on macOS
if: runner.os == 'macOS'
run: |
if code --list-extensions | grep -q 'salesforce.sfdx-code-analyzer-vscode'; then
echo "Extension installed successfully"
else
echo "::error Extension installation failed" && exit 1
fi
# === Report any problems ===
name: Report problems

Check failure on line 114 in .github/workflows/production-heartbeat.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/production-heartbeat.yml

Invalid workflow file

You have an error in your yaml syntax on line 114
needs: [production-heartbeat]
if: ${{ failure() || cancelled() }}
uses: ./.github/workflows/report-problems.yml
with:
run_link: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}
pagerduty_key: ${{ secrets.PAGERDUTY_HEARTBEAT_KEY }}
matrix_os_vm: ${{ matrix.os }}
matrix_node: ${{ matrix.node }}
is_critical: ${{ contains(join(steps.*.outcome), 'failure') || contains(join(steps.*.outcome), 'skipped') }}