Install android in all instances #99
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: Build | |
on: [push, pull_request] | |
jobs: | |
build: | |
name: build-${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [windows-latest, macos-latest, ubuntu-latest] | |
fail-fast: false | |
steps: | |
- name: Clone repository | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Setup .NET Core SDK ${{ matrix.dotnet-version }} | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: '8.0.x' | |
- name: Setup Java | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'microsoft' | |
java-version: '11' | |
- name: Disable annotations | |
run: echo "::remove-matcher owner=csc::" | |
- name: install wine64 on linux | |
run: | | |
sudo apt install p7zip-full curl | |
sudo dpkg --add-architecture i386 | |
sudo mkdir -pm755 /etc/apt/keyrings | |
sudo wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key | |
sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/jammy/winehq-jammy.sources | |
sudo apt update && sudo apt install --install-recommends winehq-stable | |
if: runner.os == 'Linux' | |
- name: Install Arial Font | |
run: | | |
echo "ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true" | sudo debconf-set-selections | |
sudo apt install -y ttf-mscorefonts-installer | |
sudo fc-cache | |
fc-match Arial | |
if: runner.os == 'Linux' | |
- name: install wine64 on macos | |
run: brew install wine-stable p7zip | |
if: runner.os == 'macOS' | |
- name: Setup Wine | |
run: wget -qO- https://monogame.net/downloads/net8_mgfxc_wine_setup.sh | bash | |
if: runner.os != 'Windows' | |
# Not working yet they crash | |
# - name: Test Wine | |
# run: wine64 dotnet --info | |
# env: | |
# WINEPREFIX: /home/runner/.winemonogame | |
# if: runner.os == 'Linux' | |
# Not working yet they crash | |
# - name: Test Wine | |
# run: wine64 dotnet --info | |
# env: | |
# WINEPREFIX: /Users/runner/.winemonogame | |
# if: runner.os == 'macOS' | |
- name: Download dotnet-install.sh | |
run: | | |
wget https://dot.net/v1/dotnet-install.sh | |
chmod u+x dotnet-install.sh | |
ls -la | |
working-directory: ${{github.workspace}} | |
if: runner.os != 'Windows' | |
- name: Install x64 dotnet | |
run: ${{github.workspace}}/dotnet-install.sh --architecture x64 --install-dir ${{github.workspace}}/dotnet64 --version latest | |
working-directory: ${{github.workspace}} | |
if: runner.os != 'Windows' | |
- name: Install required workloads | |
run: | | |
if [ "$RUNNER_OS" == "Linux" ]; then | |
dotnet.exe workload install android | |
${{github.workspace}}/dotnet64/dotnet workload install android | |
elif [ "$RUNNER_OS" == "Windows" ]; then | |
dotnet.exe workload install android ios macos | |
else | |
dotnet.exe workload install android | |
${{github.workspace}}/dotnet64/dotnet workload install android ios macos | |
fi | |
shell: bash | |
- name: Build | |
run: ${{github.workspace}}/dotnet64/dotnet run --project build/Build.csproj -- --target=Default | |
if: runner.os != 'Windows' | |
- name: Build | |
run: dotnet run --project build/Build.csproj -- --target=Default | |
if: runner.os == 'Windows' | |
- name: Build Tests | |
run: dotnet build Tools/MonoGame.Tools.Tests/MonoGame.Tools.Tests.csproj | |
- name: Test | |
run: ${{github.workspace}}/dotnet64/dotnet test artifacts/Tests/Tools/Release/MonoGame.Tools.Tests.dll --blame-hang-timeout 1m | |
env: | |
DOTNET_ROOT: ${{github.workspace}}/dotnet64 | |
MGFXC_WINE_PATH: /home/runner/.winemonogame | |
if: runner.os == 'Linux' | |
#Not working yet they time out | |
- name: Test | |
run: ${{github.workspace}}/dotnet64/dotnet test artifacts/Tests/Tools/Release/MonoGame.Tools.Tests.dll --blame-hang-timeout 1m | |
env: | |
DOTNET_ROOT: ${{github.workspace}}/dotnet64 | |
MGFXC_WINE_PATH: /Users/runner/.winemonogame | |
if: runner.os == 'macOS' | |
- name: Test | |
run: dotnet test test artifacts/Tests/Tools/Release/MonoGame.Tools.Tests.dll --blame-hang-timeout 1m | |
if: runner.os == 'Windows' | |
- name: Expose GitHub Runtime | |
uses: crazy-max/ghaction-github-runtime@v3 | |
- name: Upload Artifacts | |
run: dotnet run --project build/Build.csproj -- --target=UploadArtifacts | |
env: | |
ACTIONS_RUNTIME_TOKEN: ${{ env.ACTIONS_RUNTIME_TOKEN }} | |
ACTIONS_RUNTIME_URL: "${{ env.ACTIONS_RUNTIME_URL }}" | |
deploy: | |
name: Deploy | |
needs: [ build ] | |
runs-on: ubuntu-latest | |
if: ${{ github.event_name == 'push' }} | |
permissions: | |
packages: write | |
contents: write | |
steps: | |
- name: Clone Repository | |
uses: actions/checkout@v4 | |
- name: Setup .NET ${{ matrix.dotnet-version }} | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: '8.0.x' | |
- name: Expose GitHub Runtime | |
uses: crazy-max/ghaction-github-runtime@v3 | |
- name: Push Nugets | |
run: dotnet run --project build/Build.csproj -- --target=Deploy | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }} | |
- name: Make a Release | |
if: github.ref_type == 'tag' | |
uses: ncipollo/release-action@v1 | |
with: | |
name: 'MonoGame ${{ github.ref_name }}' | |
tag: ${{ github.ref_name }} | |
allowUpdates: true | |
removeArtifacts: true | |
artifacts: "nugets/*.nupkg" | |
token: ${{ secrets.GITHUB_TOKEN }} |