Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
118 changes: 118 additions & 0 deletions .github/workflows/_ci-ubuntu.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
on:
workflow_call:
inputs:
python-versions:
required: true
type: string
smoke-test-python-versions:
type: string
required: true
additional-args:
type: string
required: false
default: ""
additional-maps:
type: boolean
default: true
upload-package:
type: boolean
required: true
upload-replace-latest:
type: boolean
required: true
upload-docker:
type: boolean
required: true

secrets:
DOCKERHUB_USERNAME:
required: false
DOCKERHUB_TOKEN:
required: false
AWS_ACCESS_KEY_ID:
required: false
AWS_ACCESS_KEY:
required: false

jobs:
ubuntu:
name: Ubuntu CI/CD
runs-on: self-hosted:ubuntu-gpu
container:
image: carlasim/carla-builder:ue4-20.04
options: --runtime=nvidia --gpus all -e NVIDIA_DRIVER_CAPABILITIES=all --user 1001:1001 --volume /home/jenkins/UnrealEngine_4.26:/unreal-engine
env:
UE4_ROOT: /unreal-engine

steps:

- name: Checkout repository
uses: actions/checkout@v4

- name: Download content
run: ./Update.sh

- name: Setup
run: make setup ARGS="--python-version=${{ inputs.python-versions }} --ros2 --chrono"

- name: Build LibCarla
run: make LibCarla ARGS="--python-version=${{ inputs.python-versions }} --ros2 --chrono"

- name: Build PythonAPI
run: make PythonAPI ARGS="--python-version=${{ inputs.python-versions }} --ros2 --chrono"

- name: Build CarlaUE4Editor
run: make CarlaUE4Editor ARGS="--python-version=${{ inputs.python-versions }} --ros2 --chrono"

- name: Build Package
run: |
if [ "${{ inputs.upload-package }}" = "false" ]; then
ZIP="--no-zip"
fi
make package ARGS="--python-version=${{ inputs.python-versions }} --ros2 --chrono $ZIP"

- name: Build AdditionalMaps Package
if: inputs.additional-maps == true
run: |
make package ARGS="--packages=AdditionalMaps,Town06_Opt,Town07_Opt,Town11,Town12,Town13,Town15 --target-archive=AdditionalMaps --clean-intermediate --python-version=${{ inputs.python-versions }}"

- name: Make C++ examples
run: make examples

- name: Run unit tests
run: make check.PythonAPI ARGS="--xml --python-version=${{ inputs.python-versions }}"

- name: Run smoke tests
run: |
./Dist/CARLA_*/LinuxNoEditor/CarlaUE4.sh --ros2 -RenderOffScreen --carla-rpc-port=3654 --carla-streaming-port=0 -nosound > CarlaUE4.log &
make smoke_tests ARGS="--xml --python-version=${{ inputs.smoke-test-python-versions }}"
make run-examples ARGS="localhost 3654"

- name: Configure Backblaze
if: inputs.upload-package == true
run: |
aws configure set aws_access_key_id ${{ secrets.AWS_ACCESS_KEY_ID }}
aws configure set aws_secret_access_key ${{ secrets.AWS_ACCESS_KEY }}

- name: Upload package
if: inputs.upload-package == true
id: upload_step
run: |
if [ "${{ inputs.upload-replace-latest }}" = "true" ]; then
ARGS="--replace-latest"
fi
make deploy ARGS="$ARGS --summary-output $GITHUB_OUTPUT"

- name: Write summary
if: inputs.upload-package == true
run: |
echo "## [Ubuntu] CARLA CI/CD Summary" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "- CARLA Package: ${{ steps.upload_step.outputs.package_uri }}" >> $GITHUB_STEP_SUMMARY
echo "- Additional Maps: ${{ steps.upload_step.outputs.additional_maps_package_uri }}" >> $GITHUB_STEP_SUMMARY

# - name: Login to Docker Hub
# uses: docker/login-action@v3
# with:
# username: ${{ vars.DOCKERHUB_USERNAME }}
# password: ${{ secrets.DOCKERHUB_TOKEN }}
110 changes: 110 additions & 0 deletions .github/workflows/_ci-windows.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
on:
workflow_call:
inputs:
python-versions:
required: true
type: string
additional-args:
type: string
required: false
default: ""
additional-maps:
type: boolean
default: true
upload-package:
type: boolean
required: true
upload-replace-latest:
type: boolean
required: true

secrets:
DOCKERHUB_USERNAME:
required: false
DOCKERHUB_TOKEN:
required: false
AWS_ACCESS_KEY_ID:
required: false
AWS_ACCESS_KEY:
required: false

jobs:
windows:
name: Windows CI/CD
runs-on: self-hosted:windows
env:
UE4_ROOT: C:\Users\jenkins\unreal-engine
VCVARS: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Download content
run: |
call "%VCVARS%"
call Update.bat
shell: cmd

- name: Setup
run: |
call "%VCVARS%"
make setup ARGS="--chrono"
shell: cmd

