今天就开始学习CI / CD。不知道今天以前码头工人是什么。我的Unity项目使CD可以在CircleCI上工作。所有的运行命令都在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 VM级别运行。我的测试是运行一个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
答案 0 :(得分:0)
弄清楚了。您可以为作业指定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