-
Notifications
You must be signed in to change notification settings - Fork 0
150 lines (138 loc) · 5.37 KB
/
publish-beta.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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
name: Beta Release
on:
workflow_dispatch: # This allows manual triggering only from the Actions tab
jobs:
install:
runs-on: ubuntu-latest
steps:
- name: Checkout DIVE
uses: actions/checkout@main
- name: Setup Node.js
uses: actions/setup-node@main
- name: Search for cached dependencies
uses: actions/cache@main
id: yarn-cache
with:
path: node_modules
key:
node-modules-${{ runner.os }}-${{ hashFiles('yarn.lock') }}
- name: Install DIVE dependencies (if cache not found)
if: steps.yarn-cache.outputs.cache-hit != 'true'
run: yarn
eslint:
runs-on: ubuntu-latest
needs: install
steps:
- name: Checkout DIVE
uses: actions/checkout@main
- name: Search for cached dependencies
uses: actions/cache@main
id: yarn-cache
with:
path: node_modules
key:
node-modules-${{ runner.os }}-${{ hashFiles('yarn.lock') }}
- name: Install DIVE dependencies (if cache not found)
if: steps.yarn-cache.outputs.cache-hit != 'true'
run: yarn
- name: Lint DIVE
run: yarn lint
unit:
runs-on: ubuntu-latest
needs: install
steps:
- name: Checkout DIVE
uses: actions/checkout@main
- name: Search for cached dependencies
uses: actions/cache@main
id: yarn-cache
with:
path: node_modules
key:
node-modules-${{ runner.os }}-${{ hashFiles('yarn.lock') }}
- name: Install DIVE dependencies (if cache not found)
if: steps.yarn-cache.outputs.cache-hit != 'true'
run: yarn
- name: Unit-Test DIVE
run: yarn unit
prettier-fix:
runs-on: ubuntu-latest
needs: install
steps:
- name: Checkout DIVE
uses: actions/checkout@main
- name: Search for cached dependencies
uses: actions/cache@main
id: yarn-cache
with:
path: node_modules
key:
node-modules-${{ runner.os }}-${{ hashFiles('yarn.lock') }}
- name: Install DIVE dependencies (if cache not found)
if: steps.yarn-cache.outputs.cache-hit != 'true'
run: yarn
- name: Prettier fix DIVE
run: yarn prettier:fix && git add .
publish-beta:
runs-on: ubuntu-latest
needs: [eslint, unit, prettier-fix]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '20'
- name: Search for cached dependencies
uses: actions/cache@v4
id: yarn-cache
with:
path: node_modules
key:
node-modules-${{ runner.os }}-${{ hashFiles('yarn.lock') }}
- name: Install dependencies (if cache not found)
if: steps.yarn-cache.outputs.cache-hit != 'true'
run: yarn
- name: Register git user
run: |
git config user.name "GitHub Actions"
git config user.email "[email protected]"
- name: Check existing beta versions
id: beta-branch-check
run: |
current_version=$(node -p "require('./package.json').version")
prefix="beta/v$current_version-beta"
last_beta=$(git tag | grep "^${prefix}" | sort -V | tail -n 1)
if [ -z "$last_beta" ]; then
next_beta="${prefix}.1"
else
beta_number=$(echo $last_beta | awk -F '.' '{print $NF}')
next_beta="${prefix}.$((beta_number + 1))"
fi
echo "next_beta=$next_beta" >> $GITHUB_ENV
- name: Bump to next beta version
run: |
new_version=$(echo $next_beta | sed 's|beta/v||')
npm version $new_version --no-git-tag-version
git add package.json
- name: Create beta branch
run: |
git checkout -b ${{ env.next_beta }}
- name: Build DIVE
run: yarn build
- name: Add build files
run: git add ./build -f
- name: Commit changes
run: |
git commit -m "Beta v$(node -p "require('./package.json').version")"
git tag -a v$(node -p "require('./package.json').version") -m "Beta v$(node -p "require('./package.json').version")"
- name: Push changes
run: |
git push origin beta/v$(node -p "require('./package.json').version") --follow-tags
- name: Authenticate with NPM
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
run: echo "//registry.npmjs.org/:_authToken=${NODE_AUTH_TOKEN}" > ~/.npmrc
- name: Publish Beta tag to npm
run: |
yarn publish --tag beta