Skip to content

Commit 2595a8c

Browse files
authored
Merge pull request #79 from bedroge/moving_latest_release
Improve build and release CI
2 parents 023366d + 6225abc commit 2595a8c

File tree

1 file changed

+70
-105
lines changed

1 file changed

+70
-105
lines changed

.github/workflows/build-test-release-client-packages.yml

+70-105
Original file line numberDiff line numberDiff line change
@@ -43,54 +43,28 @@ jobs:
4343
# it will make debugging more annoying.
4444

4545
- name: Build RPM package
46-
id: build-rpm
4746
uses: bpicode/github-action-fpm@master
4847
with:
4948
fpm_args: "etc"
5049
fpm_opts: "--debug -n cvmfs-config-eessi -v ${{ steps.get_version.outputs.version }} -t rpm -a all -s dir -C ./package --description 'CVMFS configuration package for EESSI.'"
5150

5251
- name: Build Deb package
53-
id: build-deb
5452
uses: bpicode/github-action-fpm@master
5553
with:
5654
fpm_args: "etc"
5755
fpm_opts: "--debug -n cvmfs-config-eessi -v ${{ steps.get_version.outputs.version }} -t deb -a all -s dir -C ./package --description 'CVMFS configuration package for EESSI.'"
5856

5957
- name: Build tar package
60-
id: build-tar
6158
uses: bpicode/github-action-fpm@master
6259
with:
6360
fpm_args: "etc"
6461
fpm_opts: "--debug -n cvmfs-config-eessi-${{ steps.get_version.outputs.version }} -t tar -a all -s dir -C ./package --description 'CVMFS configuration package for EESSI.'"
6562

66-
- name: Find filenames of generated packages
67-
id: find_filenames
68-
shell: bash
69-
run: |
70-
rpmfile="$(ls -1 cvmfs-config-eessi*.rpm)"
71-
debfile="$(ls -1 cvmfs-config-eessi*.deb)"
72-
tarfile="$(ls -1 cvmfs-config-eessi*.tar)"
73-
echo ::set-output name=rpmfile::${rpmfile}
74-
echo ::set-output name=debfile::${debfile}
75-
echo ::set-output name=tarfile::${tarfile}
76-
77-
- name: Upload Deb package as artifact
78-
uses: actions/upload-artifact@v2
79-
with:
80-
name: Deb package
81-
path: ${{ steps.find_filenames.outputs.debfile }}
82-
83-
- name: Upload RPM package as artifact
84-
uses: actions/upload-artifact@v2
85-
with:
86-
name: RPM package
87-
path: ${{ steps.find_filenames.outputs.rpmfile }}
88-
89-
- name: Upload tar package as artifact
63+
- name: Upload packages as build artifacts
9064
uses: actions/upload-artifact@v2
9165
with:
92-
name: Tar package
93-
path: ${{ steps.find_filenames.outputs.tarfile }}
66+
name: linux_packages
67+
path: cvmfs-config-eessi*
9468

9569
build-macos-package:
9670
runs-on: macos-latest
@@ -138,7 +112,7 @@ jobs:
138112
- name: Upload macOS package as artifact
139113
uses: actions/upload-artifact@v2
140114
with:
141-
name: macOS package
115+
name: macos_package
142116
path: ${{ steps.find_filename.outputs.pkgfile }}
143117

144118
test-deb-package:
@@ -157,13 +131,13 @@ jobs:
157131
- name: Download cvmfs-config-eessi package
158132
uses: actions/download-artifact@v2
159133
with:
160-
name: Deb package
134+
name: linux_packages
161135

162136
- name: Find filename of package
163137
id: find_filename
164138
shell: bash
165139
run: |
166-
debfile="$(ls -1 cvmfs-config-eessi*.deb)"
140+
debfile="$(find . -name cvmfs-config-eessi*.deb)"
167141
echo ::set-output name=debfile::${debfile}
168142
169143
- name: Install package
@@ -195,13 +169,13 @@ jobs:
195169
- name: Download cvmfs-config-eessi package
196170
uses: actions/download-artifact@v2
197171
with:
198-
name: RPM package
172+
name: linux_packages
199173

