12

Just started learning about CI/CD today. Didn't know what docker was previous to today. I was able to get CD working on CircleCI with my Unity project. All of the run commands were happening inside the docker container.

version: 2.1
executors:
  unity:
    docker:
      # https://hub.docker.com/r/gableroux/unity3d/tags
      - image: gableroux/unity3d:2018.2.21f1
jobs:
  build-test:
    executor: unity
    steps:
      - checkout

      # Install zip
      - run: apt-get update
      - run: apt-get install zip -y

      # Decrypt the license file
      - run: openssl aes-256-cbc -d -in .circleci/Unity_v2018.x.ulf.enc -k ${UNITY_LICENSE_DECRYPT_KEY} >> .circleci/Unity_v2018.x.ulf

      # Activate unity
      - run: /opt/Unity/Editor/Unity -quit -batchmode -nographics -silent-crashes -logFile -manualLicenseFile .circleci/Unity_v2018.x.ulf || exit 0

      # Build Windows and OSX
      - run: /opt/Unity/Editor/Unity -quit -batchmode -nographics -silent-crashes -noUpm -logFile -projectPath . -buildWindows64Player ./bin-win64/CISample.exe
      - run: /opt/Unity/Editor/Unity -quit -batchmode -nographics -silent-crashes -noUpm -logFile -projectPath . -buildOSXUniversalPlayer ./bin-osx/CISample.app      

      # Zip builds
      - run: zip -r CISampleWin64Binary.zip ./bin-win64
      - run: zip -r CISampleOSXBinary.zip ./bin-osx

      # Store builds
      - store_artifacts:
          path: ./CISampleWin64Binary.zip
      - store_artifacts:
          path: ./CISampleOSXBinary.zip

workflows:
  version: 2
  build:
    jobs:
      - build-test

Can't figure out how to do this with GitHub Actions. I can run a docker image but I can't figure out how to run commands within it. All of my commands are run at Ubuntu VM level. My test is to run a ls command to see if it's running from the docker container which it is not.

Here a few of the things I have tried.

name: CI
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - run: |
          docker run gableroux/unity3d:2018.2.21f1 bash
          ls
name: CI
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: docker://gableroux/unity3d:2018.2.21f1
      - run: ls

1 Answer 1

28

Figured it out. You can specify container for a job. My full workflow looks like this:

name: CI
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    container: gableroux/unity3d:2018.2.21f1
    steps:
        - name: Checkout Project
          uses: actions/checkout@v1

        - name: Intall Zip
          run: | 
            apt-get update
            apt-get install zip -y

        - name: Decrypt the license file
          run: openssl aes-256-cbc -d -in .github/Unity_v2018.x.ulf.enc -k ${{ secrets.UNITY_LICENSE_DECRYPT_KEY }} >> .github/Unity_v2018.x.ulf

        # Activate unity
        - name: Activate Unity
          run: /opt/Unity/Editor/Unity -quit -batchmode -nographics -silent-crashes -logFile -manualLicenseFile .github/Unity_v2018.x.ulf || exit 0

        # Build Windows and OSX
        - name: Build Windows Player
          run: /opt/Unity/Editor/Unity -quit -batchmode -nographics -silent-crashes -noUpm -logFile -projectPath . -buildWindows64Player ./bin-win64/CISample.exe
        - name: Build OSX Player
          run: /opt/Unity/Editor/Unity -quit -batchmode -nographics -silent-crashes -noUpm -logFile -projectPath . -buildOSXUniversalPlayer ./bin-osx/CISample.app      

        - name: Zip Builds
          run: |
            zip -r CISampleWin64Binary.zip ./bin-win64
            zip -r CISampleOSXBinary.zip ./bin-osx

        - name: Archive Windows Build
          uses: actions/upload-artifact@v1
          with:
            name: CISampleWin64Binary
            path: ./CISampleWin64Binary.zip

        - name: Archive Mac Build
          uses: actions/upload-artifact@v1
          with:
            name: CISampleOSXBinary
            path: ./CISampleOSXBinary.zip
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.