A bit more cleanup #47
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Draft Github Release | |
on: | |
workflow_dispatch: | |
# Enable manual run | |
push: | |
# Sequence of patterns matched against refs/tags | |
tags: | |
- 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10 | |
jobs: | |
generate-changelog: | |
name: Generate changelog | |
runs-on: ubuntu-latest | |
steps: | |
- name: Get latest published release tag | |
id: get_latest_release | |
uses: pozetroninc/[email protected] | |
with: | |
repository: ${{ github.repository }} | |
excludes: prerelease, draft | |
- name: Generate changelog since last published release | |
uses: charmixer/auto-changelog-action@v1 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
future_release: ${{ github.ref }} | |
since_tag: ${{ steps.get_latest_release.outputs.release }} | |
- name: Upload changelog | |
uses: actions/upload-artifact@v2 | |
with: | |
name: changelog | |
path: CHANGELOG.md | |
draft-release: | |
name: Draft Github release | |
needs: generate-changelog | |
runs-on: ubuntu-20.04 | |
outputs: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
steps: | |
- name: Download changelog | |
uses: actions/download-artifact@v2 | |
with: | |
name: changelog | |
- name: Draft release with changelog | |
id: create_release | |
uses: actions/create-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: ${{ github.ref }} | |
release_name: Smarthome ${{ github.ref }} | |
body_path: CHANGELOG.md | |
draft: true | |
prerelease: false | |
create-build: | |
name: Create ${{ matrix.target }} build | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
target: [Android, Windows, Linux] | |
include: | |
- os: windows-2019 | |
target: Windows | |
build_target: windows | |
build_path: build\windows\runner\Release | |
asset_extension: .zip | |
asset_content_type: application/zip | |
- os: ubuntu-20.04 | |
target: Linux | |
build_target: linux | |
build_path: build/linux/x64/release/bundle | |
asset_extension: .tar.gz | |
asset_content_type: application/gzip | |
- os: ubuntu-20.04 | |
target: Android | |
build_target: apk | |
build_path: build/app/outputs/flutter-apk | |
asset_extension: .apk | |
asset_content_type: application/vnd.android.package-archive | |
# Disable fail-fast as we want results from all even if one fails. | |
fail-fast: false | |
needs: draft-release | |
steps: | |
# Set up Flutter. | |
- name: Clone Flutter repository with master channel | |
uses: subosito/flutter-action@v2 | |
with: | |
channel: master | |
- name: Install Linux dependencies | |
if: matrix.target == 'Linux' | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libgtk-3-dev libx11-dev pkg-config cmake ninja-build libblkid-dev | |
- name: Install Android dependencies | |
if: matrix.target == 'Android' | |
uses: actions/setup-java@v1 | |
with: | |
java-version: '12.x' | |
- name: Enable desktop support | |
if: matrix.target != 'Android' | |
run: | | |
flutter config --enable-linux-desktop | |
flutter config --enable-macos-desktop | |
flutter config --enable-windows-desktop | |
- run: flutter doctor -v | |
# Checkout smarthome code, recreate missing files, and get packages. | |
- name: Checkout smarthome code | |
uses: actions/checkout@v2 | |
- run: flutter create . --project-name smarthome | |
- run: flutter pub get | |
- name: Configure Keystore for Android | |
if: matrix.target == 'Android' | |
run: | | |
echo "$PLAY_STORE_UPLOAD_KEY" | base64 --decode > app/smarthome-keystore.jks | |
echo "storeFile=smarthome-keystore.jks" >> key.properties | |
echo "keyAlias=$KEYSTORE_KEY_ALIAS" >> key.properties | |
echo "storePassword=$KEYSTORE_STORE_PASSWORD" >> key.properties | |
echo "keyPassword=$KEYSTORE_KEY_PASSWORD" >> key.properties | |
env: | |
PLAY_STORE_UPLOAD_KEY: ${{ secrets.PLAY_STORE_UPLOAD_KEY }} | |
KEYSTORE_KEY_ALIAS: ${{ secrets.KEYSTORE_KEY_ALIAS }} | |
KEYSTORE_KEY_PASSWORD: ${{ secrets.KEYSTORE_KEY_PASSWORD }} | |
KEYSTORE_STORE_PASSWORD: ${{ secrets.KEYSTORE_STORE_PASSWORD }} | |
working-directory: android | |
- name: Run code generators | |
run: flutter pub run build_runner build | |
- name: Build non Android | |
if: matrix.target != 'Android' | |
run: flutter build -v ${{ matrix.build_target }} --release | |
- name: Android Build | |
if: matrix.target == 'Android' | |
run: flutter build -v ${{ matrix.build_target }} --release --no-tree-shake-icons | |
# Package the build. | |
- name: Copy VC redistributables to release directory for Windows | |
if: matrix.target == 'Windows' | |
run: | | |
Copy-Item (vswhere -latest -find 'VC\Redist\MSVC\*\x64\*\msvcp140.dll') . | |
Copy-Item (vswhere -latest -find 'VC\Redist\MSVC\*\x64\*\vcruntime140.dll') . | |
Copy-Item (vswhere -latest -find 'VC\Redist\MSVC\*\x64\*\vcruntime140_1.dll') . | |
- name: Rename build for Android | |
if: matrix.target == 'Android' | |
run: mv app-release.apk $GITHUB_WORKSPACE/smarthome_${{ matrix.target }}.apk | |
working-directory: ${{ matrix.build_path }} | |
- name: Compress build for Linux | |
if: matrix.target == 'Linux' | |
run: tar czf $GITHUB_WORKSPACE/smarthome_${{ matrix.target }}.tar.gz * | |
working-directory: ${{ matrix.build_path }} | |
- name: Compress build for Windows | |
if: matrix.target == 'Windows' | |
run: compress-archive -Path * -DestinationPath ${env:GITHUB_WORKSPACE}\smarthome_${{ matrix.target }}.zip | |
working-directory: ${{ matrix.build_path }} | |
# Upload the build. | |
- name: Add packaged build to release draft | |
id: upload_release_asset | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ needs.draft-release.outputs.upload_url }} | |
asset_path: ./smarthome_${{ matrix.target }}${{ matrix.asset_extension }} | |
asset_name: smarthome_${{ matrix.target }}${{ matrix.asset_extension }} | |
asset_content_type: ${{ matrix.asset_content_type }} |