Skip to content

chore: CHANGES

chore: CHANGES #48

Workflow file for this run

name: PR Test & Analysis
on:
push:
branches:
- main
- dev
pull_request:
types: [ opened, reopened, synchronize ]
branches:
- main
- dev
concurrency:
group: ci-pr-${{ github.head_ref }}
cancel-in-progress: true
jobs:
fetch-and-diff:
runs-on: ubuntu-latest
outputs:
modified_modules: ${{ steps.determine_modules.outputs.modules }}
steps:
- name: Git Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set Modules
run: |
echo "MODULES=demo demo1" >> $GITHUB_ENV
- name: Fetch Base Branch
run: git fetch origin +refs/heads/${{ github.ref_name }}:refs/remotes/origin/${{ github.ref_name }}
- name: Get Modified Files
run: |
MODIFIED_FILES=$(git diff --name-only ${{ github.event.before }} ${{ github.sha }} | tr '\n' ' ')
echo $MODIFIED_FILES
echo "MODIFIED_FILES=$MODIFIED_FILES" >> $GITHUB_ENV
- name: Determine Modified Modules
id: determine_modules
run: |
IFS=' ' read -r -a MODIFIED_FILES_ARRAY <<< "${{ env.MODIFIED_FILES }}"
MODIFIED_MODULES=()
echo "----------------------------------"
for FILE in "${MODIFIED_FILES_ARRAY[@]}"; do
for MODULE in $MODULES; do
if [[ "$FILE" == "$MODULE"* ]]; then
if ! [[ " ${MODIFIED_MODULES[@]} " =~ " ${MODULE} " ]]; then
echo "changes=true" >> $GITHUB_ENV
echo "Add Module($MODULE)"
MODIFIED_MODULES+=("$MODULE")
fi
fi
done
done
MODULE_MATRIX=""
for MODULE in "${MODIFIED_MODULES[@]}"; do
echo ${MODULE}
if [ -n "$MODULE_MATRIX" ]; then
MODULE_MATRIX+=",\"${MODULE}\""
else
MODULE_MATRIX+="\"${MODULE}\""
fi
done
MODULE_MATRIX="[$MODULE_MATRIX]"
echo "MODIFIED_MODULE_MATRIX=$MODULE_MATRIX"
echo "modules=$(echo $MODULE_MATRIX)" >> $GITHUB_OUTPUT
- name: Login to DockerHub
uses: docker/login-action@v3
if: env.changes =='true'
with:
username: ${{ vars.DOCKERHUB_ID }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build
if: env.changes =='true'
run: |
RAW_MODULES=${{ steps.determine_modules.outputs.modules }}
MODULES=${RAW_MODULES//[\[\]]/}"
IFS=',' read -ra MODIFIED_MODULES <<< "$MODULES"
for MODULE in "${MODIFIED_MODULES[@]}"; do
docker build -f ${MODULE}/Dockerfile -t jerryworld/${MODULE}:${{ github.sha }} .
docker push jerryworld/${MODULE}:${{ github.sha }}
done
push-manifest:
name: Push Manifest
needs: fetch-and-diff
runs-on: ubuntu-latest
strategy:
matrix:
module: ${{ fromJSON(needs.fetch-and-diff.outputs.modified_modules) }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
repository: jerry-world/k8s-manifest-test
ref: refs/heads/main
token: ${{ secrets.GIT_TOKEN }}
- name: Update Patch
run: |
echo "UPDATE Target : ${{ matrix.module }}"
IFS=' ' read -r -a MODIFIED_MODULES <<< "${{ matrix.module }}"
for MODULE in "${MODIFIED_MODULES[@]}"; do
cd apps/${MODULE}/overlay/${{ github.ref_name }}
after_sha="${{ github.sha }}"
echo "this revision : ${after_sha}"
sed -i 's|\(image:[[:space:]]*[^:]*:[^[:space:]]*\)\(........\)$|\1'${after_sha:0:8}'|g' deployment-patch.yaml
git add -A
git commit -m "update manifest demo-dev"
done
git config --global user.email "[email protected]"
git config --global user.name "jerry-world"
git push