Skip to content

Commit 93dd736

Browse files
authored
feat: support build debian repo (#221)
1 parent 8780b3d commit 93dd736

File tree

3 files changed

+241
-55
lines changed

3 files changed

+241
-55
lines changed

.circleci/config.yml

Lines changed: 37 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,31 @@
11
# Use the latest 2.1 version of CircleCI pipeline process engine.
22
# See: https://circleci.com/docs/2.0/configuration-reference
33
version: 2.1
4-
4+
commands:
5+
description: publish deb package
6+
publish_package:
7+
steps:
8+
- run:
9+
name: backup dists to ci bucket
10+
command: |
11+
sudo -E ./utils/publish-deb.sh dists_backup
12+
- run:
13+
name: download pool dir to local
14+
command: |
15+
sudo -E ./utils/publish-deb.sh repo_clone
16+
- run:
17+
name: rebuild deb repo
18+
command: |
19+
sudo -E ./utils/publish-deb.sh repo_rebuild
20+
- run:
21+
name: upload repo
22+
command: |
23+
sudo -E ./utils/publish-deb.sh repo_upload
24+
- run:
25+
name: pulish repo
26+
command: |
27+
sudo -E ./utils/publish-deb.sh repo_publish
28+
sudo -E ./utils/publish-deb.sh repo_backup_remove
529
# Define a job to be invoked later in a workflow.
630
# See: https://circleci.com/docs/2.0/configuration-reference/#jobs
731
jobs:
@@ -118,6 +142,7 @@ jobs:
118142
environment:
119143
- VAR_DEB_WORKBENCH_DIR: /tmp/output
120144
- VAR_OS: debian
145+
- VAR_CODENAME: bullseye
121146
- VAR_OS_RELEASE: bullseye-slim
122147

123148
steps:
@@ -126,17 +151,14 @@ jobs:
126151
name: Init basic publish env
127152
command: |
128153
mkdir -p "${VAR_DEB_WORKBENCH_DIR}"
129-
wget https://github.com/tencentyun/coscli/archive/refs/tags/v0.11.0-beta.tar.gz
130-
tar -zxvf v0.11.0-beta.tar.gz
131-
cd coscli-0.11.0-beta && go build
132-
sudo mv coscli ../
133-
cat \<< EOF > "${HOME}/.cos.yaml"
134-
cos:
135-
base:
136-
secretid: ${TENCENT_COS_SECRETID}
137-
secretkey: ${TENCENT_COS_SECRETKEY}
138-
protocol: https
139-
EOF
154+
sudo apt-get update
155+
sudo apt install -y gpg ca-certificates
156+
RPM_GPG_PRIV_KEY=$(echo $RPM_GPG_PRIV_KEY_BASE64 | base64 -d)
157+
echo "${RPM_GPG_PRIV_KEY}" >> /tmp/deb-gpg-publish.private
158+
echo "${RPM_GPG_PASSPHRASE}" >> /tmp/deb-gpg-publish.passphrase
159+
./utils/publish-deb.sh init_cos_utils
160+
sudo -E ./utils/publish-deb.sh init_freight_utils
161+
sudo -E ./utils/publish-deb.sh init_gpg
140162
141163
- when:
142164
condition:
@@ -152,14 +174,7 @@ jobs:
152174
make package type=deb app=apisix openresty=apisix-base checkout=${APISIX_TAG_VERSION} version=${APISIX_TAG_VERSION} image_base=${VAR_OS} image_tag=${VAR_OS_RELEASE}
153175
mv ./output/apisix_${APISIX_TAG_VERSION}-0~${VAR_OS}${VAR_OS_RELEASE}_arm64.deb ${VAR_DEB_WORKBENCH_DIR}
154176
155-
- run:
156-
name: upload deb package
157-
command: |
158-
find "${VAR_DEB_WORKBENCH_DIR}" -type f -name "apisix_*.deb" \
159-
-exec echo "upload : {}" \; \
160-
-exec sh -c 'file=$(basename {}); \
161-
./coscli -e "${VAR_COS_ENDPOINT}" \
162-
cp --part-size 1000 {} "cos://${VAR_COS_BUCKET_REPO}/packages/arm64/debian/pool/main/a/apisix/${file}"' \;
177+
- publish_package
163178

164179
- when:
165180
condition:
@@ -172,14 +187,8 @@ jobs:
172187
echo "apisix-base version: $APISIX_BASE_TAG_VERSION"
173188
make package type=deb app=apisix-base checkout=${APISIX_BASE_TAG_VERSION} version=${APISIX_BASE_TAG_VERSION} image_base=${VAR_OS} image_tag=${VAR_OS_RELEASE}
174189
mv ./output/apisix-base_${APISIX_BASE_TAG_VERSION}-0~${VAR_OS}${VAR_OS_RELEASE}_arm64.deb ${VAR_DEB_WORKBENCH_DIR}
175-
- run:
176-
name: upload deb package
177-
command: |
178-
find "${VAR_DEB_WORKBENCH_DIR}" -type f -name "apisix-base*.deb" \
179-
-exec echo "upload : {}" \; \
180-
-exec sh -c 'file=$(basename {}); \
181-
./coscli -e "${VAR_COS_ENDPOINT}" \
182-
cp --part-size 1000 {} "cos://${VAR_COS_BUCKET_REPO}/packages/arm64/debian/pool/main/a/apisix-base/${file}"' \;
190+
191+
- publish_package
183192

184193
# Invoke jobs via workflows
185194
# See: https://circleci.com/docs/2.0/configuration-reference/#workflows

.github/workflows/publish-deb.yml

Lines changed: 39 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ jobs:
1313
VAR_COS_BUCKET_REPO: ${{ secrets.VAR_COS_BUCKET_REPO }}
1414
VAR_COS_ENDPOINT: ${{ secrets.VAR_COS_ENDPOINT }}
1515
VAR_DEB_WORKBENCH_DIR: /tmp/output
16+
VAR_OS: debian
17+
VAR_CODENAME: bullseye
18+
VAR_OS_RELEASE: bullseye-slim
1619

1720
steps:
1821
- name: Check out code
@@ -22,10 +25,9 @@ jobs:
2225

2326
- name: Init basic publish env
2427
run: |
28+
sudo apt-get update
29+
sudo apt install -y gpg ca-certificates
2530
mkdir -p "${VAR_DEB_WORKBENCH_DIR}"
26-
# init env var
27-
TAG_DATE=$(date +%Y%m%d)
28-
echo "TAG_DATE=${TAG_DATE}" >> "$GITHUB_ENV"
2931
3032
- name: Extract Tags name
3133
if: ${{ startsWith(github.ref, 'refs/tags/') }}
@@ -47,9 +49,8 @@ jobs:
4749
APISIX_TAG_VERSION: ${{ steps.tag_env.outputs.version}}
4850
run: |
4951
# build apisix
50-
make package type=deb app=apisix openresty=apisix-base checkout=${APISIX_TAG_VERSION} version=${APISIX_TAG_VERSION} image_base=debian image_tag=bullseye-slim
51-
mv ./output/apisix_${APISIX_TAG_VERSION}-0~debianbullseye-slim_amd64.deb ${VAR_DEB_WORKBENCH_DIR}
52-
echo "TARGET_APP=apisix" >> "$GITHUB_ENV"
52+
make package type=deb app=apisix openresty=apisix-base checkout=${APISIX_TAG_VERSION} version=${APISIX_TAG_VERSION} image_base=${VAR_OS} image_tag=${VAR_OS_RELEASE}
53+
mv ./output/apisix_${APISIX_TAG_VERSION}-0~${VAR_OS}${VAR_OS_RELEASE}_amd64.deb ${VAR_DEB_WORKBENCH_DIR}
5354
5455
- name: Build apisix-base deb Package
5556
if: ${{ startsWith(steps.tag_type.outputs.version, 'apisix-base/') }}
@@ -59,31 +60,52 @@ jobs:
5960
# build apisix-base
6061
echo ${{ steps.tag_env.outputs.version}}
6162
echo ${{ steps.tag_type.outputs.version}}
62-
make package type=deb app=apisix-base checkout=${APISIX_BASE_TAG_VERSION} version=${APISIX_BASE_TAG_VERSION} image_base=debian image_tag=bullseye-slim
63-
mv ./output/apisix-base_${APISIX_BASE_TAG_VERSION}-0~debianbullseye-slim_amd64.deb ${VAR_DEB_WORKBENCH_DIR}
64-
echo "TARGET_APP=apisix-base" >> "$GITHUB_ENV"
63+
make package type=deb app=apisix-base checkout=${APISIX_BASE_TAG_VERSION} version=${APISIX_BASE_TAG_VERSION} image_base=${VAR_OS} image_tag=${VAR_OS_RELEASE}
64+
mv ./output/apisix-base_${APISIX_BASE_TAG_VERSION}-0~${VAR_OS}${VAR_OS_RELEASE}_amd64.deb ${VAR_DEB_WORKBENCH_DIR}
6565
6666
- name: Upload apisix Artifact
6767
if: ${{ startsWith(steps.tag_type.outputs.version, 'apisix/') }}
6868
uses: actions/[email protected]
6969
with:
70-
name: "apisix_${{ steps.tag_env.outputs.version}}-0~debianbullseye-slim_amd64.deb"
71-
path: "${{ env.VAR_DEB_WORKBENCH_DIR }}/apisix_${{ steps.tag_env.outputs.version}}-0~debianbullseye-slim_amd64.deb"
70+
name: "apisix_${{ steps.tag_env.outputs.version}}-0~${{ VAR_OS }}${{ VAR_OS_RELEASE }}_amd64.deb"
71+
path: "${{ env.VAR_DEB_WORKBENCH_DIR }}/apisix_${{ steps.tag_env.outputs.version}}-0~${{ env.VAR_OS }}${{ env.VAR_OS_RELEASE }}_amd64.deb"
7272

7373
- name: Upload apisix-base Artifact
7474
if: ${{ startsWith(steps.tag_type.outputs.version, 'apisix-base/') }}
7575
uses: actions/[email protected]
7676
with:
77-
name: "apisix-base_${{ steps.tag_env.outputs.version}}-0~debianbullseye-slim_amd64.deb"
78-
path: "${{ env.VAR_DEB_WORKBENCH_DIR }}/apisix-base_${{ steps.tag_env.outputs.version}}-0~debianbullseye-slim_amd64.deb"
77+
name: "apisix-base_${{ steps.tag_env.outputs.version}}-0~${{ VAR_OS }}${{ VAR_OS_RELEASE }}_amd64.deb"
78+
path: "${{ env.VAR_DEB_WORKBENCH_DIR }}/apisix-base_${{ steps.tag_env.outputs.version}}-0~${{ env.VAR_OS }}${{ env.VAR_OS_RELEASE }}_amd64.deb"
7979

80-
- name: deb repo deps init
80+
- name: Init publish utils
8181
env:
82+
GPG_MAIL: ${{ secrets.GPG_MAIL }}
8283
TENCENT_COS_SECRETID: ${{ secrets.TENCENT_COS_SECRETID }}
8384
TENCENT_COS_SECRETKEY: ${{ secrets.TENCENT_COS_SECRETKEY }}
8485
run: |
85-
sudo -E ./utils/publish-deb.sh init_cos_utils
86+
echo "${{ secrets.RPM_GPG_PRIV_KEY }}" >> /tmp/deb-gpg-publish.private
87+
echo "${{ secrets.RPM_GPG_PASSPHRASE }}" >> /tmp/deb-gpg-publish.passphrase
88+
./utils/publish-deb.sh init_cos_utils
89+
sudo -E ./utils/publish-deb.sh init_freight_utils
90+
sudo -E ./utils/publish-deb.sh init_gpg
8691
87-
- name: deb upload
88-
run: |
92+
- name: backup dists to ci bucket
93+
run:
94+
sudo -E ./utils/publish-deb.sh dists_backup
95+
96+
- name: download pool dir to local
97+
run:
98+
sudo -E ./utils/publish-deb.sh repo_clone
99+
100+
- name: rebuild deb repo
101+
run:
102+
sudo -E ./utils/publish-deb.sh repo_rebuild
103+
104+
- name: upload repo
105+
run:
89106
sudo -E ./utils/publish-deb.sh repo_upload
107+
108+
- name: pulish repo
109+
run:
110+
sudo -E ./utils/publish-deb.sh repo_publish
111+
sudo -E ./utils/publish-deb.sh repo_backup_remove

0 commit comments

Comments
 (0)