Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
7cc8b12
Initial plan
Copilot Dec 2, 2025
abb4ddf
Add GitHub Actions workflows to replace Travis CI
Copilot Dec 2, 2025
64e2e8b
Update RoboFile deployment config for GitHub Actions
Copilot Dec 2, 2025
e7d1658
Fix GitHub Actions workflow syntax and security issues
Copilot Dec 2, 2025
3c1e627
Add deprecation notices to Travis CI files
Copilot Dec 2, 2025
39d9bd6
Completely remove Travis CI - no backward compatibility needed
Copilot Dec 2, 2025
79918be
Remove Travis compatibility layer from workflows
Copilot Dec 2, 2025
d979f03
Address code review feedback - improve documentation and error handling
Copilot Dec 2, 2025
4f863fc
Add explicit permissions to workflows for security
Copilot Dec 2, 2025
18637e8
Replace curl with gh CLI and remove unused docker_mirror_url parameter
AronNovak Dec 5, 2025
36f3eb9
fix lint
AronNovak Dec 5, 2025
88af843
Ensure tests only run after linting passes in GitHub Actions
AronNovak Dec 5, 2025
7430058
Fix ServerGeneralMessagesTest by saving user after role assignment
AronNovak Dec 5, 2025
415e9ad
Fail phpunit parallel testing if a test fails
amitaibu Nov 21, 2025
f65ce15
streamline github ci
AronNovak Dec 13, 2025
6082dac
Port GitHub Actions structure from jep-cjil
AronNovak Dec 13, 2025
ff1cfc1
adapt
AronNovak Dec 13, 2025
88eea61
fixes
AronNovak Dec 19, 2025
ee4cb40
try to unblock composer
AronNovak Dec 19, 2025
75942bd
Fix CI: replace broken asset-packagist with inline packages
AronNovak Dec 19, 2025
eb81b42
Revert "Fix CI: replace broken asset-packagist with inline packages"
AronNovak Dec 19, 2025
b858fa0
Merge remote-tracking branch 'origin/main' into copilot/replace-travi…
AronNovak Dec 22, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .ddev/commands/web/phpunit
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
## Usage: phpunit [arguments]
## Example: "ddev phpunit" or "ddev phpunit web/modules/custom/server_general".

set -euo pipefail