- name: Build LibCarla
run: |
call "%VCVARS%"
make LibCarla
shell: cmd

- name: Build PythonAPI
run: |
call "%VCVARS%"
make PythonAPI
shell: cmd

- name: Build CarlaUE4Editor
run: |
call "%VCVARS%"
make CarlaUE4Editor ARGS="--chrono"
shell: cmd

- name: Build Package
run: |
call "%VCVARS%"
IF "${{ inputs.upload-package }}"=="false" SET ZIP=--no-zip
make package ARGS="--chrono %ZIP%"
shell: cmd

- name: Build AdditionalMaps Package
if: inputs.additional-maps == true
run: |
call "%VCVARS%"
make package ARGS="--chrono --packages=AdditionalMaps,Town06_Opt,Town07_Opt,Town11,Town12,Town13,Town15 --target-archive=AdditionalMaps --clean-intermediate"
shell: cmd

- name: Configure Backblaze
if: inputs.upload-package == true
run: |
aws configure set aws_access_key_id ${{ secrets.AWS_ACCESS_KEY_ID }}
aws configure set aws_secret_access_key ${{ secrets.AWS_ACCESS_KEY }}
shell: cmd

- name: Upload package
if: inputs.upload-package == true
id: upload_step
run: |
call "%VCVARS%"
IF "${{ inputs.upload-replace-latest }}"=="true" SET REPLACE_LATEST=--replace-latest
make deploy ARGS="%REPLACE_LATEST% --workdir %CD% --summary-output %GITHUB_OUTPUT%"
shell: cmd

- name: Write summary
if: inputs.upload-package == true
run: |
echo ## [Windows] CARLA CI/CD Summary>> %GITHUB_STEP_SUMMARY%
echo.>> %GITHUB_STEP_SUMMARY%
echo - CARLA Package: ${{ steps.upload_step.outputs.package_uri }}>> %GITHUB_STEP_SUMMARY%
echo - Additional Maps: ${{ steps.upload_step.outputs.additional_maps_package_uri }}>> %GITHUB_STEP_SUMMARY%
shell: cmd
54 changes: 54 additions & 0 deletions .github/workflows/ue4_content.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
name: UE4-Content

on:
workflow_dispatch:
inputs:
branch:
description: "Specify the target branch for the content build"
required: true
default: "master"
type: string

jobs:
content:
name: Content Build
runs-on: self-hosted
container:
image: carlasim/carla-builder:ue4-20.04
options: --user 1001:1001
credentials:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

steps:

- name: Checkout repository
run: |
git clone -b ${{ inputs.branch }} https://bitbucket.org/carla-simulator/carla-content.git

- name: Make package
run: |
cd carla-content
make dist

- name: Configure Backblaze
run: |
aws configure set aws_access_key_id ${{ secrets.AWS_ACCESS_KEY_ID }}
aws configure set aws_secret_access_key ${{ secrets.AWS_ACCESS_KEY }}

- name: Upload package
id: upload_step
run: |
cd carla-content
make upload-dist

- name: Write summary
run: |
echo "## CARLA Content CI/CD Summary" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "- Content package: ${{ steps.upload_step.outputs.package_uri }}" >> $GITHUB_STEP_SUMMARY

- name: Post Checkout repository
if: always()
run: |
rm -rf carla-content
40 changes: 40 additions & 0 deletions .github/workflows/ue4_dev.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: UE4-Dev

on:
push:
branches:
- ue4-dev
workflow_dispatch: # Allow manual trigger

concurrency:
group: push-${{ github.ref }}
cancel-in-progress: true

jobs:
ubuntu-dev:
name: Ubuntu Dev
uses: ./.github/workflows/_ci-ubuntu.yml
secrets:
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_ACCESS_KEY: ${{ secrets.AWS_ACCESS_KEY }}
with:
python-versions: "3.10,3.11,3.12"
smoke-test-python-versions: "3.12"
additional-maps: true
upload-package: true
upload-replace-latest: true
upload-docker: false

windows-dev:
name: Windows Dev
uses: ./.github/workflows/_ci-windows.yml
secrets:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_ACCESS_KEY: ${{ secrets.AWS_ACCESS_KEY }}
with:
python-versions: "3.10,3.11,3.12"
additional-maps: true
upload-package: true
upload-replace-latest: true
32 changes: 32 additions & 0 deletions .github/workflows/ue4_pr.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: UE4-PR

on:
pull_request:
branches:
- ue4-dev
types: [opened, synchronize, reopened]

concurrency:
group: pr-${{ github.event.pull_request.number }}
cancel-in-progress: true

jobs:
ubuntu-pr:
name: Ubuntu PR
uses: ./.github/workflows/_ci-ubuntu.yml
with:
python-versions: "3.12"
smoke-test-python-versions: "3.12"
additional-maps: false
upload-package: false
upload-replace-latest: false
upload-docker: false

windows-pr:
name: Windows PR
uses: ./.github/workflows/_ci-windows.yml
with:
python-versions: "3.12"
additional-maps: false
upload-package: false
upload-replace-latest: false
Loading