200174
- name: Find filename of package
201175
id: find_filename
202176
shell: bash
203177
run: |
204-
rpmfile="$(ls -1 cvmfs-config-eessi*.rpm)"
178+
rpmfile="$(find . -name cvmfs-config-eessi*.rpm)"
205179
echo ::set-output name=rpmfile::${rpmfile}
206180
207181
- name: Install package
@@ -233,13 +207,13 @@ jobs:
233207
- name: Download cvmfs-config-eessi package
234208
uses: actions/download-artifact@v2
235209
with:
236-
name: Tar package
210+
name: linux_packages
237211

238212
- name: Find filename of package
239213
id: find_filename
240214
shell: bash
241215
run: |
242-
tarfile="$(ls -1 cvmfs-config-eessi*.tar)"
216+
tarfile="$(find . -name cvmfs-config-eessi*.tar)"
243217
echo ::set-output name=tarfile::${tarfile}
244218
245219
- name: Install package
@@ -259,21 +233,21 @@ jobs:
259233
runs-on: macos-latest
260234
steps:
261235
- name: Install OSXFUSE
262-
run: brew install --cask osxfuse
236+
run: brew install --cask macfuse
263237

264238
- name: Download and install CVMFS client
265-
run: wget https://ecsft.cern.ch/dist/cvmfs/cvmfs-2.7.5/cvmfs-2.7.5.pkg && sudo installer -target / -pkg cvmfs-2.7.5.pkg
239+
run: wget https://ecsft.cern.ch/dist/cvmfs/cvmfs-release/cvmfs-latest.pkg && sudo installer -target / -pkg cvmfs-latest.pkg
266240

267241
- name: Download cvmfs-config-eessi package
268242
uses: actions/download-artifact@v2
269243
with:
270-
name: macOS package
244+
name: macos_package
271245

272246
- name: Find filename of package
273247
id: find_filename
274248
shell: bash
275249
run: |
276-
pkgfile="$(ls -1 cvmfs-config-eessi*.pkg)"
250+
pkgfile="$(find . -name cvmfs-config-eessi*.pkg)"
277251
echo ::set-output name=pkgfile::${pkgfile}
278252
279253
- name: Install package
@@ -293,86 +267,77 @@ jobs:
293267
if: startsWith(github.ref, 'refs/tags/')
294268
runs-on: ubuntu-latest
295269
steps:
296-
- name: Download Deb package
297-
uses: actions/download-artifact@v2
298-
with:
299-
name: Deb package
300-
301-
- name: Download RPM package
302-
uses: actions/download-artifact@v2
303-
with:
304-
name: RPM package
270+
- name: Checkout
271+
uses: actions/checkout@v2
305272

