Browse Source

Merge pull request #311 from sendssf/dev

Chore: Add entrypoint to dockerfile
tags/0.1.0
shangfengh GitHub 3 years ago
parent
commit
b7083a60ae
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 99 additions and 5 deletions
  1. +3
    -3
      CAPI/cpp/API/src/AI.cpp
  2. +5
    -2
      dependency/Dockerfile/Dockerfile_cpp
  3. +68
    -0
      dependency/py/upload.py
  4. +23
    -0
      dependency/shell/compile.sh

+ 3
- 3
CAPI/cpp/API/src/AI.cpp View File

@@ -17,7 +17,7 @@ extern const std::array<THUAI6::StudentType, 4> studentType = {

extern const THUAI6::TrickerType trickerType = THUAI6::TrickerType::Assassin;

//可以在AI.cpp内部声明变量与函数
// 可以在AI.cpp内部声明变量与函数

void AI::play(IStudentAPI& api)
{
@@ -38,8 +38,8 @@ void AI::play(IStudentAPI& api)
{
// 玩家3执行操作
}
//当然可以写成if (this->playerID == 2||this->playerID == 3)之类的操作
// 公共操作
// 当然可以写成if (this->playerID == 2||this->playerID == 3)之类的操作
// 公共操作
}

void AI::play(ITrickerAPI& api)


+ 5
- 2
dependency/Dockerfile/Dockerfile_cpp View File

@@ -40,5 +40,8 @@ COPY ./dependency /usr/local/PlayerCode/dependency
WORKDIR /usr/local/PlayerCode/dependency/proto
RUN ./cpp_output.sh
WORKDIR /usr/local/PlayerCode/CAPI/cpp
RUN cmake ./CMakeLists.txt
RUN make
COPY ./dependency/shell/compile.sh .
ENTRYPOINT ["bash","./compile.sh"]
#WORKDIR /usr/local/PlayerCode/CAPI/cpp
#RUN cmake ./CMakeLists.txt
#RUN make

+ 68
- 0
dependency/py/upload.py View File

@@ -0,0 +1,68 @@
# -*- coding=utf-8
from qcloud_cos import CosConfig
from qcloud_cos import CosS3Client
import sys
import os
import logging
import getopt
import hashlib
import json

def upload(path):
response = client.upload_file(
Bucket='thuai6-1314234950',
LocalFilePath= path,
Key = "TEST",
PartSize=1,
MAXThread=10,
EnableMD5=False
)
return response

def generateHashFile():
file = targetfolder
hashlist={}
for root, dirs, files in os.walk(file):
for file in files:
path = os.path.join(root, file)
with open(path, 'rb') as f:
data = f.read()
hashlist[path.replace(file)]=hashlib.md5(data)
res = json.dumps(hashlist)

try:
opts,args = getopt.getopt(sys.argv[1:],"t:i:k:")
except getopt.GetoptError:
print("upload.py -d<targetfolder> -i<SecretID> -k<SecretKey>")

sKey=""
sId=""
targetfolder=""
for opt,arg in opts:
if opt == "-t":
targetfolder = arg
elif opt == "-i":
sId = arg
elif opt == "-k":
sKey = arg

print("skey:"+sKey+" sid:"+sId+" tar:"+targetfolder)
# 正常情况日志级别使用 INFO,需要定位时可以修改为 DEBUG,此时 SDK 会打印和服务端的通信信息
logging.basicConfig(level=logging.INFO, stream=sys.stdout)

# 1. 设置用户属性, 包括 secret_id, secret_key, region等。Appid 已在 CosConfig 中移除,请在参数 Bucket 中带上 Appid。Bucket 由 BucketName-Appid 组成
secret_id = sId # 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140
secret_key = sKey # 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140
region = 'ap-beijing' # 替换为用户的 region,已创建桶归属的 region 可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket
# COS 支持的所有 region 列表参见 https://cloud.tencent.com/document/product/436/6224
token = None # 如果使用永久密钥不需要填入 token,如果使用临时密钥需要填入,临时密钥生成和使用指引参见 https://cloud.tencent.com/document/product/436/14048
scheme = 'https' # 指定使用 http/https 协议来访问 COS,默认为 https,可不填

config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token, Scheme=scheme)
client = CosS3Client(config)

generateHashFile()

#### 高级上传接口(推荐)
# 根据文件大小自动选择简单上传或分块上传,分块上传具备断点续传功能。

+ 23
- 0
dependency/shell/compile.sh View File

@@ -0,0 +1,23 @@
#! /bin/bash
# WORKDIR /usr/local/PlayerCode/CAPI/cpp
i=1
flag=1
bind=/usr/local/mnt
while (( $i <= 4 ))
do
cp -f $bind/player$i.cpp ./API/src
mv ./API/src/player$i.cpp ./API/src/AI.cpp
cmake ./CMakeLists.txt && make >compile_log$i.txt 2>&1
mv ./capi $bind/capi$i # executable file
if [ $? -ne 0 ]; then
flag=0
fi
mv ./compile_log$i.txt $bind/compile_log$i.txt
let "i++"
done
# HTML request to update status.
if [ $flag -eq 1 ]; then
curl $URL -X PUT -H "Content-Type: application/json" -H "Authorization: Bearer $TOKEN" -d '{"compile_status":"compiled"}' > ../mnt/curl_log.txt
else
curl $URL -X PUT -H "Content-Type: application/json" -H "Authorization: Bearer $TOKEN" -d '{"compile_status":"failed"}' > ../mnt/curl_log.txt
fi

Loading…
Cancel
Save