mirror of
https://github.com/Cacti/plugin_monitor.git
synced 2026-10-23 03:26:42 +09:00
ci: pin the database image and install locked shared test dependencies (#275)
* ci: pin fixtures and install locked shared test dependencies Signed-off-by: Thomas Vincent <thomasvincent@gmail.com> * docs(changelog): list CI hardening as a dev entry Signed-off-by: Thomas Vincent <thomasvincent@gmail.com> * ci: check out the Cacti branch head instead of a pinned commit Signed-off-by: Thomas Vincent <thomasvincent@gmail.com> --------- Signed-off-by: Thomas Vincent <thomasvincent@gmail.com>
This commit is contained in:
1 parent
4aee3f5c80
commit
e3fc44473d
3 files changed
+34
-24
No files matched your search
@@ -48,6 +48,8 @@ jobs:
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@24c54180a607b1449ed407dd24f251e4e9147c8d # v4.38.3
|
||||
with:
|
||||
|
||||
@@ -31,11 +31,19 @@ on:
|
||||
- main
|
||||
- develop
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
env:
|
||||
CACTI: 1.2.x
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.event.pull_request.number || github.ref }}
|
||||
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
|
||||
|
||||
jobs:
|
||||
integration-test:
|
||||
timeout-minutes: 45
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
||||
strategy:
|
||||
@@ -46,7 +54,7 @@ jobs:
|
||||
|
||||
services:
|
||||
mariadb:
|
||||
image: mariadb:11.8
|
||||
image: mariadb:11.8@sha256:6422478cb8e159f080fb1d8ccf65101e26fe51385787fde7d16c3b165a331f15
|
||||
env:
|
||||
MYSQL_ROOT_PASSWORD: cactiroot
|
||||
MYSQL_DATABASE: cacti
|
||||
@@ -66,6 +74,7 @@ jobs:
|
||||
- name: Checkout Cacti
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
repository: Cacti/cacti
|
||||
ref: ${{ env.CACTI }}
|
||||
path: cacti
|
||||
@@ -73,6 +82,7 @@ jobs:
|
||||
- name: Checkout Monitor Plugin
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
path: cacti/plugins/monitor
|
||||
# patch-coverage.php diffs against the base branch below.
|
||||
fetch-depth: 0
|
||||
@@ -82,6 +92,7 @@ jobs:
|
||||
- name: Checkout Thold Plugin
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
repository: Cacti/plugin_thold
|
||||
ref: develop
|
||||
path: cacti/plugins/thold
|
||||
@@ -90,6 +101,7 @@ jobs:
|
||||
uses: shivammathur/setup-php@eb7c497e18156a6bbabfef1d3a82760b9eda3962 # 2.40.0
|
||||
with:
|
||||
php-version: ${{ matrix.php }}
|
||||
tools: composer:2.10.3
|
||||
extensions: intl, mysql, gd, ldap, gmp, xml, curl, json, mbstring, snmp
|
||||
coverage: xdebug
|
||||
ini-values: "post_max_size=256M, max_execution_time=60, date.timezone=America/New_York"
|
||||
@@ -139,29 +151,24 @@ jobs:
|
||||
mysql "$MYSQL_AUTH_USR" cacti < ${{ github.workspace }}/cacti/cacti.sql
|
||||
mysql "$MYSQL_AUTH_USR" -e "INSERT INTO settings (name, value) VALUES ('path_php_binary', '/usr/bin/php')" cacti
|
||||
|
||||
- name: Validate composer files
|
||||
run: |
|
||||
cd ${{ github.workspace }}/cacti
|
||||
if [ -f composer.json ]; then
|
||||
composer validate --strict || true
|
||||
fi
|
||||
# Core's release archives exclude .github and tests. Fetch these paths
|
||||
# through Git at the immutable helper revision instead of an Action archive.
|
||||
- name: Checkout shared CI tooling
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
repository: Cacti/cacti
|
||||
ref: f3ff777992875740e4665fedfe2eff8335f5b894
|
||||
persist-credentials: false
|
||||
path: ci-tools
|
||||
sparse-checkout: |
|
||||
.github/actions/setup-plugin-dependencies
|
||||
tests/tools/plugin-harness
|
||||
|
||||
- name: Install Composer Dependencies
|
||||
run: |
|
||||
cd ${{ github.workspace }}/cacti
|
||||
if [ -f composer.json ]; then
|
||||
sudo composer config --no-plugins allow-plugins.pestphp/pest-plugin true
|
||||
sudo composer require --no-progress --no-interaction "pestphp/pest: ^3" "pestphp/pest-plugin-drift: ^3.0"
|
||||
sudo rm -f composer.lock
|
||||
sudo composer install --dev --no-progress
|
||||
fi
|
||||
|
||||
- name: Restore vendor ownership for Pest
|
||||
run: |
|
||||
cd ${{ github.workspace }}/cacti
|
||||
if [ -d include/vendor ]; then
|
||||
sudo chown -R runner:runner include/vendor composer.lock
|
||||
fi
|
||||
- name: Install locked Cacti and plugin test dependencies
|
||||
uses: ./ci-tools/.github/actions/setup-plugin-dependencies
|
||||
with:
|
||||
cacti-directory: cacti
|
||||
install-core-dev: 'false'
|
||||
|
||||
- name: Create Cacti config.php
|
||||
run: |
|
||||
@@ -207,7 +214,7 @@ jobs:
|
||||
- name: Run Pest Unit Tests
|
||||
run: |
|
||||
cd ${{ github.workspace }}/cacti
|
||||
include/vendor/bin/pest --configuration=plugins/monitor/phpunit.xml \
|
||||
"$CACTI_PEST_BIN" --configuration=plugins/monitor/phpunit.xml \
|
||||
--coverage-clover=plugins/monitor/coverage/clover.xml
|
||||
|
||||
# Whole-file coverage is meaningless here: most of the plugin only runs
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
* dev: Extract the status legend into a testable monitor_legend() helper in includes/functions.php and add unit coverage asserting the longest-label chip minimum
|
||||
* dev: Rename includes/db_functions.php to includes/functions.php and move bundled libraries under includes/
|
||||
* dev: Set the Cacti compatibility floor to 1.2.29
|
||||
* dev: Pin the CI database image and shared test dependencies, disable persisted checkout credentials, and limit workflow permissions and runtime
|
||||
|
||||
--- 2.9 ---
|
||||
|
||||
|
||||
Reference in new issue
Block a user