# Function to check if path contains sequential group tests
needs_sequential() {
local path="$1"
Expand Down
103 changes: 103 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
name: CI

on:
push:
branches:
- main
pull_request:

env:
DDEV_NO_INSTRUMENTATION: true

jobs:
phpcs:
name: Drupal coding standard
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.3'

- name: Install parallel
run: sudo apt-get update && sudo apt-get install -y parallel

- name: Install Composer dependencies
run: composer install

- name: Run PHPCS
run: vendor/bin/robo phpcs

phpstan:
name: PhpStan
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.3'

- name: Test syntax
run: ./ci-scripts/test_syntax.sh

- name: Install Composer dependencies
run: composer install

- name: Restore PHPStan result cache
uses: actions/cache/restore@v4
with:
path: .phpstan-cache
key: phpstan-result-cache-${{ github.sha }}
restore-keys: phpstan-result-cache-

- name: Run PHPStan
run: php -d memory_limit=2G ./vendor/bin/phpstan --no-progress analyse -c phpstan.neon

- name: Save PHPStan result cache
if: ${{ !cancelled() }}
uses: actions/cache/save@v4
with:
path: .phpstan-cache
key: phpstan-result-cache-${{ github.sha }}

shellcheck:
name: "Shell coding standard: shellcheck"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Install shellcheck
run: ./ci-scripts/install_shell.sh

- name: Run shellcheck
run: ./ci-scripts/test_shell.sh

test:
name: "Backend tests: Functional tests"
runs-on: ubuntu-latest
needs: [phpcs, phpstan, shellcheck]
env:
ROLLBAR_SERVER_TOKEN: ${{ secrets.ROLLBAR_SERVER_TOKEN }}
steps:
- uses: actions/checkout@v4

- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.3'

- name: Install DDEV
run: ./ci-scripts/install_ddev.sh

- name: Install Drupal
run: ./ci-scripts/install_drupal.sh

- name: Run PHPUnit tests
run: ./ci-scripts/test_phpunit.sh

- name: Run PHPUnit Rollbar tests
run: ./ci-scripts/test_phpunit_rollbar.sh
164 changes: 164 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@
name: Deploy

on:
workflow_run:
workflows: ["CI"]
types:
- completed
branches:
- main
push:
tags:
- '**'

env:
DDEV_NO_INSTRUMENTATION: true

jobs:
deploy-qa:
name: "Deploy to Pantheon QA"
runs-on: ubuntu-latest
if: github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.head_branch == 'main'
concurrency:
group: deploy-pantheon-qa
cancel-in-progress: false
env:
TERMINUS_TOKEN: ${{ secrets.TERMINUS_TOKEN }}
COMMIT_MESSAGE: ${{ github.event.workflow_run.head_commit.message }}
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
ROLLBAR_SERVER_TOKEN: ${{ secrets.ROLLBAR_SERVER_TOKEN }}
PANTHEON_GIT_URL: ${{ secrets.PANTHEON_GIT_URL }}
DEPLOY_EXCLUDE_WARNING: ${{ vars.DEPLOY_EXCLUDE_WARNING }}
steps:
- uses: actions/checkout@v4

- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.3'

- name: Setup SSH key
run: |
mkdir -p ~/.ssh
echo "${{ secrets.PANTHEON_DEPLOY_KEY }}" > ~/.ssh/pantheon-key
chmod 600 ~/.ssh/pantheon-key

- name: Install DDEV
run: ./ci-scripts/install_ddev.sh

- name: Set up SSH keys for DDEV
run: |
mkdir -p .ddev/homeadditions/.ssh
cp ~/.ssh/pantheon-key .ddev/homeadditions/.ssh/pantheon-key
cp ~/.ssh/pantheon-key .ddev/homeadditions/.ssh/id_rsa
chmod 700 .ddev/homeadditions/.ssh
chmod 600 .ddev/homeadditions/.ssh/*

- name: Prepare deploy
run: ./ci-scripts/prepare_deploy.sh

- name: Deploy to Pantheon QA
run: ddev robo deploy:pantheon --no-interaction qa

- name: Deploy notification
run: ddev robo deploy:notify

deploy-test:
name: "Deploy to Pantheon TEST"
runs-on: ubuntu-latest
if: github.ref_type == 'tag' && github.event_name == 'push' && !endsWith(github.ref, 'live')
concurrency:
group: deploy-pantheon-test
cancel-in-progress: false
env:
TERMINUS_TOKEN: ${{ secrets.TERMINUS_TOKEN }}
COMMIT_MESSAGE: ${{ github.event.head_commit.message }}
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
ROLLBAR_SERVER_TOKEN: ${{ secrets.ROLLBAR_SERVER_TOKEN }}
PANTHEON_GIT_URL: ${{ secrets.PANTHEON_GIT_URL }}
steps:
- uses: actions/checkout@v4

- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.3'

- name: Setup SSH key
run: |
mkdir -p ~/.ssh
echo "${{ secrets.PANTHEON_DEPLOY_KEY }}" > ~/.ssh/pantheon-key
chmod 600 ~/.ssh/pantheon-key

- name: Install DDEV
run: ./ci-scripts/install_ddev.sh

- name: Set up SSH keys for DDEV
run: |
mkdir -p .ddev/homeadditions/.ssh
cp ~/.ssh/pantheon-key .ddev/homeadditions/.ssh/pantheon-key
cp ~/.ssh/pantheon-key .ddev/homeadditions/.ssh/id_rsa
chmod 700 .ddev/homeadditions/.ssh
chmod 600 .ddev/homeadditions/.ssh/*

- name: Prepare deploy
run: ./ci-scripts/prepare_deploy.sh

- name: Deploy tag to Pantheon
run: ddev robo deploy:tag-pantheon --no-interaction ${{ github.ref_name }} master

- name: Sync Pantheon
run: ddev robo deploy:pantheon-sync

deploy-live:
name: "Deploy to Pantheon LIVE"
runs-on: ubuntu-latest
if: github.ref_type == 'tag' && github.event_name == 'push' && endsWith(github.ref, 'live')
concurrency:
group: deploy-pantheon-live
cancel-in-progress: false
env:
TERMINUS_TOKEN: ${{ secrets.TERMINUS_TOKEN }}
COMMIT_MESSAGE: ${{ github.event.head_commit.message }}
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
ROLLBAR_SERVER_TOKEN: ${{ secrets.ROLLBAR_SERVER_TOKEN }}
PANTHEON_GIT_URL: ${{ secrets.PANTHEON_GIT_URL }}
steps:
- uses: actions/checkout@v4

- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.3'

- name: Setup SSH key
run: |
mkdir -p ~/.ssh
echo "${{ secrets.PANTHEON_DEPLOY_KEY }}" > ~/.ssh/pantheon-key
chmod 600 ~/.ssh/pantheon-key

- name: Check live deploy
run: ./ci-scripts/check_live_deploy.sh

- name: Install DDEV
run: ./ci-scripts/install_ddev.sh

- name: Set up SSH keys for DDEV
run: |
mkdir -p .ddev/homeadditions/.ssh
cp ~/.ssh/pantheon-key .ddev/homeadditions/.ssh/pantheon-key
cp ~/.ssh/pantheon-key .ddev/homeadditions/.ssh/id_rsa
chmod 700 .ddev/homeadditions/.ssh
chmod 600 .ddev/homeadditions/.ssh/*

- name: Prepare deploy
run: ./ci-scripts/prepare_deploy.sh

- name: Deploy tag to Pantheon
run: ddev robo deploy:tag-pantheon --no-interaction ${{ github.ref_name }} master

- name: Sync Pantheon TEST
run: ddev robo deploy:pantheon-sync

- name: Sync Pantheon LIVE
run: ddev robo deploy:pantheon-sync live
5 changes: 2 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,8 @@ web/private/
web/sites/default/default.services.pantheon.preproduction.yml
pantheon_config.sh
.pantheon
travis-key
pantheon-key
pantheon-key.pub
.bootstrap

#SASS
Expand All @@ -60,8 +61,6 @@ phpunit_debug
*.orig
*.rej

travis_wait*log

# AI
.claude
CLAUDE.md
86 changes: 0 additions & 86 deletions .travis.template.yml

This file was deleted.

Loading
Loading