From 0c5e6b25dd389548c96cc36870923c0ce98aa8c7 Mon Sep 17 00:00:00 2001 From: Nathan Morris Date: Thu, 19 Dec 2024 10:47:52 -0600 Subject: [PATCH 01/16] feat: full function ignore --- netlify-ignore.sh | 48 +++++++++++++++++++++++++++++++++++++ packages/site1/netlify.toml | 2 +- packages/site2/netlify.toml | 2 +- 3 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 netlify-ignore.sh diff --git a/netlify-ignore.sh b/netlify-ignore.sh new file mode 100644 index 0000000..1ccacb7 --- /dev/null +++ b/netlify-ignore.sh @@ -0,0 +1,48 @@ +#! /bin/bash + +# netlify-ignore.sh +# logic based shell script for the Netlify based on enivonment variables +# exiting script with code 1 means build, code 0 means no changes so cancel + +# Optional Environmental Inputs: +# ALWAYS_BUILD: true,yes,on,1 +# forces an always build +# WATCHED_BUILD_PATHS: example ( "../../common" ) +# space separated paths to append to the default git diff statement + +# Required Inputs Supplied from Netlify build environment variables +# CACHED_COMMIT_REF +# COMMIT_REF +# SITE_NAME + +# Function to display usage +usage() { + echo -e "\033[1;33mUsage: $0 [--no-default-path]\033[0m" + echo -e "\033[1;33mDefault watch build path is set to '.' before other paths are included.\033[0m" + exit 0 # Exit script after printing usage and do not trigger a build +} + +# Parse optional flag +DEFAULT_WATCH_BUILD_PATH="." +while [[ "$1" != "" ]]; do + case $1 in + --no-default-path ) DEFAULT_WATCH_BUILD_PATH="" # remove default path + ;; + -h | --help ) usage + ;; + * ) usage + ;; + esac + shift +done + +set -x +shopt -s nocasematch +regex="^(build|deploy|build $SITE_NAME|deploy $SITE_NAME)$" + +if [[ ! "$WATCHED_BUILD_PATHS" =~ (false|no|off|0) ]]; then BUILD_PATHS="$WATCHED_BUILD_PATHS"; fi; +# shellcheck disable=SC2046 +if [[ "$ALWAYS_BUILD" =~ (true|yes|on|1) ]]; then (exit 1); +elif [ "$CACHED_COMMIT_REF" == "$COMMIT_REF" ]; then (exit 1); +elif [[ $(git rev-parse "$COMMIT_REF^{tree}") == $(git rev-parse "$COMMIT_REF^1^{tree}") && $(git -P show -s "$COMMIT_REF" --format=%s ) =~ $regex ]]; then (exit 1); +else git diff --quiet "$CACHED_COMMIT_REF" "$COMMIT_REF" $([[ -n "$DEFAULT_WATCH_BUILD_PATH" ]] && echo "$DEFAULT_WATCH_BUILD_PATH ")$([[ -n "$BUILD_PATHS" ]] && echo " $BUILD_PATHS"); fi; diff --git a/packages/site1/netlify.toml b/packages/site1/netlify.toml index c488343..d0a8d98 100644 --- a/packages/site1/netlify.toml +++ b/packages/site1/netlify.toml @@ -1,5 +1,5 @@ [build] - ignore = "echo $CACHED_COMMIT_REF && echo $COMMIT_REF && git diff --quiet $CACHED_COMMIT_REF $COMMIT_REF . ../../common.md" + ignore = "bash ../../netlify-ignore.sh" #ignore = "exit 1" command = "sleep 3s && echo 'Site 1 finishes last by 3 seconds' && exit $BUILD_EXIT_CODE" #command = "echo $CACHED_COMMIT_REF && echo $COMMIT_REF" diff --git a/packages/site2/netlify.toml b/packages/site2/netlify.toml index d409d0c..05c5a62 100644 --- a/packages/site2/netlify.toml +++ b/packages/site2/netlify.toml @@ -1,5 +1,5 @@ [build] - ignore = "echo $CACHED_COMMIT_REF && echo $COMMIT_REF && git diff --quiet $CACHED_COMMIT_REF $COMMIT_REF . ../../common.md" + ignore = "bash ../../netlify-ignore.sh" #ignore = "exit 0" command = "echo $CACHED_COMMIT_REF && echo $COMMIT_REF && exit $BUILD_EXIT_CODE" base = "packages/site2" From 026fe9c6d4eca0a676910f1552210cfe765235eb Mon Sep 17 00:00:00 2001 From: Nathan Morris Date: Thu, 19 Dec 2024 11:44:24 -0600 Subject: [PATCH 02/16] feat: GHA workflow draft and label --- .github/workflows/initialize-pr.yml | 34 +++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 .github/workflows/initialize-pr.yml diff --git a/.github/workflows/initialize-pr.yml b/.github/workflows/initialize-pr.yml new file mode 100644 index 0000000..bf3d779 --- /dev/null +++ b/.github/workflows/initialize-pr.yml @@ -0,0 +1,34 @@ +name: ⚙ Initialize PR + +on: + pull_request: + branches: [develop, main, shared/*] + types: [opened] +jobs: + init-pr: + if: (!github.event.pull_request.closed_at) + name: Initialized + runs-on: ubuntu-latest + outputs: + drafted: ${{ steps.mark-draft.outputs.drafted || false }} + labeled: ${{ steps.default-label.outputs.labeled || false }} + steps: + - name: Mark as draft + id: mark-draft + shell: bash + continue-on-error: true + run: | + gh pr ready ${{ github.event.pull_request.number }} --undo --repo ${{ github.repository }} + echo "drafted=true" >> "$GITHUB_OUTPUT" + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Default labeling + id: default-label + shell: bash + continue-on-error: true + run: | + gh pr edit ${{ github.event.pull_request.number }} --add-label "use-deploys" --repo ${{ github.repository }} + echo "labeled=true" >> "$GITHUB_OUTPUT" + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file From 7add714e0afa39014e87d84f5fe9d771cbf023d7 Mon Sep 17 00:00:00 2001 From: Nathan Morris Date: Thu, 19 Dec 2024 11:54:28 -0600 Subject: [PATCH 03/16] feat: deafult labeling --- .github/default-labels.yml | 4 ++++ .github/workflows/initialize-pr.yml | 14 +++++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 .github/default-labels.yml diff --git a/.github/default-labels.yml b/.github/default-labels.yml new file mode 100644 index 0000000..6dc35f4 --- /dev/null +++ b/.github/default-labels.yml @@ -0,0 +1,4 @@ +labels: + - use-deploys + - initialized + \ No newline at end of file diff --git a/.github/workflows/initialize-pr.yml b/.github/workflows/initialize-pr.yml index bf3d779..050da31 100644 --- a/.github/workflows/initialize-pr.yml +++ b/.github/workflows/initialize-pr.yml @@ -28,7 +28,15 @@ jobs: shell: bash continue-on-error: true run: | - gh pr edit ${{ github.event.pull_request.number }} --add-label "use-deploys" --repo ${{ github.repository }} - echo "labeled=true" >> "$GITHUB_OUTPUT" + if [ -f /.github/default-labels.yml ]; then + labels=$(yq e '.labels[]' /.github/default-labels.yml) + for label in $labels; do + gh pr edit ${{ github.event.pull_request.number }} --add-label "$label" --repo ${{ github.repository }} + done + echo "labeled=true" >> "$GITHUB_OUTPUT" + else + echo "No default-labels.yml file found" + echo "labeled=false" >> "$GITHUB_OUTPUT" + fi env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file From 5bb6758008cb4d84ce662b18ff6c4dc8787650f1 Mon Sep 17 00:00:00 2001 From: Nathan Morris Date: Thu, 19 Dec 2024 12:06:48 -0600 Subject: [PATCH 04/16] fix: correct default labels path --- .github/workflows/initialize-pr.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/initialize-pr.yml b/.github/workflows/initialize-pr.yml index 050da31..25e418c 100644 --- a/.github/workflows/initialize-pr.yml +++ b/.github/workflows/initialize-pr.yml @@ -28,8 +28,8 @@ jobs: shell: bash continue-on-error: true run: | - if [ -f /.github/default-labels.yml ]; then - labels=$(yq e '.labels[]' /.github/default-labels.yml) + if [ -f .github/default-labels.yml ]; then + labels=$(yq e '.labels[]' .github/default-labels.yml) for label in $labels; do gh pr edit ${{ github.event.pull_request.number }} --add-label "$label" --repo ${{ github.repository }} done From ec0fe2f83231145171d7f696e7b208fdfda2292c Mon Sep 17 00:00:00 2001 From: Nathan Morris Date: Thu, 19 Dec 2024 12:09:15 -0600 Subject: [PATCH 05/16] fix: allow reopened to re-init --- .github/workflows/initialize-pr.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/initialize-pr.yml b/.github/workflows/initialize-pr.yml index 25e418c..9382451 100644 --- a/.github/workflows/initialize-pr.yml +++ b/.github/workflows/initialize-pr.yml @@ -6,7 +6,6 @@ on: types: [opened] jobs: init-pr: - if: (!github.event.pull_request.closed_at) name: Initialized runs-on: ubuntu-latest outputs: From fd95a353e89535f77664391697594e237c82bba9 Mon Sep 17 00:00:00 2001 From: Nathan Morris Date: Thu, 19 Dec 2024 12:15:37 -0600 Subject: [PATCH 06/16] fix: repoened is type now --- .github/workflows/initialize-pr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/initialize-pr.yml b/.github/workflows/initialize-pr.yml index 9382451..fa500ed 100644 --- a/.github/workflows/initialize-pr.yml +++ b/.github/workflows/initialize-pr.yml @@ -3,7 +3,7 @@ name: ⚙ Initialize PR on: pull_request: branches: [develop, main, shared/*] - types: [opened] + types: [opened, reopened] jobs: init-pr: name: Initialized From 4b4138d7b392f3b072b5c3b6f2c53788b302319d Mon Sep 17 00:00:00 2001 From: Nathan Morris Date: Thu, 19 Dec 2024 12:18:26 -0600 Subject: [PATCH 07/16] test --- .github/workflows/initialize-pr.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/initialize-pr.yml b/.github/workflows/initialize-pr.yml index fa500ed..21d3acb 100644 --- a/.github/workflows/initialize-pr.yml +++ b/.github/workflows/initialize-pr.yml @@ -27,6 +27,7 @@ jobs: shell: bash continue-on-error: true run: | + ls .github/ if [ -f .github/default-labels.yml ]; then labels=$(yq e '.labels[]' .github/default-labels.yml) for label in $labels; do From 0fdfc2f6c2f113ddaa414ca36e95c25bc2763450 Mon Sep 17 00:00:00 2001 From: Nathan Morris Date: Thu, 19 Dec 2024 12:24:31 -0600 Subject: [PATCH 08/16] fix: path --- .github/workflows/initialize-pr.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/initialize-pr.yml b/.github/workflows/initialize-pr.yml index 21d3acb..4efa5de 100644 --- a/.github/workflows/initialize-pr.yml +++ b/.github/workflows/initialize-pr.yml @@ -27,9 +27,8 @@ jobs: shell: bash continue-on-error: true run: | - ls .github/ - if [ -f .github/default-labels.yml ]; then - labels=$(yq e '.labels[]' .github/default-labels.yml) + if [ -f $GITHUB_WORKSPACE/.github/default-labels.yml ]; then + labels=$(yq e '.labels[]' $GITHUB_WORKSPACE/.github/default-labels.yml) for label in $labels; do gh pr edit ${{ github.event.pull_request.number }} --add-label "$label" --repo ${{ github.repository }} done From e7b3155cdf2d2598bb11726392ffa3134f60d629 Mon Sep 17 00:00:00 2001 From: Nathan Morris Date: Thu, 19 Dec 2024 12:26:25 -0600 Subject: [PATCH 09/16] test --- .github/workflows/initialize-pr.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/initialize-pr.yml b/.github/workflows/initialize-pr.yml index 4efa5de..9efcd85 100644 --- a/.github/workflows/initialize-pr.yml +++ b/.github/workflows/initialize-pr.yml @@ -27,6 +27,7 @@ jobs: shell: bash continue-on-error: true run: | + ls $GITHUB_WORKSPACE/.github/ if [ -f $GITHUB_WORKSPACE/.github/default-labels.yml ]; then labels=$(yq e '.labels[]' $GITHUB_WORKSPACE/.github/default-labels.yml) for label in $labels; do From 9f7f3ccd49d5e0b3f37765526b1ea64cd645c5f6 Mon Sep 17 00:00:00 2001 From: Nathan Morris Date: Thu, 19 Dec 2024 12:29:04 -0600 Subject: [PATCH 10/16] test --- .github/workflows/initialize-pr.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/initialize-pr.yml b/.github/workflows/initialize-pr.yml index 9efcd85..004861f 100644 --- a/.github/workflows/initialize-pr.yml +++ b/.github/workflows/initialize-pr.yml @@ -27,6 +27,7 @@ jobs: shell: bash continue-on-error: true run: | + pwd ls $GITHUB_WORKSPACE/.github/ if [ -f $GITHUB_WORKSPACE/.github/default-labels.yml ]; then labels=$(yq e '.labels[]' $GITHUB_WORKSPACE/.github/default-labels.yml) From d335a1faf1b9658b5ad13582245874a6cfa92305 Mon Sep 17 00:00:00 2001 From: Nathan Morris Date: Thu, 19 Dec 2024 12:34:42 -0600 Subject: [PATCH 11/16] test --- .github/workflows/initialize-pr.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/initialize-pr.yml b/.github/workflows/initialize-pr.yml index 004861f..9fdb9f0 100644 --- a/.github/workflows/initialize-pr.yml +++ b/.github/workflows/initialize-pr.yml @@ -27,10 +27,9 @@ jobs: shell: bash continue-on-error: true run: | - pwd - ls $GITHUB_WORKSPACE/.github/ - if [ -f $GITHUB_WORKSPACE/.github/default-labels.yml ]; then - labels=$(yq e '.labels[]' $GITHUB_WORKSPACE/.github/default-labels.yml) + cd $GITHUB_WORKSPACE + if [ -f .github/default-labels.yml ]; then + labels=$(yq e '.labels[]' .github/default-labels.yml) for label in $labels; do gh pr edit ${{ github.event.pull_request.number }} --add-label "$label" --repo ${{ github.repository }} done From 648c0a08e2d69d444b17288294e883b80ba15d73 Mon Sep 17 00:00:00 2001 From: Nathan Morris Date: Thu, 19 Dec 2024 12:38:48 -0600 Subject: [PATCH 12/16] test --- .github/workflows/initialize-pr.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/initialize-pr.yml b/.github/workflows/initialize-pr.yml index 9fdb9f0..9a83bcb 100644 --- a/.github/workflows/initialize-pr.yml +++ b/.github/workflows/initialize-pr.yml @@ -22,6 +22,12 @@ jobs: env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Check .github directory + run: | + ls -al .github/ + cd $GITHUB_WORKSPACE + ls -al .github/ + - name: Default labeling id: default-label shell: bash From fac6387e4c50ca66ebd947e706db3e283e8ba7f9 Mon Sep 17 00:00:00 2001 From: Nathan Morris Date: Thu, 19 Dec 2024 12:40:19 -0600 Subject: [PATCH 13/16] test --- .github/workflows/initialize-pr.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/initialize-pr.yml b/.github/workflows/initialize-pr.yml index 9a83bcb..fd92b3a 100644 --- a/.github/workflows/initialize-pr.yml +++ b/.github/workflows/initialize-pr.yml @@ -24,9 +24,7 @@ jobs: - name: Check .github directory run: | - ls -al .github/ - cd $GITHUB_WORKSPACE - ls -al .github/ + ls -al - name: Default labeling id: default-label From b5693bca1e00d0792c9fb59d9d5ce2914a8885b1 Mon Sep 17 00:00:00 2001 From: Nathan Morris Date: Thu, 19 Dec 2024 12:40:20 -0600 Subject: [PATCH 14/16] test From 6cc81380089d1ac31469cacbd442a09f4c89ee83 Mon Sep 17 00:00:00 2001 From: Nathan Morris Date: Thu, 19 Dec 2024 12:45:47 -0600 Subject: [PATCH 15/16] fix: checkout --- .github/workflows/initialize-pr.yml | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/.github/workflows/initialize-pr.yml b/.github/workflows/initialize-pr.yml index fd92b3a..028b74d 100644 --- a/.github/workflows/initialize-pr.yml +++ b/.github/workflows/initialize-pr.yml @@ -21,19 +21,14 @@ jobs: echo "drafted=true" >> "$GITHUB_OUTPUT" env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Check .github directory - run: | - ls -al - + - uses: actions/checkout@v4 - name: Default labeling id: default-label shell: bash continue-on-error: true run: | - cd $GITHUB_WORKSPACE - if [ -f .github/default-labels.yml ]; then - labels=$(yq e '.labels[]' .github/default-labels.yml) + if [ -f $GITHUB_WORKSPACE/.github/default-labels.yml ]; then + labels=$(yq e '.labels[]' $GITHUB_WORKSPACE/.github/default-labels.yml) for label in $labels; do gh pr edit ${{ github.event.pull_request.number }} --add-label "$label" --repo ${{ github.repository }} done From 3bfc720de57a01438803901bc2890f25b4ffab64 Mon Sep 17 00:00:00 2001 From: Nathan Morris Date: Thu, 19 Dec 2024 13:09:50 -0600 Subject: [PATCH 16/16] feat: percy dev on demand --- .github/workflows/percy-on-demand.yml | 28 +++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 .github/workflows/percy-on-demand.yml diff --git a/.github/workflows/percy-on-demand.yml b/.github/workflows/percy-on-demand.yml new file mode 100644 index 0000000..7a467dd --- /dev/null +++ b/.github/workflows/percy-on-demand.yml @@ -0,0 +1,28 @@ +name: Percy On Demand Run + +on: + workflow_dispatch: + +jobs: + percy-check: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4.2.2 + + - name: Install Percy CLI + run: npm install -g @percy/cli + + - name: Run Percy check site1 + run: | + cd packages/site1 + percy snapshot --base-url https://site1-uwh-deploy-test.netlify.app snaplist.yml + env: + PERCY_TOKEN: ${{ secrets["PERCY_TOKEN_site1"] }} + - name: Run Percy check site2 + run: | + cd packages/site2 + percy snapshot --base-url https://site2-uwh-deploy-test.netlify.app snaplist.yml + env: + PERCY_TOKEN: ${{ secrets["PERCY_TOKEN_site2"] }}