Skip to content

Add windows build in workflow #69

Add windows build in workflow

Add windows build in workflow #69

Workflow file for this run

name: main
on:
push:
pull_request:
env:
DOTNET_NOLOGO: true # Disable the .NET logo
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true # Disable the .NET first time experience
DOTNET_CLI_TELEMETRY_OPTOUT: true # Disable sending .NET CLI telemetry
jobs:
# MAUI Build
build:
runs-on: windows-latest
env:
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
DOTNET_NOLOGO: true
DOTNET_CLI_TELEMETRY_OPTOUT: true
name: Build & Upload Artifacts
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Cook KeyStore
run: echo "${{ secrets.KEYSTORE_B64 }}" | base64 -d > $GITHUB_WORKSPACE/signing-key.keystore
shell: bash
- name: Install .NET
uses: actions/setup-dotnet@v2
with:
dotnet-version: 8.0.x
- name: Install MAUI Workload
run: dotnet workload install maui --ignore-failed-sources
- name: Restore Dependencies
run: dotnet restore Anikin/
- name: Publish MAUI Android
run: >
dotnet publish Anikin/
-c Release
-f net8.0-android
-p:AndroidKeyStore=true
-p:AndroidSigningKeyStore=${{ github.workspace }}/signing-key.keystore
-p:AndroidSigningStorePass="${{ secrets.PASSWORD }}"
-p:AndroidSigningKeyAlias="DrMedia"
-p:AndroidSigningKeyPass="${{ secrets.PASSWORD }}"
/p:CSharpier_Bypass=true
- name: Rename file
run: |
set -e
mv Anikin/bin/Release/net8.0-android/com.oneb.anikin-Signed.apk Anikin.apk
shell: bash
# Move the file with windows cmd https://stackoverflow.com/a/7268357
- name: Move apk file
run: |
if not exist build md build
move Anikin.apk build/Anikin.apk
- name: Publish MAUI Windows (x64)
run: >
dotnet publish Anikin/
-c Release
-f net8.0-windows10.0.19041.0
-p:RuntimeIdentifierOverride=win10-x64
-p:WindowsPackageType=None
-o build/windows
/p:CSharpier_Bypass=true
- name: Create windows package
run: powershell Compress-Archive build/windows 'Anikin (windows).zip'
- name: Upload Artifacts
uses: actions/upload-artifact@v3
with:
name: Anikin
path: build/
deploy:
if: ${{ github.event_name == 'push' && github.ref_type == 'tag' }}
needs: build
runs-on: ubuntu-latest
permissions:
actions: read
contents: write
steps:
# Checkout required for running git commands, etc.
- name: Checkout
uses: actions/checkout@v3
- name: Set variables
run: |
TAG_NAME="${{ github.ref_name }}"
echo $TAG_NAME
VERSION="$(echo $TAG_NAME | tr -d v)"
echo "VERSION=$VERSION" >> $GITHUB_ENV
echo "PACKAGE_NAME=${{ github.event.repository.name }}-$TAG_NAME" >> $GITHUB_ENV
Prerelease_Param=""
if [[ $TAG_NAME == *"-pre"* || $TAG_NAME == *"-beta"* || $TAG_NAME == *"-alpha"* ]]; then
Prerelease_Param="--prerelease"
fi
echo $Prerelease_Param
echo "Prerelease_Param=$Prerelease_Param" >> $GITHUB_ENV
- name: Download artifacts
uses: actions/download-artifact@v3
with:
name: Anikin
path: build
- name: Set body
run: |
git fetch --depth=1 origin +refs/tags/*:refs/tags/*
TAG_MESSAGE=$(git tag -l --format='%(contents)' ${GITHUB_REF#refs/*/})
echo "TAG_MESSAGE2<<EOF" >> $GITHUB_ENV
echo "$TAG_MESSAGE" >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
- name: Clean up downloaded artifacts
run: |
set -e
mv build/Anikin.apk ${{ env.PACKAGE_NAME }}.apk
mv 'build/Anikin (windows).zip' '${{ env.PACKAGE_NAME }} (windows).zip'
- name: Create release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: >
gh release create "${{ github.ref_name }}"
"${{ env.PACKAGE_NAME }}.apk"
--repo "${{ github.event.repository.full_name }}"
--title "${{ env.VERSION }}"
--notes "${{ env.TAG_MESSAGE2 }}"
--verify-tag
${{ env.Prerelease_Param }}
- name: Delete Old Pre-Releases
id: delete-pre-releases
uses: sgpublic/delete-release-action@master
with:
pre-release-drop: true
pre-release-keep-count: 3
pre-release-drop-tag: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
notify:
needs: deploy
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set variables
run: |
TAG_NAME="${{ github.ref_name }}"
echo "$TAG_NAME"
echo "PACKAGE_NAME=${{ github.event.repository.name }}-$TAG_NAME" >> $GITHUB_ENV
- name: Set variables 2
run: |
git fetch --depth=1 origin +refs/tags/*:refs/tags/*
TAG_MESSAGE=$(git tag -l --format='%(contents)' ${GITHUB_REF#refs/*/})
# Sanitize content
TAG_MESSAGE="${TAG_MESSAGE//'%'/'%25'}"
TAG_MESSAGE="${TAG_MESSAGE//$'\n'/'\n'}"
TAG_MESSAGE="${TAG_MESSAGE//$'\r'/'\r'}"
TAG_MESSAGE="$TAG_MESSAGE" | sed "s/\"/'/g"
# End sanitization
echo "RELEASE_BODY<<EOF" >> $GITHUB_ENV
echo "$TAG_MESSAGE" >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
- name: Notify Discord
uses: tyrrrz/action-http-request@v1
with:
url: ${{ secrets.DISCORD_WEBHOOK }}
method: POST
headers: |
Content-Type: application/json; charset=UTF-8
body: |
{
"username": "Notifications",
"avatar_url": "https://raw.githubusercontent.com/${{ github.event.repository.full_name }}/master/favicon.png",
"content": "**${{ github.event.repository.name }}** new version released!\nVersion: `${{ github.ref_name }}`\n\n${{ env.RELEASE_BODY }}\n\nDownload: <${{ github.event.repository.html_url }}/releases/download/${{ github.ref_name }}/${{ env.PACKAGE_NAME }}.apk>"
}