Giter Site home page Giter Site logo

unity-actions's Introduction

Unity Actions

Actions status


The fastest and easiest way to automatically test and build any Unity project!


Supported versions

It's generally considered good practice to use the same Unity version for Unity Actions as you do to develop your project.

Unity Actions are based on the unity3d images from GabLeRoux. Any version in this list can be used to test and build projects.

Project Status

Checkout

Description Done Status
Checkout project Native support

Configure

Description Done Status
Request activation file Actions status
Activate license Actions status
Return license Actions status
Caching dependencies Native support

Test

Description Done Status
Test edit mode Actions status
Test play mode Actions status
Test all in one Actions status

Build

Description Done Status
Build for WebGL Actions status
Build for Windows Actions status
Build for Linux Actions status
Build for MacOS Actions status
Build for Android In progress
Build for iOS Actions status
Build for Windows store In progress
Build for PS4 In progress
Build for XboxOne In progress
Build for tvOS In progress
Build for Switch In progress

Setup

Mental model

There are two parts to setting up Unity Actions;

  • Configuring a license
  • Setting up a workflow

First time using GitHub Actions?

Read the official documentation on how to setup a workflow.

Any subsequent steps assume you have read the above.

Setting up license

All actions utilize an installment of Unity, and as such need to be activated.

To set up your license for use in Unity Actions, create a file called .github/workflows/activate.yml in your repository and follow the steps for either personal or professoinal license below.

Personal license
  1. Request your activation file for usage on GitHub using Request Manual Activation File.
  2. Request your license on license.unity3d.com.
  3. Open Github > <Your repository> > Settings > Secrets
  4. Create a secret called UNITY_LICENSE and add the contents of the obtained license file.
Professional license
  1. Open Github > <Your repository> > Settings > Secrets
  2. Create the following secrets;
    • UNITY_SERIAL - (Add the code that looks like XX-XXXX-XXXX-XXXX-XXXX-XXXX)
    • UNITY_EMAIL - (Add the email address that you use to login to Unity)
    • UNITY_PASSWORD - (Add the password that you use to login to Unity)
Optional steps
  • Verify your license using Activate and for pro licenses also Return License. This is to free up the license allocation after usage.

    Note: Test runner and Builder already include these steps.

Setting up a workflow

Setting up a workflow is easy!

Create a file called .github/workflows/main.yml in your repository and configure the following steps;

  1. Checkout a repository using Checkout.
  2. Cache your library folder using Cache.
  3. Configure your test job using Test Runner.
  4. Configure your build job using Builder.
  5. Deploy your application.

Detailed instructions for each step can be found in the corresponding actions.

Simple example

Below is a simple example. It is recommended to start from here.

This example assumes that your Unity project is in the root of your repository.

Note: this repository tests this workflow

name: Actions 😎

on:
  pull_request: {}
  push: { branches: [master] }

env:
  UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }}

jobs:
  build:
    name: Build my project ✨
    runs-on: ubuntu-latest
    steps:
    
      # Checkout
      - name: Checkout repository
        uses: actions/checkout@v2
        with:
          lfs: true
    
      # Cache
      - uses: actions/[email protected]
        with:
          path: Library
          key: Library

      # Test
      - name: Run tests
        uses: webbertakken/[email protected]
        with:
          unityVersion: 2019.2.11f1

      # Build
      - name: Build project
        uses: webbertakken/[email protected]
        with:
          unityVersion: 2019.2.11f1
          targetPlatform: WebGL 

      # Output 
      - uses: actions/upload-artifact@v1
        with:
          name: Build
          path: build

Advanced example

To get an idea of how to create a more advanced workflows, have a look at the example below.

Note: this repository tests this workflow

name: Actions 😎

on:
  pull_request: {}
  push: { branches: [master] }

env:
  UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }}

jobs:
  buildAndTestForSomePlatforms:
    name: Build for ${{ matrix.targetPlatform }} on version ${{ matrix.unityVersion }}
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        projectPath:
          - test-project
        unityVersion:
          - 2019.2.11f1
        targetPlatform:
          - StandaloneOSX # Build a macOS standalone (Intel 64-bit).
          - StandaloneWindows64 # Build a Windows 64-bit standalone.
          - StandaloneLinux64 # Build a Linux 64-bit standalone.
          - iOS # Build an iOS player.
          - WebGL # WebGL.
    steps:
      - uses: actions/checkout@v2
        with:
          lfs: true
      - uses: actions/[email protected]
        with:
          path: ${{ matrix.projectPath }}/Library
          key: Library-${{ matrix.projectPath }}-${{ matrix.targetPlatform }}
          restore-keys: |
            Library-${{ matrix.projectPath }}-
            Library-
      - uses: webbertakken/[email protected]
        id: testRunner
        with:
          projectPath: ${{ matrix.projectPath }}
          unityVersion: ${{ matrix.unityVersion }}
      - uses: actions/upload-artifact@v1
        with:
          name: Test results (all modes)
          path: ${{ steps.testRunner.outputs.artifactsPath }}
      - uses: webbertakken/[email protected]
        with:
          projectPath: ${{ matrix.projectPath }}
          unityVersion: ${{ matrix.unityVersion }}
          targetPlatform: ${{ matrix.targetPlatform }}
          customParameters: "-myParameter myValue -myBoolean -ThirdParameter andItsValue"
      - uses: actions/upload-artifact@v1
        with:
          name: Build
          path: build

Have any questions or comments? Feel free to create an issue!

Contributions

To contribute please follow the contribution guide to get set up quickly.

This repository, and all related actions are open for your suggested changes!

Feel free to submit a pull request with the suggested changes.

Licence

This repository is licensed under the MIT license.

This also includes contributions from the community.

unity-actions's People

Contributors

webbertakken avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.