-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuildspec.yml
74 lines (72 loc) · 4.04 KB
/
buildspec.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
version: 0.2
env:
variables:
GODOT_VERSION: "3.2.3"
secrets-manager:
KEY: IanByrneNet/SSL/Star:key
CRT: IanByrneNet/SSL/Star:crt
CHAIN: IanByrneNet/SSL/Star:chain
CONNECTION_STRING: PostMortem/Db:connectionstring
phases:
install:
runtime-versions:
dotnet: 3.1
pre_build:
commands:
# Prepare variables
- commitId=$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1-7)
- timestamp=$(date +"%Y-%m-%d-%H-%M-%S")
- versionName="${timestamp}-${commitId}"
# Clone ChatScript source
- git clone https://github.com/ianByrne/ChatScript.git ChatScriptClone
# Download Godot
- wget https://downloads.tuxfamily.org/godotengine/${GODOT_VERSION}/mono/Godot_v${GODOT_VERSION}-stable_mono_linux_headless_64.zip
- wget https://downloads.tuxfamily.org/godotengine/${GODOT_VERSION}/mono/Godot_v${GODOT_VERSION}-stable_mono_export_templates.tpz
- mkdir -p ~/.config/godot
- mkdir -p ~/.local/share/godot/templates/${GODOT_VERSION}.stable.mono
- unzip Godot_v${GODOT_VERSION}-stable_mono_linux_headless_64.zip
- mv Godot_v${GODOT_VERSION}-stable_mono_linux_headless_64/Godot_v${GODOT_VERSION}-stable_mono_linux_headless.64 /usr/local/bin/godot
- mv Godot_v${GODOT_VERSION}-stable_mono_linux_headless_64/GodotSharp /usr/local/bin/GodotSharp
- unzip Godot_v${GODOT_VERSION}-stable_mono_export_templates.tpz
- mv templates/* ~/.local/share/godot/templates/${GODOT_VERSION}.stable.mono
- rm -f Godot_v${GODOT_VERSION}-stable_mono_export_templates.tpz Godot_v${GODOT_VERSION}-stable_mono_linux_headless_64.zip
build:
commands:
# Build website
- dotnet restore WebApp
- dotnet publish WebApp -c Release -o application
# Build Godot game
- mkdir -p application/wwwroot/export
- cd Game
- godot -v --export "HTML5" ../application/wwwroot/export/index.html
- cd ..
# Copy core ChatScript files
- mkdir -p application/ChatScript/BINARIES
- mkdir -p application/ChatScript/DICT/ENGLISH
- mkdir -p application/ChatScript/LIVEDATA
- mkdir -p application/ChatScript/TOPIC
- cp -r ChatScript application
- cp -r ChatScriptClone/BINARIES/LinuxChatScript64 application/ChatScript/BINARIES
- cp -r ChatScriptClone/DICT/ENGLISH/*.bin application/ChatScript/DICT/ENGLISH
- cp -r ChatScriptClone/LIVEDATA/SYSTEM application/ChatScript/LIVEDATA
- cp -r ChatScriptClone/LIVEDATA/ENGLISH application/ChatScript/LIVEDATA
# Disable :command usage
- echo "" > application/ChatScript/authorizedIP.txt
# Build ChatScript bot
- cd application/ChatScript/BINARIES
- chmod +x LinuxChatScript64
- ./LinuxChatScript64 local build0=files0.txt
- ./LinuxChatScript64 local build1=files1.txt
- cd ../../..
# Create SSL certs
- echo "{\"files\":{\"/etc/pki/tls/certs/server.crt\":{\"mode\":\"000400\",\"owner\":\"root\",\"group\":\"root\",\"content\":\"$CRT\"}}}" > WebApp/.ebextensions/ssl-crt.config
- echo "{\"files\":{\"/etc/pki/tls/certs/server.key\":{\"mode\":\"000400\",\"owner\":\"root\",\"group\":\"root\",\"content\":\"$KEY\"}}}" > WebApp/.ebextensions/ssl-key.config
- echo "{\"files\":{\"/etc/pki/tls/certs/chain.pem\":{\"mode\":\"000400\",\"owner\":\"root\",\"group\":\"root\",\"content\":\"$CHAIN\"}}}" > WebApp/.ebextensions/ssl-chain.config
# Zip final package to upload to beanstalk
- cp -r WebApp/.ebextensions .
- zip -r application.zip Dockerfile .dockerignore application .ebextensions entrypoint.sh Dockerrun.aws.json
post_build:
commands:
- aws s3 cp application.zip s3://$BUCKET_NAME/application-$versionName.zip
- aws elasticbeanstalk create-application-version --application-name "$APP_NAME" --version-label "$versionName" --description "$CODEBUILD_BUILD_ID - $CODEBUILD_WEBHOOK_TRIGGER" --source-bundle S3Bucket=$BUCKET_NAME,S3Key=application-$versionName.zip
- aws elasticbeanstalk update-environment --application-name "$APP_NAME" --version-label "$versionName" --environment-name "$ENV_NAME"