Skip to content

Merge pull request #54 from sireliah/release-0.7.1 #125

Merge pull request #54 from sireliah/release-0.7.1

Merge pull request #54 from sireliah/release-0.7.1 #125

Workflow file for this run

on:
push:
tags:
- 'v*'
- 'test*'
name: Create release
jobs:
build-linux:
name: Create Linux x86_64 release
runs-on: ubuntu-latest
outputs:
upload_url: ${{ steps.upload.outputs.upload_url }}
tag: ${{ steps.vars.outputs.tag }}
steps:
- uses: actions/checkout@v2
- name: Set tag output
id: vars
run: echo ::set-output name=tag::${GITHUB_REF#refs/*/}
- name: Create vendored crates
id: vendor
run: |
output=$(./scripts/cargo_vendor.sh ${{ steps.vars.outputs.tag }} | tail -1 | tr -d '\n')
echo ::set-output name=filename::$output
- name: Install deps
run: sudo apt update && sudo apt install libdbus-1-dev libgtk-3-dev libglib2.0-dev libcairo-gobject2 libpango1.0-dev libatk1.0-dev libgdk-pixbuf2.0-0
- name: Build release binary
run: cargo build --release
- name: Create the package
id: package
run: echo ::set-output name=filename::$(./scripts/package.sh ${{ steps.vars.outputs.tag }} | tail -1 | tr -d '\n')
- name: Calculate the checksum
id: checksum
run: echo ::set-output name=sha::$(sha256sum ./build/${{ steps.package.outputs.filename }} | sed 's/\.\/build\///g' | tr -d '\n')
- name: Create release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.vars.outputs.tag }}
release_name: ${{ steps.vars.outputs.tag }}
body: |
## Notable changes
-
## Checksums (sha256)
${{ steps.checksum.outputs.sha }}
draft: true
prerelease: false
- name: Upload release asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./build/${{ steps.package.outputs.filename }}
asset_name: ${{ steps.package.outputs.filename }}
asset_content_type: application/gzip
- name: Upload vendored crates for Flatpak
id: upload-vendored-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./vendored/${{ steps.vendor.outputs.filename }}
asset_name: ${{ steps.vendor.outputs.filename }}
asset_content_type: application/gzip
- name: Set release outputs
id: upload
run: echo "::set-output name=upload_url::${{ steps.create_release.outputs.upload_url }}"
gvsbuild:
name: Build GTK libs for Windows
runs-on: windows-2019
needs: build-linux
env:
gvsbuildref: 679fa3bdf342ed2b199977b075da8263a04b3c05
gvsbuildupdate: 1
outputs:
cachekey: ${{ steps.output.outputs.cachekey }}
steps:
- name: (GTK binaries) create dir
run: mkdir C:\gtk-build\gtk\x64\release
- name: (GTK binaries) get from cache
uses: actions/cache@v2
id: cache
with:
path: C:\gtk-build\gtk\x64\release\**
key: gvsbuild-${{ env.gvsbuildupdate }}-${{ env.gvsbuildref }}
- name: (GTK binaries) checkout gvsbuild
if: steps.cache.outputs.cache-hit != 'true'
uses: actions/checkout@v2
with:
repository: wingtk/gvsbuild
ref: ${{ env.gvsbuildref }}
path: gvsbuild
- name: (GTK binaries) move git binary
if: steps.cache.outputs.cache-hit != 'true'
run: move "C:\Program Files\Git\usr\bin" "C:\Program Files\Git\usr\notbin"
shell: cmd
- name: (GTK binaries) run gvsbuild
if: steps.cache.outputs.cache-hit != 'true'
working-directory: gvsbuild
run: python .\build.py build -p=x64 --vs-ver=16 --msys-dir=C:\msys64 gtk3
- name: (GTK binaries) restore git binary
if: steps.cache.outputs.cache-hit != 'true'
run: move "C:\Program Files\Git\usr\notbin" "C:\Program Files\Git\usr\bin"
shell: cmd
- name: (GTK binaries) output cache key
id: output
run: echo "::set-output name=cachekey::gvsbuild-${{ env.gvsbuildupdate }}-${{ env.gvsbuildref }}"
build-windows:
name: Create Windows x64 release
runs-on: windows-latest
needs: [build-linux, gvsbuild]
steps:
- name: Create GTK binaries dir
run: mkdir C:\gtk-build\gtk\x64\release
- name: Get GTK binaries from cache
uses: actions/cache@v2
id: cache
with:
path: C:\gtk-build\gtk\x64\release\**
key: ${{ needs.gvsbuild.outputs.cachekey }}
- name: Set up env
run: |
echo "PKG_CONFIG=C:\gtk-build\gtk\x64\release\bin\pkgconf.exe" >> $GITHUB_ENV
echo "C:\gtk-build\gtk\x64\release\bin" >> $GITHUB_PATH
shell: bash
- name: Create target path
run: mkdir C:\build
- uses: actions/checkout@v2
- name: Compile icon resource
run: |
# TODO: how to call the rc without copying it?
ls "C:/Program Files (x86)/"
ls "C:/Program Files (x86)/Windows Kits/"
ls "C:/Program Files (x86)/Windows Kits/10/bin/"
cp $env:RC_BIN\rc.exe src\
cp $env:RC_BIN\rcdll.dll src\
cd src
.\rc.exe dragit.rc
ls
env:
RC_BIN: C:/Program Files (x86)/Windows Kits/10/bin/10.0.22000.0/x64/
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
default: true
- name: Create linker config for the icon
run: |
$repoPath = $env:GITHUB_WORKSPACE -replace "\\", "/"
mkdir .cargo
Set-Content -Path .\.cargo\config -Value "[build]`nrustflags = [`"-Clink-args=${repoPath}/src/dragit.res`"]"
Get-Content .\.cargo\config
- name: Build release
uses: actions-rs/cargo@v1
with:
command: build
args: --release --target-dir C:\build
- uses: msys2/setup-msys2@v2
with:
update: true
location: C:\msys2
install: >-
mingw-w64-x86_64-adwaita-icon-theme
mingw-w64-x86_64-hicolor-icon-theme
- name: Copy dependencies
run: |
mkdir $env:PACKAGE_DIR
mkdir $env:PACKAGE_DIR\bin\
mkdir $env:PACKAGE_DIR\lib\
mkdir $env:PACKAGE_DIR\share\
ls C:\gtk-build\gtk\x64\release\bin\
cp C:\build\release\dragit.exe $env:PACKAGE_DIR\bin\
# Those dlls and binaries are provided by gvsbuild
foreach($line in Get-Content .\scripts\windows_deps.txt) {
cp C:\gtk-build\gtk\x64\release\bin\$line $env:PACKAGE_DIR\bin\
}
ls C:\msys2\msys64\mingw64\bin\
cp C:\msys2\msys64\mingw64\bin\libexpat-1.dll $env:PACKAGE_DIR\bin\expat.dll
cp -r C:\gtk-build\gtk\x64\release\share\glib-2.0 $env:PACKAGE_DIR\share\
# Icons are installed from msys2.
cp -r C:\msys2\msys64\mingw64\share\icons $env:PACKAGE_DIR\share\
# https://github.com/gtk-rs/gtk/issues/422
cp -r C:\gtk-build\gtk\x64\release\lib\gdk-pixbuf-2.0 $env:PACKAGE_DIR\lib\
cp static\README.md $env:PACKAGE_DIR\
env:
PACKAGE_DIR: C:\build\dragit
- name: Build zip package
run: |
cd C:\build\
tar.exe -a -c -f C:\build\dragit_package.zip dragit
- name: Upload release asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.build-linux.outputs.upload_url }}
asset_path: C:\build\dragit_package.zip
asset_name: dragit_${{ needs.build-linux.outputs.tag }}_windows_x64.zip
asset_content_type: application/zip