GitHub Action: 如何在 Docker 容器内运行命令

11

今天刚开始学习有关CI/CD的知识。在今天之前不知道什么是docker。我已经成功将我的Unity项目在CircleCI上实现了CD。所有的运行命令都在docker容器内部进行。

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

我无法通过GitHub Actions来完成此操作。我可以运行一个Docker镜像,但是我不知道如何在其中运行命令。所有的命令都在Ubuntu虚拟机层级运行。我的测试是运行ls命令,以查看是否从Docker容器中运行,但实际上并没有。

以下是我尝试过的几个方法。

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个回答

26

已经搞定了。你可以为作业指定container。我的完整工作流程如下:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接