Skip to content

Fix permission issue for docker unit tests script #15

Fix permission issue for docker unit tests script

Fix permission issue for docker unit tests script #15

Workflow file for this run

name: CI Pipeline
on:
push:
branches:
- main
- tooling/github-actions
pull_request:
jobs:
prepare_test_and_build_environment:
runs-on: ubuntu-latest
env:
HOME: /home/runner
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Install Docker Compose
run: |
sudo apt-get update
sudo apt-get install -y docker-compose
- name: Authenticate with GitHub CLI
env:
GH_ACCESS_TOKEN: ${{ secrets.GH_ACCESS_TOKEN }}
run: |
echo "$GH_ACCESS_TOKEN" | gh auth login --with-token
- name: Clone GV Tooling
run: gh repo clone GravityKit/Tooling $HOME/tooling
- name: Make Docker Unit Tests Script Executable
run: chmod +x $HOME/tooling/docker-unit-tests/docker-unit-tests.sh
- name: Authenticate GitHub for Composer
env:
GH_ACCESS_TOKEN: ${{ secrets.GH_ACCESS_TOKEN }}
run: composer config --global --auth github-oauth.github.com $GH_ACCESS_TOKEN
# Ensure test_dependencies directory exists before caching
- name: Ensure test_dependencies directory exists
run: mkdir -p $HOME/test_dependencies
- name: Cache Dependencies
uses: actions/cache@v4
with:
path: $HOME/test_dependencies
key: test-dependencies-${{ runner.os }}-${{ hashFiles('composer.lock', 'package-lock.json') }}
restore-keys: |
test-dependencies-${{ runner.os }}-
- name: Force Composer to Use HTTPS
run: composer config --global github-protocols https
- name: Install Build Dependencies
run: |
$HOME/tooling/build-tools/build_tools.sh npm -o install
$HOME/tooling/build-tools/build_tools.sh composer -o install
- name: Configure Test Environment
env:
GH_AUTH_TOKEN: ${{ secrets.GH_ACCESS_TOKEN }}
run: $HOME/tooling/docker-unit-tests/docker-unit-tests.sh prepare_all
# Consolidate workspace files into a single directory for upload
- name: Prepare Workspace Artifact
run: |
mkdir -p workspace_artifact
cp -R $HOME/tooling workspace_artifact/
cp -R $HOME/test_dependencies workspace_artifact/
- name: Save Workspace
uses: actions/upload-artifact@v4
with:
name: workspace
path: workspace_artifact
if-no-files-found: warn
compression-level: 6
overwrite: false
include-hidden-files: false
run_php_74_unit_tests:
runs-on: ubuntu-latest
env:
HOME: /home/runner
needs: prepare_test_and_build_environment
steps:
- name: Restore Workspace
uses: actions/download-artifact@v4
with:
name: workspace
path: /tmp/workspace/
- name: Extract Workspace Artifact
run: |
if [ -d /tmp/workspace/workspace_artifact ]; then
rsync -a /tmp/workspace/workspace_artifact/ $HOME/
else
rsync -a /tmp/workspace/ $HOME/
fi
- name: Run PHP 7.4 Unit Tests
run: $HOME/tooling/docker-unit-tests/docker-unit-tests.sh test_74
run_php_80_unit_tests:
runs-on: ubuntu-latest
env:
HOME: /home/runner
needs: prepare_test_and_build_environment
steps:
- name: Restore Workspace
uses: actions/download-artifact@v4
with:
name: workspace
path: /tmp/workspace/
- name: Extract Workspace Artifact
run: |
if [ -d /tmp/workspace/workspace_artifact ]; then
rsync -a /tmp/workspace/workspace_artifact/ $HOME/
else
rsync -a /tmp/workspace/ $HOME/
fi
- name: Run PHP 8.0 Unit Tests
run: $HOME/tooling/docker-unit-tests/docker-unit-tests.sh test_80
# Uncomment if you want to run acceptance tests
# run_acceptance_tests:
# runs-on: ubuntu-latest
# needs: prepare_test_and_build_environment
# steps:
# - name: Restore Workspace
# uses: actions/download-artifact@v4
# with:
# name: workspace
# path: $HOME/
#
# - name: Set Up Virtual Host
# run: echo 127.0.0.1 wordpress | sudo tee -a /etc/hosts
#
# - name: Run Acceptance Tests
# run: |
# PLUGIN_DIR=$PLUGIN_DIR docker-compose -f tests/acceptance/docker/docker-compose.yml run codeception --debug -vvv --html --xml
#
# - name: Store Test Results
# uses: actions/upload-artifact@v4
# with:
# name: acceptance-test-results
# path: tests/acceptance/_output
build_package_release:
runs-on: ubuntu-latest
env:
HOME: /home/runner
needs: [run_php_74_unit_tests, run_php_80_unit_tests]
steps:
- name: Restore Workspace
uses: actions/download-artifact@v4
with:
name: workspace
path: /tmp/workspace/
- name: Extract Workspace Artifact
run: |
if [ -d /tmp/workspace/workspace_artifact ]; then
rsync -a /tmp/workspace/workspace_artifact/ $HOME/
else
rsync -a /tmp/workspace/ $HOME/
fi
- name: Build and Package
run: |
BRANCH_REF="${{ github.ref }}"
$HOME/tooling/build-tools/build_tools.sh composer -o "install --no-dev"
$HOME/tooling/build-tools/build_tools.sh grunt
if [[ "$BRANCH_REF" != "refs/heads/main" ]]; then
$HOME/tooling/build-tools/build_tools.sh package_build -o "gravityview gravityview.php --include-hash"
else
$HOME/tooling/build-tools/build_tools.sh package_build -o "gravityview gravityview.php $([[ $(git log -n 1 | grep "\[skip release\]") ]] && echo --include-hash)"
fi
mkdir -p gravityview
cp -R vendor* gravityview
rm gravityview/vendor_prefixed/gravitykit/foundation/src/translations.js.php
zip -gr $(ls gravityview-*.zip) gravityview
mkdir .release
cp gravityview-*.zip .release
- name: Store Release Artifacts
uses: actions/upload-artifact@v4
with:
name: release
path: .release
- name: Create GitHub Release
if: github.ref == 'refs/heads/main'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
git config user.email "support@gravitykit.com"
git config user.name "GravityView - CI"
$HOME/tooling/build-tools/build_tools.sh create_release -o "gravityview.php $(ls gravityview-*.zip)"
- name: Notify GravityView Release Manager
if: github.ref == 'refs/heads/main'
run: |
if ! git log -n 1 | grep "\[skip notify\]"; then
$HOME/tooling/build-tools/build_tools.sh announce_build -o "gravityview.php $(ls gravityview-*.zip) --with-circle"
fi