Skip to content

Commit

Permalink
WIP - Unit Testing w/ Dev Container
Browse files Browse the repository at this point in the history
  • Loading branch information
timnolte committed Nov 9, 2023
1 parent af66d4e commit 927ec0e
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 50 deletions.
11 changes: 7 additions & 4 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"dockerComposeFile": "../docker-compose.yml",
"service": "app",
"mounts": ["source=dind-var-lib-docker,target=/var/lib/docker,type=volume"],
"workspaceMount": "source=${localWorkspaceFolder}/openid-connect-generic,target=/workspaces,type=bind,consistency=delegated",
//"workspaceMount": "source=${localWorkspaceFolder}/openid-connect-generic,target=/workspaces,type=bind,consistency=delegated",
"workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}",

"customizations": {
Expand Down Expand Up @@ -52,14 +52,17 @@
},

// Use `onCreateCommand` to run commands as part of the container creation.
"onCreateCommand": "sudo chmod +x .devcontainer/install.sh && .devcontainer/install.sh",
"onCreateCommand": "chmod +x .devcontainer/install.sh && .devcontainer/install.sh",

// Use 'postCreateCommand' to run commands after the container is created.
"postCreateCommand": "sudo chmod +x .devcontainer/setup.sh && .devcontainer/setup.sh",
"postCreateCommand": "chmod +x .devcontainer/setup.sh && .devcontainer/setup.sh",

// Use 'postStartCommand' to run commands after the container has started.
"postStartCommand": "cd /app && wp plugin activate daggerhart-openid-connect-generic",

// Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
"remoteUser": "wp_php"
"remoteUser": "wp_php",

// A set of name-value pairs that sets or overrides environment variables for the devcontainer.json supporting service / tool (or sub-processes like terminals) but not the container as a whole.
"remoteEnv": { "LOCAL_WORKSPACE_FOLDER": "${localWorkspaceFolder}" }
}
11 changes: 6 additions & 5 deletions .devcontainer/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,14 @@ if [ ! -f /usr/local/bin/wp ]; then
fi

# Install specific Composer version.
COMPOSER_VERSION=2.3.10
if [ ! -f /usr/local/bin/composer ]; then
echo "Installing Composer ${COMPOSER_VERSION}..."
sudo curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer --2 --version=${COMPOSER_VERSION}
fi
#COMPOSER_VERSION=2.3.10
#if [ ! -f /usr/local/bin/composer ]; then
# echo "Installing Composer ${COMPOSER_VERSION}..."
# sudo curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer --2 --version=${COMPOSER_VERSION}
#fi

# Copy the welcome message
if [ ! -f /usr/local/etc/vscode-dev-containers/first-run-notice.txt ]; then
echo "Installing First Run Notice..."
sudo cp .devcontainer/welcome-message.txt /usr/local/etc/vscode-dev-containers/first-run-notice.txt
fi
2 changes: 1 addition & 1 deletion .devcontainer/setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ PLUGIN_DIR=/workspaces/openid-connect-generic

# Install Composer dependencies.
cd "${PLUGIN_DIR}"
composer install
composer install --no-progress

# Install NPM dependencies.
cd "${PLUGIN_DIR}"
Expand Down
62 changes: 22 additions & 40 deletions .github/workflows/pr-unit-testing.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,50 +24,32 @@ jobs:
# https://github.com/marketplace/actions/checkout
uses: actions/checkout@v2

- name: Get Composer Cache Directory
id: composer-cache
if: ${{ !env.ACT }}
run: echo "::set-output name=dir::$(composer config cache-files-dir)"

- name: Cache Composer dependencies
if: ${{ !env.ACT }}
uses: actions/cache@v2
env:
composer-cache-name: cache-composer
- name: Set Swap Space
uses: pierotofy/set-swap-space@master
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-build-${{ env.composer-cache-name }}-wp-${{ env.WP_VERSION }}-v${{ env.ACTION_VERSION }}-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-build-${{ env.composer-cache-name }}-wp-${{ env.WP_VERSION }}-v${{ env.ACTION_VERSION }}-
swap-size-gb: 10

- name: Setup Node Environment
# https://github.com/marketplace/actions/setup-node-js-environment
uses: actions/setup-node@v2
with:
node-version-file: '.nvmrc'
cache: ${{ !env.ACT && 'npm' || '' }}
- name: Set up Docker BuildKit
# https://github.com/marketplace/actions/docker-setup-buildx
uses: docker/setup-buildx-action@v1

- name: Setup PHP & Composer Environment
# https://github.com/marketplace/actions/setup-php-action
uses: shivammathur/setup-php@v2
- name: Pre-build dev container image
uses: devcontainers/ci@v0.3
with:
php-version: "${{ env.PHP_VERSION }}"
tools: "composer:${{ env.COMPOSER_VERSION }}"

- name: Environment Check
run: php -v && composer --version

- name: Require Specified WordPress Version
run: composer require johnpbloch/wordpress-core:${{ env.WP_VERSION }} php-stubs/wordpress-stubs:${{ env.WP_VERSION }} wp-phpunit/wp-phpunit:${{ env.WP_VERSION }} --dev --prefer-source --update-with-all-dependencies

- name: Install Composer Dependencies
run: composer install --prefer-dist

- name: NPM Setup
run: npm ci

- name: Unit Tests
run: npm run test
imageName: ghcr.io/oidc-wp/openid-connect-generic/openid-connect-generic-devcontainer
cacheFrom: ghcr.io/oidc-wp/openid-connect-generic/openid-connect-generic-devcontainer
# Control when images are pushed.
push: always

- name: Build Dev Container
# https://github.com/marketplace/actions/dev-container-build-and-run-action
uses: devcontainers/ci@v0.3
with:
cacheFrom: ghcr.io/oidc-wp/openid-connect-generic/openid-connect-generic-devcontainer
# Control when images are pushed.
push: never
# Change this to be your CI task/script
runCmd: npm run test

- name: Generate Coverage Report
# https://github.com/marketplace/actions/coverage-report-as-comment-clover
Expand Down

0 comments on commit 927ec0e

Please sign in to comment.