-
Notifications
You must be signed in to change notification settings - Fork 630
142 lines (125 loc) · 5.65 KB
/
package_and_push.yml
File metadata and controls
142 lines (125 loc) · 5.65 KB
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
name: package-and-push
run-name: 构建离线安装包 ${{ github.event.inputs.dockerImageTag }}
on:
workflow_dispatch:
inputs:
target_os:
description: 'Select OS to run on'
required: false
default: '["ubuntu-latest","ubuntu-24.04-arm"]'
type: choice
options:
- '["ubuntu-latest"]'
- '["ubuntu-24.04-arm"]'
- '["ubuntu-latest","ubuntu-24.04-arm"]'
dockerImageTag:
description: 'Image Tag'
default: 'v0.9.5'
required: true
packageEE:
description: '是否打包企业版'
default: false
required: true
type: boolean
jobs:
package-and-push-to-aliyun-oss:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: ${{ fromJSON(inputs.target_os) }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ github.ref_name }}
- name: Install ossutil
run: |
sudo -v ; curl https://gosspublic.alicdn.com/ossutil/install.sh | sudo bash
- name: Prepare package files
env:
TAG_NAME: ${{ github.event.inputs.dockerImageTag }}
DOCKER_DOWNLOAD_SERVER: ${{ secrets.DOCKER_DOWNLOAD_SERVER }}
ALIYUN_REGISTRY_HOST: ${{ secrets.ALIYUN_REGISTRY_HOST }}
ALIYUN_OSS_BUCKET: ${{ secrets.ALIYUN_OSS_BUCKET }}
ALIYUN_OSS_BUCKET_ENDPOINT: ${{ secrets.ALIYUN_OSS_BUCKET_ENDPOINT }}
ALIYUN_OSS_ACCESS_KEY: ${{ secrets.ALIYUN_OSS_ACCESS_KEY }}
ALIYUN_OSS_ACCESS_SECRET: ${{ secrets.ALIYUN_OSS_ACCESS_SECRET }}
PACKAGE_EE: ${{ github.event.inputs.packageEE }}
run: |
platform=""
ARCH="x86_64"
OS_type="$(uname -m)"
case "$OS_type" in
x86_64|amd64)
ARCH='x86_64'
platform=''
;;
aarch64|arm64)
ARCH='aarch64'
platform='-arm64'
;;
*)
echo 'OS type not supported'
exit 2
;;
esac
if [[ $ARCH == 'aarch64' ]] && [[ ${PACKAGE_EE} != 'true' ]]; then
echo 'No need to pack'
exit 2
fi
DOCKER_IMAGE=${ALIYUN_REGISTRY_HOST}/dataease/sqlbot
cd installer
echo ${TAG_NAME} > ./sqlbot/templates/version
sed -i -e "s/SQLBOT_TAG/${TAG_NAME}/g" sqlbot/docker-compose.yml
mkdir images
for image in $(grep "image: " sqlbot/docker*.yml | awk -F 'image:' '{print $2}'); do
image_path=$(eval echo $image)
image_name=$(echo ${image_path##*/})
docker pull $image_path
docker save $image_path | gzip > images/$image_name.tar.gz
done
DOCKER_VERSION="docker-27.2.0"
DOCKER_COMPOSE_VERSION="v2.29.2"
wget ${DOCKER_DOWNLOAD_SERVER}/download/${ARCH}/${DOCKER_VERSION}.tgz
wget ${DOCKER_DOWNLOAD_SERVER}/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-linux-${ARCH} && mv docker-compose-linux-${ARCH} docker-compose && chmod +x docker-compose
tar -zxvf ${DOCKER_VERSION}.tgz
rm -rf ${DOCKER_VERSION}.tgz
mv docker bin && mkdir docker && mv bin docker/
mv docker-compose docker/bin
wget https://resource-fit2cloud-com.oss-cn-hangzhou.aliyuncs.com/docker/docker.service
mkdir docker/service && mv docker.service docker/service/
if [[ $ARCH == 'x86_64' ]]; then
#打包离线包
package_offline="sqlbot-offline-installer-${TAG_NAME}${platform}-ce.tar.gz"
touch $package_offline
tar --transform "s/^\./sqlbot-offline-installer-${TAG_NAME}${platform}-ce/" \
--exclude $package_offline \
--exclude .git \
-czvf $package_offline .
#打包在线包
package_online="sqlbot-online-installer-${TAG_NAME}${platform}-ce.tar.gz"
touch $package_online
tar --transform "s/^\./sqlbot-online-installer-${TAG_NAME}${platform}-ce/" \
--exclude $package_online \
--exclude $package_offline \
--exclude .git \
--exclude images \
--exclude docker \
-czvf $package_online .
fi
if [[ ${PACKAGE_EE} == 'true' ]]; then
package_offline_ee="sqlbot-offline-installer-${TAG_NAME}${platform}-ee.tar.gz"
touch $package_offline_ee
tar --transform "s/^\./sqlbot-offline-installer-${TAG_NAME}${platform}-ee/" \
--exclude $package_online \
--exclude $package_offline \
--exclude $package_offline_ee \
--exclude .git \
-czvf $package_offline_ee .
ossutil cp -rf ${package_offline_ee} oss://$ALIYUN_OSS_BUCKET/sqlbot/${package_offline_ee} --access-key-id=$ALIYUN_OSS_ACCESS_KEY --access-key-secret=$ALIYUN_OSS_ACCESS_SECRET --endpoint=${ALIYUN_OSS_BUCKET_ENDPOINT}
fi
if [[ $ARCH == 'x86_64' ]]; then
#Sync files to OSS
ossutil cp -rf ${package_offline} oss://$ALIYUN_OSS_BUCKET/sqlbot/${package_offline} --access-key-id=$ALIYUN_OSS_ACCESS_KEY --access-key-secret=$ALIYUN_OSS_ACCESS_SECRET --endpoint=${ALIYUN_OSS_BUCKET_ENDPOINT}
ossutil cp -rf ${package_online} oss://$ALIYUN_OSS_BUCKET/sqlbot/${package_online} --access-key-id=$ALIYUN_OSS_ACCESS_KEY --access-key-secret=$ALIYUN_OSS_ACCESS_SECRET --endpoint=${ALIYUN_OSS_BUCKET_ENDPOINT}
fi