Skip to content

Commit

Permalink
Merge pull request #1864 from bookernath/workflow-examples
Browse files Browse the repository at this point in the history
Add examples of useful GitHub Actions for theme development
  • Loading branch information
bookernath authored Oct 6, 2020
2 parents b125734 + a7ad955 commit 0054b23
Show file tree
Hide file tree
Showing 2 changed files with 123 additions and 0 deletions.
51 changes: 51 additions & 0 deletions .github/workflow-examples/automatic_deployment_production.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# Deploy Theme to Store when new changes are pushed to master branch
name: Deploy Theme to Store

on:
workflow_dispatch:
push:
branches: [ master, main ]

jobs:
build:
runs-on: ubuntu-latest

strategy:
matrix:
node: [12.x]

steps:
- name: Checkout code
uses: actions/checkout@v2

- name: Use Node.js ${{ matrix.node }}
uses: actions/setup-node@v2-beta
with:
node-version: ${{ matrix.node }}

- name: npm cache
uses: actions/cache@v2
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: Install Stencil CLI Dependency
run: npm install -g @bigcommerce/stencil-cli

- name: Install Dependencies
run: npm ci

#
# You must configure store credentials as secrets on your GitHub repo for automatic deployment via GitHub Actions
#

- name: Connect to store
env:
URL: ${{ secrets.STENCIL_STORE_URL_PRODUCTION }}
TOKEN: ${{ secrets.STENCIL_ACCESS_TOKEN_PRODUCTION }}
run: stencil init -u $URL -t $TOKEN -p 3000

- name: Push theme live, automatically deleting oldest theme if necessary
run: stencil push -a -d
72 changes: 72 additions & 0 deletions .github/workflow-examples/poll_for_changed_configuration.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
# Create PRs for updated configurations caused by changes in Page Builder as a scheduled job.

name: Check for updated configuration on production store

on:
workflow_dispatch:
schedule:
# Runs every 3 hours
# * is a special character in YAML so you have to quote this string
- cron: '0 */3 * * *'
push:
branches: [ master, main ]

jobs:
build:
runs-on: ubuntu-latest

strategy:
matrix:
node: [12.x]

steps:
- name: Checkout code
uses: actions/checkout@v2

- name: Use Node.js ${{ matrix.node }}
uses: actions/setup-node@v2-beta
with:
node-version: ${{ matrix.node }}

- name: npm cache
uses: actions/cache@v2
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: Install Stencil CLI Dependency
run: npm install -g @bigcommerce/stencil-cli

#
# You must configure store credentials as secrets on your GitHub repo for this job to work
#

- name: Connect to store
env:
URL: ${{ secrets.STENCIL_STORE_URL_PRODUCTION }}
TOKEN: ${{ secrets.STENCIL_ACCESS_TOKEN_PRODUCTION }}
run: stencil init -u $URL -t $TOKEN -p 3000

- name: Check for an updated configuration on the live store
run: stencil pull

- name: Create Pull Request
id: cpr
uses: peter-evans/create-pull-request@v3
with:
delete-branch: true
commit-message: Update config.json to match production store
branch: configuration-sync
title: 'Update config.json based on changes in Page Builder'
body: |
Changes were detected between your live store's Theme Configuration and config.json.
These may have been due to changes made in Page Builder, or because a theme was uploaded to your store out of sync with your source control.
By merging this PR, you can bring your local config.json in sync with the live store, and prevent issues where deploying your theme would overwrite recent changes.
Note that this is checked every few hours, so it's possible changes made very recently are not accounted for. You may re-run this action again manually to make sure everything is up to date.
labels: |
automated pr

0 comments on commit 0054b23

Please sign in to comment.