Skip to content

Commit

Permalink
Added module logic to docker_context.sh
Browse files Browse the repository at this point in the history
  • Loading branch information
Mark Do committed Feb 7, 2024
1 parent 4b4a777 commit 7a7cb7c
Show file tree
Hide file tree
Showing 7 changed files with 150 additions and 16 deletions.
6 changes: 6 additions & 0 deletions .github/templates/docker_context/action.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
name: Generate Docker Environment

inputs:
modified-modules:
description: 'Space deliminated list of modified modules'
required: true
default: ''

outputs:
docker_matrix:
description: "list of docker compose services"
Expand Down
17 changes: 12 additions & 5 deletions .github/templates/docker_context/docker_context.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,25 @@ set -e

# Find docker compose files in 'modules' directory
modules=$(find modules -maxdepth 1 -name "docker-compose*")
echo $modules
echo ================================

# Initialize an empty array for JSON objects
json_objects=()

# Loop through each module
while read -r module; do

# Retrieve docker compose service names
services=$(docker-compose -f "$module" config --services)
module_out=$(echo "$module" | sed -n 's/modules\/docker-compose\.\(.*\)\.yaml/\1/p')

# Only work with modules that are modified
if [[ $1 = *$module_out* ]]; then
echo "$module_out modified"
else
echo "$module_out not changed"
continue
fi

# Loop through each service
while read -r service_out; do
# Construct JSON object for each service with module and service name
Expand All @@ -31,7 +38,7 @@ done <<< "$modules"

# Convert the array of JSON objects to a single JSON array
json_services=$(jq -nc '[( $ARGS.positional[] | fromjson )]' --args -- ${json_objects[*]})
echo "docker_matrix=$(echo $json_services | jq -c '{include: .}')" #>> #$GITHUB_OUTPUT
echo "docker_matrix=$(echo $json_services | jq -c '{include: .}')" >> #$GITHUB_OUTPUT

################# Setup Docker Registry and Repository Name #################
# Docker Registry to pull/push images
Expand All @@ -40,5 +47,5 @@ REGISTRY_URL="ghcr.io/watonomous/wato_monorepo"
REGISTRY=$(echo "$REGISTRY_URL" | sed 's|^\(.*\)/.*$|\1|')
REPOSITORY=$(echo "$REGISTRY_URL" | sed 's|^.*/\(.*\)$|\1|')

echo "registry=$REGISTRY" #>> $GITHUB_OUTPUT
echo "repository=$REPOSITORY" #>> $GITHUB_OUTPUT
echo "registry=$REGISTRY" >> $GITHUB_OUTPUT
echo "repository=$REPOSITORY" >> $GITHUB_OUTPUT
91 changes: 91 additions & 0 deletions .github/workflows/build_and_unitest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,98 @@ on:
- main

jobs:
# ------------------------------------------------------------------------
# Event `pull_request`: Compare the last commit of the main branch or last
# remote commit of the PR branch -> to the current commit of a PR branch.
# ------------------------------------------------------------------------
get_modified_modules:
runs-on: ubuntu-latest
name: Get changed files
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # OR "2" -> To retrieve the preceding commit.

