chore: automatically build & upload release assets

This commit is contained in:
Stéphane Lesimple
2020-09-01 13:48:19 +02:00
parent 22b2aba490
commit 9fed89dbcf
2 changed files with 315 additions and 21 deletions

315
.github/workflows/release.yml vendored Normal file
View File

@@ -0,0 +1,315 @@
on:
release:
types: [published]
name: Upload Release Asset
jobs:
linux64-cli:
name: Linux64 CLI static
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: install prerequisites
run: sudo apt update && sudo apt install -y libglib2.0-dev ghostscript man jq
- name: configure
run: CLI_ONLY=1 ./configure
- name: make
run: nproc && make -j$(nproc) && make static && mv -f dvdisaster-static dvdisaster
- name: check executable
run: |
./dvdisaster --version && ./dvdisaster --version | grep -q -e UNKNOWN -e dirty || true
file dvdisaster && file dvdisaster | grep -q 'ELF 64' && file dvdisaster | grep -q 'statically linked'
- name: build dist
id: dist
run: |
archive=dvdisaster-$(echo "${{ github.ref }}" | grep -Eo '[^/]+$')-linux64-static-cli-only.zip
upload_url=$(jq -r '.release.upload_url' < $GITHUB_EVENT_PATH)
echo "Archive name is $archive"
echo "Upload URL is $upload_url"
echo "::set-output name=archive::$archive"
echo "::set-output name=upload_url::$upload_url"
mkdir dist
man -t documentation/dvdisaster.en.1 | ps2pdf - dist/dvdisaster.pdf
mv dvdisaster documentation/dvdisaster.*.1 documentation/user-manual/manual.pdf dist/
mv dist ${archive/.zip/}
zip -9r $archive ${archive/.zip/}
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.dist.outputs.upload_url }}
asset_path: ./${{ steps.dist.outputs.archive }}
asset_name: ${{ steps.dist.outputs.archive }}
asset_content_type: application/zip
win64-gui:
name: Windows64 GUI
runs-on: windows-2016
defaults:
run:
shell: msys2 {0}
steps:
- uses: msys2/setup-msys2@v2
with:
msystem: MINGW64
update: false
install: git diffutils make pkg-config mingw-w64-x86_64-gtk2 mingw-w64-x86_64-glib2 mingw-w64-x86_64-gcc mingw-w64-x86_64-ghostscript mingw-w64-x86_64-jq mingw-w64-x86_64-ntldd-git man zip
- run: git config --global core.autocrlf input
shell: bash
- uses: actions/checkout@v2
- name: configure
run: ./configure
- name: make
run: nproc && make -j$(nproc)
- name: check executable
run: |
./dvdisaster.exe --version && ./dvdisaster --version | grep -q -e UNKNOWN -e dirty || true
file dvdisaster.exe && file dvdisaster.exe | grep -q 'x86-64, for MS Windows'
- name: build dist
id: dist
run: |
archive=dvdisaster-$(echo "${{ github.ref }}" | grep -Eo '[^/]+$')-win64.zip
upload_url=$(jq -r '.release.upload_url' < $GITHUB_EVENT_PATH)
echo "Archive name is $archive"
echo "Upload URL is $upload_url"
echo "::set-output name=archive::$archive"
echo "::set-output name=upload_url::$upload_url"
mkdir dist
mkdir -p dist/lib dist/locale dist/share/themes
cp -vr locale/*/ dist/locale/
cp -vr $MINGW_PREFIX/share/themes/MS-Windows dist/share/themes/
cp -vr $MINGW_PREFIX/lib/gtk-2.0 dist/lib/
find dist -type f -name "*.a" -delete
rm -rf dist/lib/gtk-2.0/include
ntldd -R dvdisaster
for i in $(ntldd -R dvdisaster | awk '/mingw/ {print $3}' | tr \\\\ / | grep -Eo '[^/]+$')
do
test -e $MINGW_PREFIX/bin/$i && cp -va $MINGW_PREFIX/bin/$i dist/
done
man -t documentation/dvdisaster.en.1 | ps2pdf - dist/dvdisaster.pdf
mv dvdisaster documentation/dvdisaster.*.1 documentation/user-manual/manual.pdf dist/
mv dist ${archive/.zip/}
zip -9r $archive ${archive/.zip/}
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.dist.outputs.upload_url }}
asset_path: ./${{ steps.dist.outputs.archive }}
asset_name: ${{ steps.dist.outputs.archive }}
asset_content_type: application/zip
win32-gui:
name: Windows32 GUI
runs-on: windows-2016
defaults:
run:
shell: msys2 {0}
steps:
- uses: msys2/setup-msys2@v2
with:
msystem: MINGW32
update: false
install: git diffutils make pkg-config mingw-w64-i686-gtk2 mingw-w64-i686-glib2 mingw-w64-i686-gcc mingw-w64-i686-ghostscript mingw-w64-i686-jq mingw-w64-i686-ntldd-git man zip
- run: git config --global core.autocrlf input
shell: bash
- uses: actions/checkout@v2
- name: configure
run: ./configure
- name: make
run: nproc && make -j$(nproc)
- name: check executable
run: |
./dvdisaster.exe --version && ./dvdisaster --version | grep -q -e UNKNOWN -e dirty || true
file dvdisaster.exe && file dvdisaster.exe | grep -q '386, for MS Windows'
- name: build dist
id: dist
run: |
set -x
set +o pipefail
archive=dvdisaster-$(echo "${{ github.ref }}" | grep -Eo '[^/]+$')-win32.zip
upload_url=$(jq -r '.release.upload_url' < $GITHUB_EVENT_PATH)
echo "Archive name is $archive"
echo "Upload URL is $upload_url"
echo "::set-output name=archive::$archive"
echo "::set-output name=upload_url::$upload_url"
mkdir dist
mkdir -p dist/lib dist/locale dist/share/themes
cp -vr locale/*/ dist/locale/
cp -vr $MINGW_PREFIX/share/themes/MS-Windows dist/share/themes/
cp -vr $MINGW_PREFIX/lib/gtk-2.0 dist/lib/
find dist -type f -name "*.a" -delete
rm -rf dist/lib/gtk-2.0/include
ntldd -R dvdisaster
for i in $(ntldd -R dvdisaster | awk '/mingw/ {print $3}' | tr \\\\ / | grep -Eo '[^/]+$')
do
test -e $MINGW_PREFIX/bin/$i && cp -va $MINGW_PREFIX/bin/$i dist/
done
man -t documentation/dvdisaster.en.1 | ps2pdf - dist/dvdisaster.pdf
mv dvdisaster documentation/dvdisaster.*.1 documentation/user-manual/manual.pdf dist/
mv dist ${archive/.zip/}
zip -9r $archive ${archive/.zip/}
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.dist.outputs.upload_url }}
asset_path: ./${{ steps.dist.outputs.archive }}
asset_name: ${{ steps.dist.outputs.archive }}
asset_content_type: application/zip
win64-cli:
name: Windows64 CLI
runs-on: windows-2016
defaults:
run:
shell: msys2 {0}
steps:
- uses: msys2/setup-msys2@v2
with:
msystem: MINGW64
update: false
install: git diffutils make pkg-config mingw-w64-x86_64-glib2 mingw-w64-x86_64-gcc mingw-w64-x86_64-ghostscript mingw-w64-x86_64-jq mingw-w64-x86_64-ntldd-git man zip
- run: git config --global core.autocrlf input
shell: bash
- uses: actions/checkout@v2
- name: configure
run: CLI_ONLY=1 ./configure
- name: make
run: nproc && make -j$(nproc)
- name: check executable
run: |
./dvdisaster.exe --version && ./dvdisaster --version | grep -q -e UNKNOWN -e dirty || true
file dvdisaster.exe && file dvdisaster.exe | grep -q 'x86-64, for MS Windows'
- name: build dist
id: dist
run: |
archive=dvdisaster-$(echo "${{ github.ref }}" | grep -Eo '[^/]+$')-win64-cli-only.zip
upload_url=$(jq -r '.release.upload_url' < $GITHUB_EVENT_PATH)
echo "Archive name is $archive"
echo "Upload URL is $upload_url"
echo "::set-output name=archive::$archive"
echo "::set-output name=upload_url::$upload_url"
mkdir dist
mkdir -p dist/locale
cp -vr locale/*/ dist/locale/
ntldd -R dvdisaster
for i in $(ntldd -R dvdisaster | awk '/mingw/ {print $3}' | tr \\\\ / | grep -Eo '[^/]+$')
do
test -e $MINGW_PREFIX/bin/$i && cp -va $MINGW_PREFIX/bin/$i dist/
done
man -t documentation/dvdisaster.en.1 | ps2pdf - dist/dvdisaster.pdf
mv dvdisaster documentation/dvdisaster.*.1 documentation/user-manual/manual.pdf dist/
mv dist ${archive/.zip/}
zip -9r $archive ${archive/.zip/}
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.dist.outputs.upload_url }}
asset_path: ./${{ steps.dist.outputs.archive }}
asset_name: ${{ steps.dist.outputs.archive }}
asset_content_type: application/zip
win32-cli:
name: Windows32 CLI
runs-on: windows-2016
defaults:
run:
shell: msys2 {0}
steps:
- uses: msys2/setup-msys2@v2
with:
msystem: MINGW32
update: false
install: git diffutils make pkg-config mingw-w64-i686-glib2 mingw-w64-i686-gcc mingw-w64-i686-ghostscript mingw-w64-i686-jq mingw-w64-i686-ntldd-git man zip
- run: git config --global core.autocrlf input
shell: bash
- uses: actions/checkout@v2
- name: configure
run: CLI_ONLY=1 ./configure
- name: make
run: nproc && make -j$(nproc)
- name: check executable
run: |
./dvdisaster.exe --version && ./dvdisaster --version | grep -q -e UNKNOWN -e dirty || true
file dvdisaster.exe && file dvdisaster.exe | grep -q '386, for MS Windows'
- name: build dist
id: dist
run: |
archive=dvdisaster-$(echo "${{ github.ref }}" | grep -Eo '[^/]+$')-win32-cli-only.zip
upload_url=$(jq -r '.release.upload_url' < $GITHUB_EVENT_PATH)
echo "Archive name is $archive"
echo "Upload URL is $upload_url"
echo "::set-output name=archive::$archive"
echo "::set-output name=upload_url::$upload_url"
mkdir dist
mkdir -p dist/locale
cp -vr locale/*/ dist/locale/
ntldd -R dvdisaster
for i in $(ntldd -R dvdisaster | awk '/mingw/ {print $3}' | tr \\\\ / | grep -Eo '[^/]+$')
do
test -e $MINGW_PREFIX/bin/$i && cp -va $MINGW_PREFIX/bin/$i dist/
done
man -t documentation/dvdisaster.en.1 | ps2pdf - dist/dvdisaster.pdf
mv dvdisaster documentation/dvdisaster.*.1 documentation/user-manual/manual.pdf dist/
mv dist ${archive/.zip/}
zip -9r $archive ${archive/.zip/}
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.dist.outputs.upload_url }}
asset_path: ./${{ steps.dist.outputs.archive }}
asset_name: ${{ steps.dist.outputs.archive }}
asset_content_type: application/zip