|
name: Fetch code |
|
|
|
on: |
|
workflow_call: |
|
inputs: |
|
tag: |
|
description: 'Tag to deploy' |
|
required: false |
|
type: string |
|
default: '' |
|
artifact: |
|
description: 'Artifact name' |
|
required: false |
|
type: string |
|
default: '' |
|
jobs: |
|
fetch: |
|
name: Checkout code |
|
runs-on: ubuntu-latest |
|
|
|
steps: |
|
|
|
# Checkout the source |
|
- name: Checkout source |
|
uses: actions/checkout@v4 |
|
with: |
|
ref: ${{ inputs.tag }} |
|
|
|
# Setup file permissions |
|
- name: File permissions |
|
working-directory: ./ |
|
run: | |
|
chmod +x tools/post-install-cmd.sh |
|
|
|
# Set up PHP to our liking for use with WordPress, and to match the live environment. |
|
- name: Setup PHP environment |
|
uses: shivammathur/setup-php@v2 |
|
with: |
|
php-version: '8.2' |
|
tools: composer:v2 |
|
ini-values: memory_limit=512M |
|
extensions: gd, zip |
|
env: |
|
COMPOSER_AUTH_JSON: | |
|
{ |
|
"http-basic": { |
|
"connect.advancedcustomfields.com": { |
|
"username": "${{ secrets.ACF_USERNAME }}", |
|
"password": "${{ secrets.ACF_PASSWORD }}" |
|
} |
|
} |
|
} |
|
# Create cache locations that work across action containers to speed up testing if and when possible. |
|
- name: Cache composer dependencies |
|
uses: actions/cache@v4 |
|
with: |
|
path: ~/.composer/cache |
|
key: dependencies-composer-${{ hashFiles('composer.lock') }} |
|
|
|
- name: Cache node dependencies |
|
uses: actions/cache@v4 |
|
with: |
|
path: ~/.npm |
|
key: dependencies-npm-${{ hashFiles('package-lock.json') }} |
|
|
|
# Setup SSH keys for accessing private repositories |
|
- name: SSH Key configuration |
|
uses: webfactory/ssh-agent@v0.9.0 |
|
with: |
|
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }} |
|
|
|
# If the project includes any composer dependencies, install them now. |
|
- name: Install Composer dependencies |
|
working-directory: ./ |
|
env: |
|
COMPOSER_AUTH: ${{ secrets.COMPOSER_AUTH }} |
|
run: 'composer validate && composer install --no-dev --no-progress' |
|
|
|
# Install translation files |
|
- name: Install translations via Composer |
|
working-directory: ./ |
|
env: |
|
COMPOSER_AUTH: ${{ secrets.COMPOSER_AUTH }} |
|
run: 'composer run get-translations' |
|
|
|
# Cleanup removes files not wanted in the final production build. |
|
- name: Remove unwanted files |
|
working-directory: ./ |
|
run: | |
|
rm -rf .github/ |
|
rm -rf .dependabot/ |
|
rm -rf .env.example |
|
rm -rf .gitignore |
|
rm -rf documentation/ |
|
find . -name 'deprecated' -type d -prune|grep ninja|xargs rm -rf |
|
|
|
- name: Package repository for sharing between jobs |
|
working-directory: ./ |
|
run: | |
|
touch code-artifact.tar.gz |
|
tar -czf code-artifact.tar.gz --exclude=code-artifact.tar.gz --exclude=.git --exclude=.github . |
|
|
|
- name: Create shared artifact |
|
uses: actions/upload-artifact@v4 |
|
with: |
|
name: code-artifact |
|
path: code-artifact.tar.gz |
|
retention-days: 1 |
|
overwrite: true |