-
Notifications
You must be signed in to change notification settings - Fork 0
103 lines (92 loc) · 3.55 KB
/
wf-configuration.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
## This shared workflow is intended to be used for gathering configuration as the first step in
## a larger workflow process where subsequent jobs depend on outputs from this configuration job.
name: Workflow Configuration
on:
workflow_call:
inputs:
NODE_VERSION:
description: "The version of Node to use when building the site."
default: 20"
required: false
type: string
FILE_FILTERS:
description: "The file filters to pass to dorny/paths-filter `filter` action."
required: true
type: string
secrets:
NPM_TOKEN:
description: "The npm token used to pull and push packages."
required: true
ARTIFACTORY_USERNAME:
description: "Artifactory Username used to pull and push packages."
required: false
jobs:
wf-config:
name: Evaluate
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@v4
- name: Prepare Repository
# Fetch full git history and tags
run: git fetch --unshallow --tags
- name: Cache Dependencies
id: cache
uses: actions/cache@v4
env:
cache-name: cache-node-modules
with:
path: ~/.npm
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- name: Setup Node
uses: actions/setup-node@v4
env:
NPM_TOKEN: "${{ secrets.NPM_TOKEN }}"
ARTIFACTORY_TOKEN: "${{ secrets.NPM_TOKEN }}"
ARTIFACTORY_PASSWORD: "${{ secrets.NPM_TOKEN }}"
ARTIFACTORY_USERNAME: "${{ secrets.ARTIFACTORY_USERNAME }}"
with:
node-version: ${{ inputs.NODE_VERSION }}
- name: Install
id: install
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
ARTIFACTORY_TOKEN: "${{ secrets.NPM_TOKEN }}"
ARTIFACTORY_PASSWORD: "${{ secrets.NPM_TOKEN }}"
ARTIFACTORY_USERNAME: "${{ secrets.ARTIFACTORY_USERNAME }}"
run: npm ci
## Determine if this is a release build or not, which will affect which dependent jobs run below
- name: Detect Auto Release Status
id: detect-release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
ARTIFACTORY_TOKEN: "${{ secrets.NPM_TOKEN }}"
ARTIFACTORY_PASSWORD: "${{ secrets.NPM_TOKEN }}"
ARTIFACTORY_USERNAME: "${{ secrets.ARTIFACTORY_USERNAME }}"
run: |
## We use `auto version` to calculate whether this is a release build or not
VERSION_RESULT=$(npx auto version)
echo "Version calculation result: ${VERSION_RESULT}"
if [[ "${VERSION_RESULT}" =~ ^(major|minor|patch|release)$ ]]; then
echo "Release: true"
echo "RELEASE=true" >> $GITHUB_OUTPUT
else
echo "Release: false"
echo "RELEASE=false" >> $GITHUB_OUTPUT
fi
## Detect if any specific files we care about have changed to help us know if we need to
## execute a CI build or Storybook deployment at all or not
- name: Check File Changes
uses: dorny/paths-filter@v3
id: file-filter
with:
filters: ${{ inputs.FILE_FILTERS }}
outputs:
is-release: ${{ steps.detect-release.outputs.RELEASE }}
file-changes: ${{ steps.file-filter.outputs.changes }}