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+ 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+ 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