...
Code Block | ||
---|---|---|
| ||
# Kalamuna GitHub Actions Deployment
#
# This will deploy from GitHub to a git repository through GitHub Actions.
#
# 1. Add a DEPLOY_REPO variable to your GitHub Actions variables
# https://github.com/kalamuna/REPO/settings/secrets/actions
#
# 2. Add this build-and-deploy.yml file to a .github/workflows folder
#
# 3. Ensure all build steps are represented
name: Build and Deploy
on: push
# TODO: Avoid pushing Pantheon repo bloat by only pushing branches if they have a pull request, or branches that are like GBZ-1234.
jobs:
build:
runs-on: ubuntu-latest
steps:
# Verify the DEPLOY_REPO Repository variable exists
- name: Verify DEPLOY_REPO
if: "${{ vars.DEPLOY_REPO == '' }}"
run: echo "Add a DEPLOY_REPO Repository Variable at https://github.com/$GITHUB_REPOSITORY/settings/variables/actions for where to deploy to." && exit 1
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
# Running PHP and Composer is only required when it's not Pantheon.
# - name: PHP
# uses: shivammathur/setup-php@v2
# with:
# php-version: "8.1.11"
# - name: Composer
# uses: ramsey/composer-install@v2
# with:
# composer-options: "--prefer-dist --ignore-platform-reqs"
# TODO: Add Terminus integration?
# Node.js steps not needed on Pantheon.
# TODO: Automate determining whether the site is Pantheon?
- name: Node.js - Check if Required
id: nodejsrequired
uses: andstor/file-existence-action@v2
with:
files: "package.json"
- name: Node.js - Configure
uses: actions/setup-node@v3
if: steps.nodejsrequired.outputs.files_exists == 'true'
with:
node-version: 16
cache: 'npm'
cache-dependency-path: package-lock.json
- name: Node.js - Install
run: npm ci
if: steps.nodejsrequired.outputs.files_exists == 'true'
- name: Node.js - Test
run: npm test
if: steps.nodejsrequired.outputs.files_exists == 'true'
- name: Commit
run: |
git config --global user.name "${{ vars.KALABOT_GIT_NAME }}"
git config --global user.email "${{ vars.KALABOT_GIT_EMAIL }}"
rm .gitignore
mv .gitignore-deploy .gitignore
find web -type d -name .git -print0|xargs -0 rm -rf
find docroot -type d -name .git -print0|xargs -0 rm -rf
git add .
git commit -m "Built $GITHUB_REPOSITORY from: $GITHUB_SHA
All code changes should be committed to: https://github.com/$GITHUB_REPOSITORY
Any commits made directly to this Pantheon repository will be overwritten."
- name: Configure SSH
uses: shimataro/ssh-key-action@v2
with:
key: ${{ secrets.KALABOT_SSH_KEY }}
config: ${{ vars.KALABOT_SSH_CONFIG }}
known_hosts: unnecessary
- name: Deploy
env:
deploy_repo: '${{ vars.DEPLOY_REPO }}'
run: |
git remote add deploy $deploy_repo
git push --force deploy HEAD:refs/heads/${GITHUB_REF##*/} |
...