306-
- name: Download tar package
307-
uses: actions/download-artifact@v2
308-
with:
309-
name: Tar package
273+
- name: Find release version in tag
274+
id: find_version
275+
run: |
276+
echo ::set-output name=version::${GITHUB_REF#refs/tags/}
310277
311-
- name: Download macOS package
312-
uses: actions/download-artifact@v2
278+
- uses: actions/download-artifact@v2
313279
with:
314-
name: macOS package
280+
path: ./build_artifacts
315281

316282
- name: Find filenames of downloaded packages
317283
id: find_filenames
318284
shell: bash
319285
run: |
320-
rpmfile="$(ls -1 cvmfs-config-eessi*.rpm)"
321-
debfile="$(ls -1 cvmfs-config-eessi*.deb)"
322-
pkgfile="$(ls -1 cvmfs-config-eessi*.pkg)"
323-
tarfile="$(ls -1 cvmfs-config-eessi*.tar)"
324-
echo ::set-output name=rpmfile::${rpmfile}
325-
echo ::set-output name=debfile::${debfile}
326-
echo ::set-output name=pkgfile::${pkgfile}
327-
echo ::set-output name=tarfile::${tarfile}
286+
ls -1 -R .
287+
echo ::set-output name=package_filenames::$(find ./build_artifacts -name cvmfs-config-eessi*)
328288
329-
- name: Create Release
330-
id: create_release
331-
uses: actions/create-release@v1
332-
env:
333-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
289+
- uses: meeDamian/[email protected]
334290
with:
335-
tag_name: ${{ github.ref }}
336-
release_name: Filesystem Layer ${{ github.ref }}
337-
draft: false
338-
prerelease: false
291+
token: ${{ secrets.GITHUB_TOKEN }}
292+
tag: ${{ steps.find_version.outputs.version }}
293+
name: Filesystem Layer ${{ steps.find_version.outputs.version }}
294+
body: >
295+
Filesystem Layer release ${{ steps.find_version.outputs.version }}
296+
files: ${{ steps.find_filenames.outputs.package_filenames }}
297+
gzip: false
298+
299+
release-latest:
300+
needs: [release] # only run when the previous step (the actual release) was successful
301+
if: startsWith(github.ref, 'refs/tags/')
302+
runs-on: ubuntu-latest
303+
steps:
304+
- name: Checkout
305+
uses: actions/checkout@v2
339306

340-
- name: Upload RPM as release asset
341-
uses: actions/upload-release-asset@v1
342-
env:
343-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
307+
- uses: actions/download-artifact@v2
344308
with:
345-
upload_url: ${{ steps.create_release.outputs.upload_url }}
346-
asset_path: ${{ steps.find_filenames.outputs.rpmfile }}
347-
asset_name: ${{ steps.find_filenames.outputs.rpmfile }}
348-
asset_content_type: application/x-rpm
309+
path: ./build_artifacts
349310

350-
- name: Upload Deb as release asset
351-
uses: actions/upload-release-asset@v1
352-
env:
353-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
354-
with:
355-
upload_url: ${{ steps.create_release.outputs.upload_url }}
356-
asset_path: ${{ steps.find_filenames.outputs.debfile }}
357-
asset_name: ${{ steps.find_filenames.outputs.debfile }}
358-
asset_content_type: application/x-deb
311+
- name: Find release version in tag
312+
id: find_version
313+
run: |
314+
echo ::set-output name=version::${GITHUB_REF#refs/tags/}
359315
360-
- name: Upload Pkg as release asset
361-
uses: actions/upload-release-asset@v1
362-
env:
363-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
364-
with:
365-
upload_url: ${{ steps.create_release.outputs.upload_url }}
366-
asset_path: ${{ steps.find_filenames.outputs.pkgfile }}
367-
asset_name: ${{ steps.find_filenames.outputs.pkgfile }}
368-
asset_content_type: application/x-newton-compatible-pkg
316+
- name: Find filenames of downloaded packages and rename them to latest
317+
id: find_filenames
318+
shell: bash
319+
run: |
320+
sudo apt-get install rename
321+
rename "s/([0-9]+.[0-9]+.[0-9]+)(-[0-9]+)?/latest/g" $(find ./build_artifacts -name cvmfs-config-eessi*)
322+
ls -1 -R ./build_artifacts
323+
echo ::set-output name=package_filenames::$(find ./build_artifacts -name cvmfs-config-eessi*latest*)
369324
370-
- name: Upload Tar as release asset
371-
uses: actions/upload-release-asset@v1
325+
- name: Delete any previous tag/release named "latest"
326+
uses: dev-drprasad/[email protected]
327+
with:
328+
delete_release: true # default: false
329+
tag_name: latest
372330
env:
373331
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
332+
333+
- uses: meeDamian/[email protected]
374334
with:
375-
upload_url: ${{ steps.create_release.outputs.upload_url }}
376-
asset_path: ${{ steps.find_filenames.outputs.tarfile }}
377-
asset_name: ${{ steps.find_filenames.outputs.tarfile }}
378-
asset_content_type: application/x-tar
335+
token: ${{ secrets.GITHUB_TOKEN }}
336+
tag: latest
337+
name: Filesystem Layer latest release
338+
body: |
339+
Filesystem Layer release ${{ steps.find_version.outputs.version }} (see: https://github.com/${{github.repository}}/releases/tag/${{ steps.find_version.outputs.version }})
340+
341+
This `latest` tag is a moving tag that is updated automatically for each release, and provides easy access to the latest `cvmfs-config-eessi` packages.
342+
files: ${{ steps.find_filenames.outputs.package_filenames }}
343+
gzip: false

0 commit comments

Comments
 (0)