-
Notifications
You must be signed in to change notification settings - Fork 232
Expand file tree
/
Copy pathaction.yml
More file actions
85 lines (77 loc) · 2.72 KB
/
action.yml
File metadata and controls
85 lines (77 loc) · 2.72 KB
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
# Note: This is a composite GitHub Actions, it should do all env setup, caching an so on, so other pipelines can just compose their own stuff on top of that.
# Docs: https://docs.github.com/en/actions/creating-actions/creating-a-composite-action
name: Configure Environment
description: Shared configuration for checkout, Node.js and package manager
inputs:
nodeVersion:
description: Node.js version to use
required: true
default: '20'
workingDirectory:
description: Working directory
required: false
default: ./
packageManager:
description: Package manager
required: false
default: yarn
packageManagerVersion:
description: Package manager version
required: false
default: ''
runs:
using: composite
steps:
- name: Cancel Previous Runs
uses: styfle/cancel-workflow-action@0.13.1
continue-on-error: true
with:
access_token: ${{ github.token }}
- name: check pnpm version
shell: bash
id: pnpm
if: inputs.packageManager == 'pnpm'
working-directory: ${{ inputs.workingDirectory }}
run: |
PNPM_VERSION=${PNPM_VERSION:-9.0.6}
PKG_JSON=$(cat package.json | jq -r '.packageManager' | awk -F@ '{print $2}')
if [ ! -z $PKG_JSON ]; then
PNPM_VERSION=$PKG_JSON
fi
if [ ! -z {{inputs.packageManager}} ]; then
PNPM_VERSION=${{ inputs.packageManagerVersion }}
fi
echo "Using PNPM version $PNPM_VERSION"
echo "version=$PNPM_VERSION" >> $GITHUB_OUTPUT
- name: Setup ${{ inputs.packageManager }}
id: pnpm_setup
if: inputs.packageManager == 'pnpm'
uses: pnpm/action-setup@v4.2.0
with:
version: ${{ steps.pnpm.outputs.version }}
run_install: false
package_json_file: ${{ inputs.workingDirectory }}/package.json
- name: setup node
uses: actions/setup-node@v6
with:
node-version: ${{ inputs.nodeVersion }}
cache: ${{ inputs.packageManager }}
cache-dependency-path: |
**/pnpm-lock.yaml
**/yarn.lock
patches/**
- name: yarn install
shell: bash
if: inputs.packageManager == 'yarn' && inputs.packageManagerVersion == ''
run: yarn install --ignore-engines --frozen-lockfile --immutable
working-directory: ${{ inputs.workingDirectory }}
- name: modern yarn install
shell: bash
if: inputs.packageManager == 'yarn' && inputs.packageManagerVersion == 'modern'
run: corepack enable && yarn
working-directory: ${{ inputs.workingDirectory }}
- name: pnpm install
shell: bash
if: inputs.packageManager == 'pnpm'
run: pnpm install --frozen-lockfile
working-directory: ${{ inputs.workingDirectory }}