forked from donalffons/opencascade.js
-
Notifications
You must be signed in to change notification settings - Fork 0
184 lines (160 loc) · 7.99 KB
/
buildFull.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
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
name: Build OCJS
on:
workflow_dispatch:
inputs:
buildType:
type: choice
description: Type of build
options:
- testBindings
- dryRun
- release
multithreaded:
type: boolean
description: Include Multi-Threaded build?
jobs:
build:
name: Build OpenCascade.js
runs-on: [ubuntu-latest]
timeout-minutes: 10000
steps:
- name: Checkout Repository
uses: actions/checkout@v2
with:
lfs: true
- name: Generate version number
id: version
run: |
if [ "${{ github.event.inputs.buildType }}" == "release" ]
then
# export NEW_OPENCASCADEJS_VERSION=$(node -p -e "require('./package.json').version.split('-')[0]")-beta.$(git log --pretty=format:'%h' -n 1)
export NEW_OPENCASCADEJS_VERSION=2.0.0
echo "::set-output name=version::$NEW_OPENCASCADEJS_VERSION"
echo "::set-output name=tags::${{ secrets.DOCKER_IMAGE_NAME }}:$NEW_OPENCASCADEJS_VERSION,${{ secrets.DOCKER_IMAGE_NAME }}:latest"
else
echo "::set-output name=tags::${{ secrets.DOCKER_IMAGE_NAME }}:latest"
fi
- name: Get branch name
id: branch-name
uses: tj-actions/[email protected]
- name: Generate Docker Staging Tag Name
id: dockerStagingTag
run: |
githubBranch=${{ steps.branch-name.outputs.current_branch }}
tag=$(echo "$githubBranch" | tr '[:upper:]' '[:lower:]')
echo "::set-output name=tag::$tag"
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_TOKEN }}
- uses: actions/setup-node@v2
with:
node-version: '16'
- name: NPM install tests
run: |
cd test
npm install
cd ..
# - name: Build OpenCascade.js Docker Image "test-image" and run binding tests
# timeout-minutes: 10000
# run: |
# docker pull ${{ secrets.DOCKER_IMAGE_NAME }}:latest || true
# docker pull ${{ secrets.DOCKER_IMAGE_NAME }}:staging-${{ steps.dockerStagingTag.outputs.tag }} || true
# docker build --target test-image --build-arg threading=single-threaded -t ${{ secrets.DOCKER_IMAGE_NAME }}-test-image --cache-from ${{ secrets.DOCKER_IMAGE_NAME }}:staging-${{ steps.dockerStagingTag.outputs.tag }} --cache-from ${{ secrets.DOCKER_IMAGE_NAME }}:latest .
# cd test
# dockerImageName="${{ secrets.DOCKER_IMAGE_NAME }}-test-image" npm run test -- ./testBindings.test.ts
# cd ..
- name: Build OpenCascade.js Docker Image "custom-build-image"
if: github.event.inputs.buildType != 'testBindings'
timeout-minutes: 10000
run: |
docker build --target custom-build-image --build-arg threading=single-threaded -t ${{ secrets.DOCKER_IMAGE_NAME }} --cache-from ${{ secrets.DOCKER_IMAGE_NAME }}:staging-${{ steps.dockerStagingTag.outputs.tag }} --cache-from ${{ secrets.DOCKER_IMAGE_NAME }}:latest .
- name: Push to Docker Hub (staging)
if: github.event.inputs.buildType != 'testBindings'
run: |
docker tag ${{ secrets.DOCKER_IMAGE_NAME }} ${{ secrets.DOCKER_IMAGE_NAME }}:staging-${{ steps.dockerStagingTag.outputs.tag }}
docker push ${{ secrets.DOCKER_IMAGE_NAME }}:staging-${{ steps.dockerStagingTag.outputs.tag }}
- name: Build OpenCascade.js Full Module
if: github.event.inputs.buildType != 'testBindings'
timeout-minutes: 10000
run: |
docker run \
-v $(pwd):/src \
-u $(id -u):$(id -g) \
${{ secrets.DOCKER_IMAGE_NAME }} \
/src/builds/opencascade.full.yml
mv opencascade.full.* dist
- name: Run all tests except multi-threading
if: github.event.inputs.buildType != 'testBindings'
run: |
cd test
dockerImageName="${{ secrets.DOCKER_IMAGE_NAME }}:staging-${{ steps.dockerStagingTag.outputs.tag }}" skipMultiThreaded=true npm run test
- name: Build OpenCascade.js Docker Image (Multi-Threaded)
if: github.event.inputs.buildType != 'testBindings' && github.event.inputs.multithreaded == 'true'
timeout-minutes: 10000
run: |
docker pull ${{ secrets.DOCKER_IMAGE_NAME }}:multi-threaded || true
docker pull ${{ secrets.DOCKER_IMAGE_NAME }}:staging-${{ steps.dockerStagingTag.outputs.tag }}-multi-threaded || true
docker build --target custom-build-image --build-arg threading=multi-threaded -t ${{ secrets.DOCKER_IMAGE_NAME }}:multi-threaded --cache-from ${{ secrets.DOCKER_IMAGE_NAME }}:staging-${{ steps.dockerStagingTag.outputs.tag }}-multi-threaded --cache-from ${{ secrets.DOCKER_IMAGE_NAME }}:multi-threaded .
- name: Push to Docker Hub (Staging, Multi-Threaded)
if: github.event.inputs.buildType != 'testBindings' && github.event.inputs.multithreaded == 'true'
run: |
docker tag ${{ secrets.DOCKER_IMAGE_NAME }}:multi-threaded ${{ secrets.DOCKER_IMAGE_NAME }}:staging-${{ steps.dockerStagingTag.outputs.tag }}-multi-threaded
docker push ${{ secrets.DOCKER_IMAGE_NAME }}:staging-${{ steps.dockerStagingTag.outputs.tag }}-multi-threaded
- name: Run multi-threading tests
if: github.event.inputs.buildType != 'testBindings'
run: |
cd test
dockerImageName="${{ secrets.DOCKER_IMAGE_NAME }}:staging-${{ steps.dockerStagingTag.outputs.tag }}-multi-threaded" npm run test -- ./multi-threaded.test.ts
- uses: actions/upload-artifact@v2
if: always()
with:
name: dist
path: ./dist/
- uses: actions/upload-artifact@v2
if: always()
with:
name: customBuilds
path: |
./test/customBuilds/*.js
./test/customBuilds/*.wasm
./test/customBuilds/*.d.ts
./test/customBuilds/*.yml
- name: Push to Docker Hub
if: github.event.inputs.buildType == 'release'
run: |
docker push ${{ secrets.DOCKER_IMAGE_NAME }}
docker tag ${{ secrets.DOCKER_IMAGE_NAME }} ${{ secrets.DOCKER_IMAGE_NAME }}:${{ steps.version.outputs.version }}
docker push ${{ secrets.DOCKER_IMAGE_NAME }}:${{ steps.version.outputs.version }}
- name: Push to Docker Hub (Multi-Threaded)
if: github.event.inputs.buildType == 'release' && github.event.inputs.multithreaded == 'true'
run: |
docker push ${{ secrets.DOCKER_IMAGE_NAME }}:multi-threaded
docker tag ${{ secrets.DOCKER_IMAGE_NAME }}:multi-threaded ${{ secrets.DOCKER_IMAGE_NAME }}:${{ steps.version.outputs.version }}-multi-threaded
docker push ${{ secrets.DOCKER_IMAGE_NAME }}:${{ steps.version.outputs.version }}-multi-threaded
- name: Git and NPM config
run: |
git config --local user.email "[email protected]"
git config --local user.name "GitHub Action"
npm set //registry.npmjs.org/:_authToken=${{ secrets.NPM_AUTH_TOKEN }}
- name: Publish new beta version to NPM
if: github.event.inputs.buildType == 'release'
run: |
cd website && npm version ${{ steps.version.outputs.version }} --force && cd ..
cd website/ocjs-editor-theme && npm version ${{ steps.version.outputs.version }} --force && cd ../..
cd typedoc-reference-docs && npm version ${{ steps.version.outputs.version }} --force && cd ..
npm version ${{ steps.version.outputs.version }} --force
npm publish --tag=beta
- name: Commit Changes
run: |
git status
git pull
git config --local user.email "[email protected]"
git config --local user.name "github-actions[bot]"
git commit -m "Update OpenCascade.js version" -a
- name: Push Changes to branch
uses: ad-m/github-push-action@master
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
branch: ${{ github.ref }}