88 branches :
99 - master
1010 - develop
11+ - ' feature/**'
1112
1213jobs :
1314 build :
@@ -19,21 +20,25 @@ jobs:
1920 - fedora-31
2021 - fedora-32
2122 - fedora-33
23+ - fedora-34
2224 - debian-stretch
2325 - debian-buster
26+ - debian-bullseye
2427 - ubuntu-18.04
2528 - ubuntu-20.04
2629 - ubuntu-20.10
30+ - ubuntu-21.04
2731 - opensuse-15.0
2832 - opensuse-15.1
2933 - opensuse-15.2
34+ - opensuse-15.3
3035 - centos-8
3136 os :
3237 - ubuntu-latest
3338
3439 runs-on : ${{ matrix.os }}
3540 env :
36- DOCKER_IMG : docker.pkg.github.com /jahnf/projecteur/projecteur
41+ DOCKER_IMG : ghcr.io /jahnf/projecteur/projecteur
3742 DOCKER_TAG : ${{ matrix.docker_tag }}
3843 MAKEFLAGS : -j2
3944 CLOUDSMITH_USER : jahnf
5560 echo Detected branch: ${BRANCH}
5661 echo "BRANCH=${BRANCH}" >> $GITHUB_ENV
5762
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-
6363 - name : Pull ${{ matrix.docker_tag }} docker image
6464 run : |
6565 docker pull ${DOCKER_IMG}:${{ matrix.docker_tag }}
66- docker logout docker.pkg.github.com
6766 - name : docker create build container
6867 run : |
6968 docker run --name build --env MAKEFLAGS=${MAKEFLAGS} \
@@ -106,15 +105,27 @@ jobs:
106105 dist_pkg_artifact=`ls -1 dist-pkg/* | head -n 1`
107106 echo "dist_pkg_artifact=${dist_pkg_artifact}" >> $GITHUB_ENV
108107
108+ - if : startsWith(matrix.docker_tag, 'archlinux')
109+ run : echo "${{ env.BRANCH }}" >> version-branch
110+
109111 # ===================================================================================
110112 # ---------- Upload artifacts to github ----------
111113 - name : Upload source-pkg artifact to github
112114 if : startsWith(matrix.docker_tag, 'archlinux')
113- uses : actions/upload-artifact@v1
115+ uses : actions/upload-artifact@v2
114116 with :
115117 name : source-package
116118 path : ${{ env.src_pkg_artifact }}
117119
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+
118129 - name : Upload binary package artifact to github
119130 uses : actions/upload-artifact@v2
120131 with :
@@ -128,25 +139,23 @@ jobs:
128139 echo "upload_bin_pkg=${{ false }}" >> $GITHUB_ENV
129140 echo "upload_src_pkg=${{ false }}" >> $GITHUB_ENV
130141 echo "cloudsmith_upload_repo=projecteur-develop" >> $GITHUB_ENV
131- echo "bintray_upload_repo=projecteur-develop" >> $GITHUB_ENV
132142 echo "REPO_UPLOAD=${{ false }}" >> $GITHUB_ENV
133143
134144 - 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' }}
136146 run : |
137147 echo "upload_bin_pkg=${{ true }}" >> $GITHUB_ENV
138148 pip install --upgrade wheel
139149 pip install --upgrade cloudsmith-cli
140150
141151 - 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' }}
143153 run : |
144154 echo "upload_src_pkg=${{ true }}" >> $GITHUB_ENV
145155
146156 - if : env.BRANCH == 'master'
147157 run : |
148158 echo "cloudsmith_upload_repo=projecteur-stable" >> $GITHUB_ENV
149- echo "bintray_upload_repo=projecteur-master" >> $GITHUB_ENV
150159
151160 # ===================================================================================
152161 # ---------- Upload artifacts to cloudsmith ----------
@@ -161,7 +170,7 @@ jobs:
161170 --summary "${CLOUDSMITH_SUMMARY}" --description "${CLOUDSMITH_DESC}" ${{ env.dist_pkg_artifact }}
162171
163172 - 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' }}
165174 env :
166175 CLOUDSMITH_API_KEY : ${{ secrets.CLOUDSMITH_API_KEY }}
167176 CLOUDSMITH_REPO : ${{ env.cloudsmith_upload_repo }}
@@ -177,10 +186,12 @@ jobs:
177186 export PKG_TYPE="${filename##*.}"
178187 declare -A distromap=( ["debian-stretch"]="debian/stretch" ["debian-buster"]="debian/buster" \
179188 ["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" \
182192 ["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" )
184195 export DISTRO=${distromap[${{ matrix.docker_tag }}]}
185196 echo PKGTYPE=$PKG_TYPE
186197 echo DISTRO=$DISTRO
@@ -200,35 +211,60 @@ jobs:
200211 cloudsmith push ${PKG_TYPE} -W -k ${CLOUDSMITH_API_KEY} --republish \
201212 ${CLOUDSMITH_USER}/${CLOUDSMITH_REPO}/${DISTRO} ${{ env.dist_pkg_artifact }}
202213
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
208224 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'
223238 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
234240
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