问题描述
今天才开始学习CI/CD.不知道今天以前码头工人是什么.我可以通过Unity项目使CD在CircleCI上工作.所有的运行命令都在docker容器内发生.
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
无法弄清楚如何使用GitHub Actions做到这一点.我可以运行docker映像,但无法弄清楚如何在其中运行命令.我所有的命令都在Ubuntu VM级别运行.我的测试是运行ls
命令以查看它是否正在从不是的docker容器中运行.
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
推荐答案
弄清楚了.您可以为作业指定container
.我的整个工作流程如下:
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
这篇关于GitHub动作:如何在Docker容器中运行命令的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!