8
8
branches :
9
9
- master
10
10
- develop
11
+ - ' feature/**'
11
12
12
13
jobs :
13
14
build :
@@ -19,21 +20,25 @@ jobs:
19
20
- fedora-31
20
21
- fedora-32
21
22
- fedora-33
23
+ - fedora-34
22
24
- debian-stretch
23
25
- debian-buster
26
+ - debian-bullseye
24
27
- ubuntu-18.04
25
28
- ubuntu-20.04
26
29
- ubuntu-20.10
30
+ - ubuntu-21.04
27
31
- opensuse-15.0
28
32
- opensuse-15.1
29
33
- opensuse-15.2
34
+ - opensuse-15.3
30
35
- centos-8
31
36
os :
32
37
- ubuntu-latest
33
38
34
39
runs-on : ${{ matrix.os }}
35
40
env :
36
- DOCKER_IMG : docker.pkg.github.com /jahnf/projecteur/projecteur
41
+ DOCKER_IMG : ghcr.io /jahnf/projecteur/projecteur
37
42
DOCKER_TAG : ${{ matrix.docker_tag }}
38
43
MAKEFLAGS : -j2
39
44
CLOUDSMITH_USER : jahnf
55
60
echo Detected branch: ${BRANCH}
56
61
echo "BRANCH=${BRANCH}" >> $GITHUB_ENV
57
62
58
- - name : Login to github docker registry
59
- run : echo ${DOCKER_TOKEN} | docker login docker.pkg.github.com -u ${{ secrets.DOCKER_USER }} --password-stdin
60
- env :
61
- DOCKER_TOKEN : ${{ secrets.GITHUB_TOKEN }}
62
-
63
63
- name : Pull ${{ matrix.docker_tag }} docker image
64
64
run : |
65
65
docker pull ${DOCKER_IMG}:${{ matrix.docker_tag }}
66
- docker logout docker.pkg.github.com
67
66
- name : docker create build container
68
67
run : |
69
68
docker run --name build --env MAKEFLAGS=${MAKEFLAGS} \
@@ -106,15 +105,27 @@ jobs:
106
105
dist_pkg_artifact=`ls -1 dist-pkg/* | head -n 1`
107
106
echo "dist_pkg_artifact=${dist_pkg_artifact}" >> $GITHUB_ENV
108
107
108
+ - if : startsWith(matrix.docker_tag, 'archlinux')
109
+ run : echo "${{ env.BRANCH }}" >> version-branch
110
+
109
111
# ===================================================================================
110
112
# ---------- Upload artifacts to github ----------
111
113
- name : Upload source-pkg artifact to github
112
114
if : startsWith(matrix.docker_tag, 'archlinux')
113
- uses : actions/upload-artifact@v1
115
+ uses : actions/upload-artifact@v2
114
116
with :
115
117
name : source-package
116
118
path : ${{ env.src_pkg_artifact }}
117
119
120
+ - name : Upload version-info to github
121
+ if : startsWith(matrix.docker_tag, 'archlinux')
122
+ uses : actions/upload-artifact@v2
123
+ with :
124
+ name : version-info
125
+ path : |
126
+ ./version-string
127
+ ./version-branch
128
+
118
129
- name : Upload binary package artifact to github
119
130
uses : actions/upload-artifact@v2
120
131
with :
@@ -128,25 +139,23 @@ jobs:
128
139
echo "upload_bin_pkg=${{ false }}" >> $GITHUB_ENV
129
140
echo "upload_src_pkg=${{ false }}" >> $GITHUB_ENV
130
141
echo "cloudsmith_upload_repo=projecteur-develop" >> $GITHUB_ENV
131
- echo "bintray_upload_repo=projecteur-develop" >> $GITHUB_ENV
132
142
echo "REPO_UPLOAD=${{ false }}" >> $GITHUB_ENV
133
143
134
144
- name : Check for binary-pkg upload conditions
135
- if : env.BRANCH == 'develop' || env.BRANCH == 'master'
145
+ if : ${{ ( env.BRANCH == 'develop' || env.BRANCH == 'master') && github.repository == 'jahnf/Projecteur' }}
136
146
run : |
137
147
echo "upload_bin_pkg=${{ true }}" >> $GITHUB_ENV
138
148
pip install --upgrade wheel
139
149
pip install --upgrade cloudsmith-cli
140
150
141
151
- name : Check for source-pkg upload conditions
142
- if : env.upload_bin_pkg == 'true' && startsWith(matrix.docker_tag, 'archlinux')
152
+ if : ${{ env.upload_bin_pkg == 'true' && startsWith(matrix.docker_tag, 'archlinux') && github.repository == 'jahnf/Projecteur' }}
143
153
run : |
144
154
echo "upload_src_pkg=${{ true }}" >> $GITHUB_ENV
145
155
146
156
- if : env.BRANCH == 'master'
147
157
run : |
148
158
echo "cloudsmith_upload_repo=projecteur-stable" >> $GITHUB_ENV
149
- echo "bintray_upload_repo=projecteur-master" >> $GITHUB_ENV
150
159
151
160
# ===================================================================================
152
161
# ---------- Upload artifacts to cloudsmith ----------
@@ -161,7 +170,7 @@ jobs:
161
170
--summary "${CLOUDSMITH_SUMMARY}" --description "${CLOUDSMITH_DESC}" ${{ env.dist_pkg_artifact }}
162
171
163
172
- name : Upload raw source-pkg to cloudsmith
164
- if : env.upload_src_pkg == 'true'
173
+ if : ${{ env.upload_src_pkg == 'true' && github.repository == 'jahnf/Projecteur' }}
165
174
env :
166
175
CLOUDSMITH_API_KEY : ${{ secrets.CLOUDSMITH_API_KEY }}
167
176
CLOUDSMITH_REPO : ${{ env.cloudsmith_upload_repo }}
@@ -177,10 +186,12 @@ jobs:
177
186
export PKG_TYPE="${filename##*.}"
178
187
declare -A distromap=( ["debian-stretch"]="debian/stretch" ["debian-buster"]="debian/buster" \
179
188
["debian-bullseye"]="debian/bullseye" ["ubuntu-18.04"]="ubuntu/bionic" \
180
- ["ubuntu-20.04"]="ubuntu/focal" ["opensuse-15.1"]="opensuse/15.1" \
181
- ["opensuse-15.2"]="opensuse/15.2" ["centos-8"]="el/8" \
189
+ ["ubuntu-20.04"]="ubuntu/focal" ["ubuntu-21.04"]="ubuntu/hirsute" \
190
+ ["opensuse-15.1"]="opensuse/15.1" ["opensuse-15.2"]="opensuse/15.2" \
191
+ ["opensuse-15.3"]="opensuse/15.3" ["centos-8"]="el/8" \
182
192
["fedora-30"]="fedora/30" ["fedora-31"]="fedora/31" \
183
- ["fedora-32"]="fedora/32" ["fedora-33"]="fedora/33" )
193
+ ["fedora-32"]="fedora/32" ["fedora-33"]="fedora/33" \
194
+ ["fedora-34"]="fedora/34" )
184
195
export DISTRO=${distromap[${{ matrix.docker_tag }}]}
185
196
echo PKGTYPE=$PKG_TYPE
186
197
echo DISTRO=$DISTRO
@@ -200,35 +211,60 @@ jobs:
200
211
cloudsmith push ${PKG_TYPE} -W -k ${CLOUDSMITH_API_KEY} --republish \
201
212
${CLOUDSMITH_USER}/${CLOUDSMITH_REPO}/${DISTRO} ${{ env.dist_pkg_artifact }}
202
213
203
- # ===================================================================================
204
- # ---------- Upload artifacts to bintray ----------
205
- - name : Upload source-pkg to Bintray
206
- if : env.upload_src_pkg == 'true'
207
- uses : bpicode/github-action-upload-bintray@master
214
+ # =====================================================================================
215
+ # ---------- Upload artifacts to projecteur server ------------
216
+ projecteur-bin-upload :
217
+ if : ${{ github.repository == 'jahnf/Projecteur' }}
218
+ needs : build
219
+ runs-on : ubuntu-latest
220
+
221
+ steps :
222
+ - name : Get version-info
223
+ uses : actions/download-artifact@v2
208
224
with :
209
- file : ${{ env.src_pkg_artifact }}
210
- api_user : jahnf
211
- api_key : ${{ secrets.BINTRAY_API_KEY }}
212
- repository_user : jahnf
213
- repository : Projecteur
214
- package : ${{ env.bintray_upload_repo }}
215
- version : ${{ env.projecteur_version }}
216
- upload_path : packages/branches/${{ env.BRANCH }}/${{ env.projecteur_version }}
217
- calculate_metadata : false
218
- publish : 1
219
-
220
- - name : Upload binary package to Bintray
221
- if : env.upload_bin_pkg == 'true'
222
- uses : bpicode/github-action-upload-bintray@master
225
+ name : version-info
226
+
227
+ - name : Extract version info
228
+ run : |
229
+ BRANCH=`cat version-branch`
230
+ echo "BRANCH=${BRANCH}" >> $GITHUB_ENV
231
+ VERSION=`cat version-string`
232
+ echo "VERSION=${VERSION}" >> $GITHUB_ENV
233
+ DO_UPLOAD=$(( [ "master" = "$BRANCH" ] || [ "develop" = "$BRANCH" ] ) && echo true || echo false)
234
+ echo "DO_UPLOAD=${DO_UPLOAD}" >> $GITHUB_ENV
235
+
236
+ - uses : actions/download-artifact@v2
237
+ if : env.DO_UPLOAD == 'true'
223
238
with :
224
- file : ${{ env.dist_pkg_artifact }}
225
- api_user : jahnf
226
- api_key : ${{ secrets.BINTRAY_API_KEY }}
227
- repository_user : jahnf
228
- repository : Projecteur
229
- package : ${{ env.bintray_upload_repo }}
230
- version : ${{ env.projecteur_version }}
231
- upload_path : packages/branches/${{ env.BRANCH }}/${{ env.projecteur_version }}
232
- calculate_metadata : false
233
- publish : 1
239
+ path : artifacts
234
240
241
+ - name : Create upload directory
242
+ if : env.DO_UPLOAD == 'true'
243
+ run : |
244
+ BRANCHDIR=${{ env.BRANCH }}
245
+ [ "master" = "$BRANCHDIR" ] && BRANCHDIR=stable
246
+ VERSION=${{ env.VERSION }}
247
+ mkdir -p upload/$BRANCHDIR/$VERSION
248
+ find ./artifacts -iname "projecteur*" -exec mv -t upload/$BRANCHDIR/$VERSION {} +
249
+ BRANCHNAME=${BRANCHDIR/\//_}
250
+ BRANCH_FILENAME=${BRANCHNAME}-latest.json
251
+ echo '{ "version": "${{ env.VERSION}}" }' >> upload/$BRANCH_FILENAME
252
+ echo "BRANCHNAME=${BRANCHNAME}" >> $GITHUB_ENV
253
+ find . -iname "projecteur*"
254
+ cd upload/$BRANCHDIR/$VERSION
255
+ sha1sum * > sha1sums.txt
256
+
257
+ - name : 📂 Upload files
258
+ if : env.DO_UPLOAD == 'true'
259
+ run : |
260
+ cd upload && sudo apt-get install lftp --no-install-recommends
261
+ lftp ${{ secrets.PROJECTEUR_UPLOAD_HOSTNAME }} \
262
+ -u "${{ secrets.PROJECTEUR_UPLOAD_USER }},${{ secrets.PROJECTEUR_UPLOAD_TOKEN }}" \
263
+ -e "set ftp:ssl-force true; set ssl:verify-certificate true; mirror \
264
+ --reverse --upload-older --dereference -x ^\.git/$ ./ ./; quit"
265
+
266
+ - name : Update latest symlink
267
+ if : env.DO_UPLOAD == 'true'
268
+ run : |
269
+ curl --fail -i -X POST -F "token=${{ secrets.PROJECTEUR_UPDATE_TOKEN }}" \
270
+ ${{ secrets.PROJECTEUR_UPDATE_URL }}?branch=${{ env.BRANCHNAME }}
0 commit comments