Skip to content

Commit 6c387ee

Browse files
committed
fix
1 parent d60f7e9 commit 6c387ee

File tree

4 files changed

+331
-38
lines changed

4 files changed

+331
-38
lines changed

.github/workflows/docker_image.yml

Lines changed: 4 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -7,41 +7,7 @@ on:
77

88
jobs:
99

10-
build:
11-
12-
runs-on: ubuntu-latest
13-
14-
steps:
15-
- uses: actions/checkout@v3
16-
- name: Create vars
17-
id: vars
18-
run: |
19-
export github_tag=${{ github.ref_name }}
20-
export is_tag_create=false
21-
22-
export rx_tag='^refs\/tags\/.*'
23-
export rx_version_tag='^v([0-9]+\.){0,2}(\*|[0-9]+)(-rc[0-9]*){0,1}$'
24-
if [[ "${{github.ref}}" =~ $rx_tag ]]; then
25-
export is_tag_create=true
26-
fi
27-
28-
echo "::set-output name=github_tag::$github_tag"
29-
echo "::set-output name=is_tag_create::$is_tag_create"
30-
31-
- name: Show environment
32-
run: |
33-
echo is_tag_create = ${{ steps.vars.outputs.is_tag_create }}
34-
echo github_tag = ${{ steps.vars.outputs.github_tag }}
35-
36-
- name: Build the Docker image
37-
if: ${{ steps.vars.outputs.is_tag_create == 'true' }}
38-
run: |
39-
make docker-buildenv
40-
make docker-runtime
41-
docker build . --file dockerfile --tag tom128/venus:latest
42-
docker tag tom128/venus:latest tom128/venus:${{ steps.vars.outputs.github_tag }}
43-
docker login --username=tom128 --password ${{ secrets.DOCKER_PASSWORD }}
44-
docker push tom128/venus:${{ steps.vars.outputs.github_tag }}
45-
docker push tom128/venus:latest
46-
docker push tom128/venus-runtime:latest
47-
docker push tom128/venus-buildenv:latest
10+
build_docker_image:
11+
uses: ./docker_image_reuse.yml
12+
with:
13+
repo_name: ${GITHUB_REPOSITORY##*/}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
name: Docker Image CI Reuse
2+
3+
on:
4+
5+
workflow_call:
6+
inputs:
7+
repo_name:
8+
required: true
9+
type: string
10+
11+
jobs:
12+
13+
build_docker_image:
14+
15+
runs-on: ubuntu-latest
16+
17+
steps:
18+
- uses: actions/checkout@v3
19+
- name: Create vars
20+
id: vars
21+
run: |
22+
export github_tag=${{ github.ref_name }}
23+
export is_tag_create=false
24+
25+
export rx_tag='^refs\/tags\/.*'
26+
export rx_version_tag='^v([0-9]+\.){0,2}(\*|[0-9]+)(-rc[0-9]*){0,1}$'
27+
if [[ "${{github.ref}}" =~ $rx_tag ]]; then
28+
export is_tag_create=true
29+
fi
30+
31+
echo "::set-output name=github_tag::$github_tag"
32+
echo "::set-output name=is_tag_create::$is_tag_create"
33+
34+
- name: Show environment
35+
run: |
36+
echo is_tag_create = ${{ steps.vars.outputs.is_tag_create }}
37+
echo github_tag = ${{ steps.vars.outputs.github_tag }}
38+
echo repo_name = ${{ inputs.repo_name }}
39+
40+
- name: Build the Docker image
41+
if: ${{ steps.vars.outputs.is_tag_create == 'true' }}
42+
run: |
43+
if [[ "${{inputs.repo_name}}" = "venus" ]]; then
44+
make docker-buildenv
45+
make docker-runtime
46+
fi
47+
docker build . --file dockerfile --tag tom128/${{inputs.repo_name}}:latest
48+
docker tag tom128/${{inputs.repo_name}}:latest tom128/${{inputs.repo_name}}:${{ steps.vars.outputs.github_tag }}
49+
docker login --username=tom128 --password ${{ secrets.DOCKER_PASSWORD }}
50+
docker push tom128/${{inputs.repo_name}}:${{ steps.vars.outputs.github_tag }}
51+
docker push tom128/${{inputs.repo_name}}:latest
52+
docker push tom128/${{inputs.repo_name}}-runtime:latest
53+
docker push tom128/${{inputs.repo_name}}-buildenv:latest

.github/workflows/tag_workflow.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
on:
2+
push:
3+
branches: ['prep/**', 'release/**', 'test/**', master]
4+
tags: ['**']
5+
6+
jobs:
7+
build:
8+
uses: ./tag_workflow_reuse.yml
9+
with:
10+
repo_name: ${GITHUB_REPOSITORY##*/}
Lines changed: 264 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,264 @@
1+
name: build for test/release
2+
3+
on:
4+
5+
workflow_call:
6+
inputs:
7+
repo_name:
8+
required: true
9+
type: string
10+
11+
jobs:
12+
13+
push_eye:
14+
runs-on: ubuntu-20.04
15+
needs: jobs2
16+
steps:
17+
- name: install deps
18+
run: |
19+
sudo apt-get update
20+
sudo apt-get -o Acquire::Retries=3 install make ncftp git curl wget -y && sudo apt upgrade -y
21+
- name: push god-eye
22+
run: |
23+
export link=${{steps.vars.outputs.job_url}}
24+
if [[ "${{ steps.release.outcome }}" == "success" ]]; then
25+
export link=$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/releases/download/${{steps.vars.outputs.github_tag}}/${{steps.vars.outputs.artifact_name}}
26+
elif [[ "${{ steps.uploadftp.outcome }}" == "success" ]]; then
27+
export link=ftp://${{secrets.FTP_HOST}}/${{steps.vars.outputs.repo_name}}/${{steps.vars.outputs.artifact_name}}
28+
elif [[ "${{ steps.cposs.outcome }}" == "success" ]]; then
29+
export link=${{steps.cposs.outputs.oss_signed_url}}
30+
fi
31+
echo download target file : $link
32+
set +e
33+
curl --max-time 20 -X PUT ${{secrets.GODEYE_URL}}/${{steps.vars.outputs.pub_method}} \
34+
--data-urlencode "type=1" \
35+
--data-urlencode "commitId=${{steps.vars.outputs.commit}}" \
36+
--data-urlencode "branch=${{steps.vars.outputs.branch}}" \
37+
--data-urlencode "programName=${{steps.vars.outputs.repo_name}}" \
38+
--data-urlencode "link=$link" \
39+
--data-urlencode "description=message:${{steps.vars.outputs.git_message}}, branch:${{steps.vars.outputs.branch}}, commit:${{steps.vars.outputs.short}}, tag:${{steps.vars.outputs.github_tag}}" \
40+
--data-urlencode "version=${{steps.vars.outputs.short}}"
41+
set -e
42+
43+
jobs2:
44+
runs-on: ubuntu-20.04
45+
needs: upload_ftp
46+
steps:
47+
- name: show vars
48+
run: echo "outcome ${{needs.upload_ftp.outputs.outcome}}"
49+
50+
upload_ftp:
51+
runs-on: ubuntu-20.04
52+
needs: build
53+
outputs:
54+
outcome: ${{ steps.uploadftp.outcome }}
55+
steps:
56+
- name: show vars
57+
run: |
58+
echo "repo_name ${{needs.build.outputs.artifact_name}}"
59+
echo "artifact_name ${{needs.build.outputs.artifact_name}}"
60+
echo "ftp_exists ${{needs.build.outputs.ftp_exists}}"
61+
- name: install deps
62+
run: |
63+
sudo apt-get update
64+
sudo apt-get -o Acquire::Retries=3 install make ncftp git curl wget -y && sudo apt upgrade -y
65+
- name: Download a Build Artifact
66+
uses: actions/[email protected]
67+
with:
68+
# Artifact name
69+
name: ${{needs.build.outputs.artifact_name}}
70+
# Destination path
71+
path: ./
72+
73+
- name: upload ftp
74+
id: uploadftp
75+
if: ${{ needs.build.outputs.ftp_exists == '1' }}
76+
run: |
77+
ls
78+
ls /home/runner/work/venus/venus
79+
pwd
80+
ncftpput -m -R -v -u ${{secrets.FTP_USER}} -p ${{secrets.FTP_PWD}} ${{secrets.FTP_HOST}} ./${{needs.build.outputs.repo_name}} /home/runner/work/venus/venus/${{needs.build.outputs.artifact_name}}
81+
echo "upload file: ${{needs.build.outputs.artifact_name}} successfully!"
82+
83+
build:
84+
runs-on: ubuntu-20.04
85+
outputs:
86+
ftp_exists: ${{ steps.vars.outputs.ftp_exists }}
87+
pub_method: ${{ steps.vars.outputs.pub_method }}
88+
repo_name: ${{ steps.vars.outputs.repo_name }}
89+
artifact_name: ${{ steps.vars.outputs.artifact_name }}
90+
bin_path: ${{steps.uploadftp.outputs.bin_path}}
91+
steps:
92+
- uses: actions/checkout@v2
93+
with:
94+
submodules: 'true'
95+
fetch-depth: '0'
96+
97+
- name: vars
98+
id: vars
99+
run: |
100+
export commit=$(git rev-parse HEAD)
101+
export short=$(git rev-parse --short HEAD)
102+
export github_tag=${{github.ref_name}}
103+
export tag=$github_tag
104+
export branch=$github_tag
105+
export git_message=$(git rev-list --format=%s --max-count=1 HEAD | tail +2)
106+
export repo_name=${{inputs.repo_name}}
107+
export artifact_name=${repo_name}_$(git rev-parse --short HEAD).tar.gz
108+
export pub_method=pushTest
109+
export job_url=$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID
110+
export oss_exists=0
111+
export ftp_exists=0
112+
export is_tag_create=false
113+
114+
export rx_tag='^refs\/tags\/.*'
115+
export rx_version_tag='^v([0-9]+\.){0,2}(\*|[0-9]+)(-rc[0-9]*){0,1}$'
116+
if [[ "${{github.ref}}" =~ $rx_tag ]]; then
117+
export is_tag_create=true
118+
if [[ "${{github.ref_name}}" =~ $rx_version_tag ]]; then
119+
export pub_method=pushRelease
120+
fi
121+
fi
122+
123+
if [[ "${{secrets.OSS_KEY_ID}}" != "" && \
124+
"${{secrets.OSS_KEY_SECRET}}" != "" && \
125+
"${{secrets.OSS_ENDPOINT}}" != "" && \
126+
"${{secrets.OSS_BUCKET}}" != "" ]]; then
127+
export oss_exists=1
128+
fi
129+
if [[ "${{secrets.FTP_HOST}}" != "" ]]; then
130+
export ftp_exists=1
131+
fi
132+
133+
echo "::set-output name=commit::$commit"
134+
echo "::set-output name=short::$short"
135+
echo "::set-output name=github_tag::$github_tag"
136+
echo "::set-output name=git_message::$git_message"
137+
echo "::set-output name=repo_name::$repo_name"
138+
echo "::set-output name=branch::$branch"
139+
echo "::set-output name=tag::$tag"
140+
echo "::set-output name=artifact_name::$artifact_name"
141+
echo "::set-output name=job_url::$job_url"
142+
echo "::set-output name=pub_method::$pub_method"
143+
echo "::set-output name=is_tag_create::$is_tag_create"
144+
echo "::set-output name=oss_exists::$oss_exists"
145+
echo "::set-output name=ftp_exists::$ftp_exists"
146+
147+
- name: show environment
148+
run: |
149+
echo event = ${{github.event_name}}
150+
echo github_repository: $GITHUB_REPOSITORY
151+
echo vars.commit = ${{steps.vars.outputs.commit}}
152+
echo vars.short_commit = ${{steps.vars.outputs.short}}
153+
echo vars.github_tag = ${{steps.vars.outputs.github_tag}}
154+
echo vars.git_message = "${{steps.vars.outputs.git_message}}"
155+
echo vars.repo_name = ${{steps.vars.outputs.repo_name}}
156+
echo vars.branch = ${{steps.vars.outputs.branch}}
157+
echo vars.tag = ${{steps.vars.outputs.tag}}
158+
echo vars.artifact_name = ${{steps.vars.outputs.artifact_name}}
159+
echo vars.pub_method = ${{steps.vars.outputs.pub_method}}
160+
echo secrets.godeye_url = ${{ secrets.GODEYE_URL }}
161+
echo vars.oss_exists = ${{steps.vars.outputs.oss_exists}}
162+
echo vars.ftp_exists = ${{steps.vars.outputs.ftp_exists}}
163+
echo vars.is_tag_create = ${{steps.vars.outputs.is_tag_create}}
164+
echo github.ref = ${{github.ref}}
165+
echo github.ref_name = ${{github.ref_name}}
166+
echo vars.job_url = ${{steps.vars.outputs.job_url}}
167+
echo ftp_url = ftp://${{secrets.FTP_HOST}}/${{steps.vars.outputs.repo_name}}/${{steps.vars.outputs.artifact_name}}
168+
- name: Set up Go
169+
uses: actions/setup-go@v2
170+
with:
171+
go-version: 1.17
172+
- name: install deps
173+
run: |
174+
sudo apt-get update
175+
sudo apt-get -o Acquire::Retries=3 install make ncftp mesa-opencl-icd ocl-icd-opencl-dev gcc git bzr jq pkg-config curl clang build-essential hwloc libhwloc-dev wget -y && sudo apt upgrade -y
176+
177+
- name: Build
178+
run: |
179+
go clean --modcache && make deps && make
180+
mkdir ./release && mv ./venus ./release
181+
pwd
182+
183+
- name: Zip Release
184+
uses: TheDoctor0/[email protected]
185+
with:
186+
filename: ${{steps.vars.outputs.artifact_name}}
187+
path: ./release
188+
type: tar
189+
190+
- name: upload artifacts
191+
uses: actions/upload-artifact@v2
192+
with:
193+
name: ${{steps.vars.outputs.artifact_name}}
194+
path: ./${{steps.vars.outputs.artifact_name}}
195+
if-no-files-found: error
196+
- name: Download a Build Artifact
197+
uses: actions/[email protected]
198+
with:
199+
# Artifact name
200+
name: ${{steps.vars.outputs.artifact_name}}
201+
# Destination path
202+
path: ./
203+
204+
- name: release
205+
id: release
206+
uses: ncipollo/release-action@v1
207+
if: ${{ steps.vars.outputs.pub_method=='pushRelease' }}
208+
continue-on-error: true
209+
with:
210+
artifacts: ${{steps.vars.outputs.artifact_name}}
211+
tag: ${{ steps.vars.outputs.github_tag }}
212+
commit: ${{ steps.vars.outputs.commit }}
213+
token: ${{ secrets.GITHUB_TOKEN }}
214+
215+
- name: upload ftp
216+
id: uploadftp
217+
if: ${{ steps.vars.outputs.ftp_exists == '1' }}
218+
continue-on-error: true
219+
run: |
220+
ls
221+
ls ./release
222+
pwd
223+
echo "upload file: ${{steps.vars.outputs.artifact_name}} successfully!"
224+
225+
- name: setup oss
226+
id: setuposs
227+
if: ${{ steps.vars.outputs.oss_exists == '1' && steps.uploadftp.outcome != 'success' && steps.vars.outputs.pub_method == 'pushTest' }}
228+
continue-on-error: true
229+
uses: manyuanrong/setup-ossutil@master
230+
with:
231+
endpoint: ${{secrets.OSS_ENDPOINT}}
232+
access-key-id: ${{ secrets.OSS_KEY_ID }}
233+
access-key-secret: ${{ secrets.OSS_KEY_SECRET }}
234+
235+
- name: cp files to aliyun
236+
id: cposs
237+
if: ${{ steps.setuposs.outcome == 'success' }}
238+
continue-on-error: true
239+
run: |
240+
ossutil cp ./${{steps.vars.outputs.artifact_name}} ${{secrets.OSS_BUCKET}}
241+
export signed_url=`ossutil sign ${{secrets.OSS_BUCKET}}/${{steps.vars.outputs.artifact_name}} --timeout 31104000 | sed -n 1p`
242+
echo '::set-output name=oss_signed_url::$(signed_url)'
243+
244+
- name: push god-eye
245+
run: |
246+
export link=${{steps.vars.outputs.job_url}}
247+
if [[ "${{ steps.release.outcome }}" == "success" ]]; then
248+
export link=$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/releases/download/${{steps.vars.outputs.github_tag}}/${{steps.vars.outputs.artifact_name}}
249+
elif [[ "${{ steps.uploadftp.outcome }}" == "success" ]]; then
250+
export link=ftp://${{secrets.FTP_HOST}}/${{steps.vars.outputs.repo_name}}/${{steps.vars.outputs.artifact_name}}
251+
elif [[ "${{ steps.cposs.outcome }}" == "success" ]]; then
252+
export link=${{steps.cposs.outputs.oss_signed_url}}
253+
fi
254+
echo download target file : $link
255+
set +e
256+
curl --max-time 20 -X PUT ${{secrets.GODEYE_URL}}/${{steps.vars.outputs.pub_method}} \
257+
--data-urlencode "type=1" \
258+
--data-urlencode "commitId=${{steps.vars.outputs.commit}}" \
259+
--data-urlencode "branch=${{steps.vars.outputs.branch}}" \
260+
--data-urlencode "programName=${{steps.vars.outputs.repo_name}}" \
261+
--data-urlencode "link=$link" \
262+
--data-urlencode "description=message:${{steps.vars.outputs.git_message}}, branch:${{steps.vars.outputs.branch}}, commit:${{steps.vars.outputs.short}}, tag:${{steps.vars.outputs.github_tag}}" \
263+
--data-urlencode "version=${{steps.vars.outputs.short}}"
264+
set -e

0 commit comments

Comments
 (0)