-
-
Notifications
You must be signed in to change notification settings - Fork 86
157 lines (138 loc) · 4.99 KB
/
ci.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
name: ContentBox CI
# Only on Development we build snapshots
on:
push:
branches:
- development
- master
jobs:
#############################################
# Tests First baby! We fail, no build :(
#############################################
tests:
uses: ./.github/workflows/tests.yml
secrets:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
#############################################
# Build ContentBox
#############################################
build:
name: Build & Publish
needs: tests
runs-on: ubuntu-20.04
steps:
- name: Checkout Repository
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Setup Java
uses: actions/setup-java@v2
with:
distribution: "adopt"
java-version: "11"
- name: Setup CommandBox CLI
uses: Ortus-Solutions/[email protected]
with:
forgeboxAPIKey: ${{ secrets.FORGEBOX_API_TOKEN }}
version: 5.5.2
- name: Install Build Dependencies
run: |
box install --production
box install commandbox-docbox
cd modules/contentbox && box install --production
# Focal ships with node 16.x so we need to update to 18
- name: Install Node 18
uses: actions/setup-node@v3
with:
node-version: 18
- name: Compile Release Assets
run: |
node -v
npm -v
npm install && npm run prod
cd modules/contentbox/themes/default
npm install && npm run prod
cd $GITHUB_WORKSPACE
rm -rf node_modules
rm -rf modules/contentbox/themes/default/node_modules
- name: Compile Release Static assets
run: |
npm install && npm run prod
cd modules/contentbox/themes/default
npm install && npm run prod
cd $GITHUB_WORKSPACE
rm -rf node_modules
rm -rf modules/contetnbox/themes/default/node_modules
- name: Setup Environment Variables For Build Process
id: current_version
run: |
echo "VERSION=`cat box.json | jq '.version' -r`" >> $GITHUB_ENV
# master or snapshot
echo "BRANCH=master" >> $GITHUB_ENV
if [ $GITHUB_REF == 'refs/heads/development' ]
then
echo "BRANCH=development" >> $GITHUB_ENV
fi
- name: Download Test Artifacts
uses: actions/download-artifact@v2
with:
path: tests/results
- name: Build Docs
run: |
# Normalize swagger doc results
cp -v tests/results/contentbox-test-results-lucee@5/contentbox-swagger.json tests/results/
#ls -lR tests/results
# Run Docs Build
box run-script build:allDocs
- name: Build ContentBox Variants for ${{ env.BRANCH }} v${{ env.VERSION }}
run: |
ant -Dcontentbox.version=${{ env.VERSION }} -Dbuild.number=${{ github.run_number }} -Dbuild.branch=${{ env.BRANCH }} -f build/build.xml
cat build/build-contentbox/module/box.json
- name: List Variants
run: ls -R
working-directory: build/build-contentbox
- name: Upload Build Artifacts
if: success()
uses: actions/upload-artifact@v2
with:
name: contentbox-variants
path: |
artifacts/**/*
- name: Upload Binaries to S3
uses: jakejarvis/s3-sync-action@master
with:
args: --acl public-read
env:
AWS_S3_BUCKET: "downloads.ortussolutions.com"
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_ACCESS_SECRET }}
SOURCE_DIR: "artifacts"
DEST_DIR: "ortussolutions"
- name: Upload API Docs to S3
uses: jakejarvis/s3-sync-action@master
with:
args: --acl public-read
env:
AWS_S3_BUCKET: "apidocs.ortussolutions.com"
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_ACCESS_SECRET }}
SOURCE_DIR: "build/build-contentbox/apidocs"
DEST_DIR: "contentbox/${{ env.VERSION }}"
- name: Publish
run: |
ROOT_DIR=`pwd`
cd $ROOT_DIR/build/build-contentbox/module && box forgebox publish
cd $ROOT_DIR/build/build-contentbox/site && box forgebox publish
cd $ROOT_DIR/build/build-contentbox/installer && box forgebox publish
cd $ROOT_DIR/build/build-contentbox/installer-module && box forgebox publish
- name: Inform Slack
if: ${{ always() }}
uses: rtCamp/action-slack-notify@v2
env:
SLACK_CHANNEL: coding
SLACK_COLOR: ${{ job.status }} # or a specific color like 'green' or '#ff00ff'
SLACK_ICON_EMOJI: ":bell:"
SLACK_MESSAGE: 'ContentBox Built with ${{ job.status }}!'
SLACK_TITLE: "ContentBox Build"
SLACK_USERNAME: CI
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}