Skip to content

ORCA CI

ORCA CI #2033

Workflow file for this run

---
name: ORCA CI
on:
push:
branches: [ main, develop, wip, support/**, release/**, hotfix/** ]
paths-ignore:
- .idea/**
- docs/**
pull_request:
branches: [ develop ]
paths-ignore:
- .idea/**
- docs/**
schedule:
# Daily at 00:00:00 UTC.
# @see https://crontab.cronhub.io/
- cron: "0 0 * * *"
jobs:
build:
runs-on: ubuntu-latest
env:
# Boolean values must be quoted, otherwise they will be converted to lower case and break ORCA scripts.
ORCA_SUT_NAME: drupal/example
ORCA_SUT_BRANCH: main
ORCA_PACKAGES_CONFIG: example/tests/packages.yml
ORCA_PACKAGES_CONFIG_ALTER: example/tests/packages_alter.yml
# Hardcode path since GITHUB_WORKSPACE can't be used here.
# @see https://github.community/t/how-to-use-env-context/16975/9
ORCA_SUT_DIR: /home/runner/work/orca/example
ORCA_SELF_TEST_COVERAGE_CLOVER: /home/runner/build/logs/clover.xml
ORCA_JOB: ${{ matrix.orca-job }}
ORCA_ENABLE_NIGHTWATCH: ${{ matrix.orca-enable-nightwatch }}
ORCA_COVERAGE_ENABLE: ${{ matrix.orca-coverage-enable }}
# Google env variables.
ORCA_GOOGLE_API_CLIENT_ID: ${{ secrets.ORCA_GOOGLE_API_CLIENT_ID }}
ORCA_GOOGLE_API_CLIENT_SECRET: ${{ secrets.ORCA_GOOGLE_API_CLIENT_SECRET }}
ORCA_GOOGLE_API_REFRESH_TOKEN: ${{ secrets.ORCA_GOOGLE_API_REFRESH_TOKEN }}
strategy:
matrix:
orca-job:
- STATIC_CODE_ANALYSIS
- INTEGRATED_TEST_ON_OLDEST_SUPPORTED
- INTEGRATED_TEST_ON_PREVIOUS_MINOR
- INTEGRATED_TEST_ON_LATEST_LTS
# - INTEGRATED_UPGRADE_TEST_FROM_PREVIOUS_MINOR
- INTEGRATED_TEST_ON_CURRENT
# - INTEGRATED_UPGRADE_TEST_TO_NEXT_MINOR
- ISOLATED_TEST_ON_CURRENT_DEV
- INTEGRATED_TEST_ON_CURRENT_DEV
- STRICT_DEPRECATED_CODE_SCAN
- ISOLATED_TEST_ON_NEXT_MINOR
- INTEGRATED_TEST_ON_NEXT_MINOR
# - ISOLATED_UPGRADE_TEST_TO_NEXT_MAJOR_BETA_OR_LATER
# - ISOLATED_UPGRADE_TEST_TO_NEXT_MAJOR_DEV
- DEPRECATED_CODE_SCAN_W_CONTRIB
- INTEGRATED_TEST_ON_NEXT_MINOR_DEV
- ISOLATED_TEST_ON_NEXT_MINOR_DEV
# - INTEGRATED_UPGRADE_TEST_TO_NEXT_MINOR_DEV
- LOOSE_DEPRECATED_CODE_SCAN
- INTEGRATED_TEST_ON_NEXT_MAJOR_LATEST_MINOR_BETA_OR_LATER
- ISOLATED_TEST_ON_NEXT_MAJOR_LATEST_MINOR_DEV
- INTEGRATED_TEST_ON_NEXT_MAJOR_LATEST_MINOR_DEV
php-version: [ "8.1" ]
orca-enable-nightwatch: [ "FALSE" ]
orca-coverage-enable: [ "FALSE" ]
include:
# Testing Drupal 10 in php 8.1 with nightwatch and coverage.
- orca-job: ISOLATED_TEST_ON_CURRENT
php-version: "8.1"
orca-enable-nightwatch: "TRUE"
orca-coverage-enable: "TRUE"
# Testing Drupal 10 in php 8.2.
- orca-job: ISOLATED_TEST_ON_CURRENT
php-version: "8.2"
# Testing latest Drupal 9 in php 8.2.
- orca-job: INTEGRATED_TEST_ON_LATEST_LTS
php-version: "8.2"
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 20.x
- uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-version }}
coverage: xdebug
- name: Before install
run: |
../orca/bin/ci/self-test/before_install.sh
../orca/bin/ci/before_install.sh
- name: Install
run: |
../orca/bin/ci/self-test/install.sh
../orca/bin/ci/install.sh
- name: Before script
run: ../orca/bin/ci/before_script.sh
- name: Script
run: |
../orca/bin/ci/self-test/script.sh
unset ORCA_ENABLE_NIGHTWATCH
../orca/bin/ci/script.sh
# These two jobs need to run regardless of success or failure in ORCA's self-tests in order to exercise the code.
- name: After script
run: |
../orca/bin/ci/self-test/after_success.sh
unset ORCA_COVERAGE_ENABLE
../orca/bin/ci/after_success.sh
../orca/bin/ci/after_failure.sh
../orca/bin/ci/after_script.sh
# Require all checks to pass without having to enumerate them in the branch protection UI.
# @see https://github.community/t/is-it-possible-to-require-all-github-actions-tasks-to-pass-without-enumerating-them/117957
all-successful:
if: always()
runs-on: ubuntu-latest
needs: [ build ]
steps:
- name: Decide whether the needed jobs succeeded or failed
uses: re-actors/alls-green@release/v1
with:
jobs: ${{ toJSON(needs) }}
- name: All checks successful
run: echo "🎉"