- name: Find changed files inside action folder
id: changed-files-action
uses: tj-actions/changed-files@v42
with:
files: src/action/**

- name: Get changed files inside interfacing folder
id: changed-files-interfacing
uses: tj-actions/changed-files@v42
with:
files: src/interfacing/**

- name: Get changed files inside perception folder
id: changed-files-perception
uses: tj-actions/changed-files@v42
with:
files: src/perception/**

- name: Get changed files inside samples folder
id: changed-files-samples
uses: tj-actions/changed-files@v42
with:
files: src/samples/**

- name: Get changed files inside simulation folder
id: changed-files-simulation
uses: tj-actions/changed-files@v42
with:
files: src/simulation/**

- name: Get changed files inside world_modeling folder
id: changed-files-world_modeling
uses: tj-actions/changed-files@v42
with:
files: src/world_modeling/**

- name: Update CHANGED_MODULES for action
if: steps.changed-files-action.outputs.any_changed == 'true'
run: |
echo "Detected action changes"
echo "CHANGED_MODULES=$CHANGED_MODULES action" >> $GITHUB_ENV
- name: Update CHANGED_MODULES for interfacing
if: steps.changed-files-interfacing.outputs.any_changed == 'true'
run: |
echo "Detected interfacing changes"
echo "CHANGED_MODULES=$CHANGED_MODULES interfacing" >> $GITHUB_ENV
- name: Update CHANGED_MODULES for perception
if: steps.changed-files-perception.outputs.any_changed == 'true'
run: |
echo "Detected perception changes"
echo "CHANGED_MODULES=$CHANGED_MODULES perception" >> $GITHUB_ENV
- name: Update CHANGED_MODULES for samples
if: steps.changed-files-samples.outputs.any_changed == 'true'
run: |
echo "Detected samples changes"
echo "CHANGED_MODULES=$CHANGED_MODULES samples" >> $GITHUB_ENV
- name: Update CHANGED_MODULES for simulations
if: steps.changed-files-simulations.outputs.any_changed == 'true'
run: |
echo "Detected simulations changes"
echo "CHANGED_MODULES=$CHANGED_MODULES simulations" >> $GITHUB_ENV
- name: Update CHANGED_MODULES for world_modeling
if: steps.changed-files-world_modeling.outputs.any_changed == 'true'
run: |
echo "Detected world_modeling changes"
echo "CHANGED_MODULES=$CHANGED_MODULES world_modeling" >> $GITHUB_ENV
- name: List all changed files
run: |
echo "CHANGED_MODULES: $CHANGED_MODULES"
setup-environment:
name: Setup environment
runs-on: ubuntu-latest
needs: get_modified_modules

outputs:
docker_matrix: ${{ steps.docker-environment.outputs.docker_matrix }}
Expand All @@ -31,6 +120,8 @@ jobs:
- name: Generate Docker Environment
id: docker-environment
uses: "./.github/templates/docker_context"
with:
modified-modules: {{env.CHANGED_MODULES}}

- name: Generate GitHub Environment
id: github-environment
Expand Down
46 changes: 38 additions & 8 deletions .github/workflows/temp_ci_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@ on:
- 'ci-specific-modules'

jobs:
changed_files:
# ------------------------------------------------------------------------
# Event `pull_request`: Compare the last commit of the main branch or last
# remote commit of the PR branch -> to the current commit of a PR branch.
# ------------------------------------------------------------------------
runs-on: ubuntu-latest # windows-latest || macos-latest
name: Test changed-files
# ------------------------------------------------------------------------
# Event `pull_request`: Compare the last commit of the main branch or last
# remote commit of the PR branch -> to the current commit of a PR branch.
# ------------------------------------------------------------------------
get_modified_modules:
runs-on: ubuntu-latest
name: Get changed files
steps:
- uses: actions/checkout@v4
with:
Expand Down Expand Up @@ -93,4 +93,34 @@ jobs:
- name: List all changed files
run: |
echo "CHANGED_MODULES: $CHANGED_MODULES"
echo "CHANGED_MODULES: $CHANGED_MODULES"
setup-environment:
name: Setup environment
runs-on: ubuntu-latest
needs: get_modified_modules

outputs:
docker_matrix: ${{ steps.docker-environment.outputs.docker_matrix }}
registry: ${{ steps.docker-environment.outputs.registry }}
repository: ${{ steps.docker-environment.outputs.repository }}
source_branch: ${{ steps.github-environment.outputs.source_branch }}
target_branch: ${{ steps.github-environment.outputs.target_branch }}

steps:
- name: Checkout Repository
uses: actions/checkout@v3

- name: Setup Watod Environment
run: ./watod_scripts/watod-setup-env.sh
shell: bash

- name: Generate Docker Environment
id: docker-environment
uses: "./.github/templates/docker_context"
with:
modified-modules: {{env.CHANGED_MODULES}}

- name: Generate GitHub Environment
id: github-environment
uses: "./.github/templates/github_context"
2 changes: 1 addition & 1 deletion src/action/test.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3
4
2 changes: 1 addition & 1 deletion src/interfacing/test2.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3
2
2 changes: 1 addition & 1 deletion src/world_modeling/test3.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
4
1

0 comments on commit 7a7cb7c

Please sign in to comment.