MediaProcessing/.github/workflows/main.yml

224 lines
7.8 KiB
YAML

name: Build Modules
on:
push:
branches:
- master
pull_request:
branches:
- master
workflow_dispatch:
jobs:
build-commoncode:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Check if code has changed
id: check-commoncode
run: |
if [[ $(git diff --name-only ${{ github.event.before }} ${{ github.event.after }} CommonCode/) ]]; then
echo "::set-output name=skip::false"
else
echo "::set-output name=skip::true"
fi
- name: Cache CommonCode Gradle dependencies
if: steps.check-commoncode.outputs.skip == 'false'
id: cache-gradle
uses: actions/cache@v2
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('CommonCode/gradle/wrapper/gradle-wrapper.properties') }}
- name: Build CommonCode
if: steps.cache-gradle.outputs.cache-hit != 'true'
run: |
cd CommonCode
chmod +x ./gradlew
./gradlew build
build-encode:
needs: build-commoncode
runs-on: ubuntu-latest
if: false
#if: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' }}
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Check if Encode has changed
id: check-encode
run: |
if [[ $(git diff --name-only ${{ github.event.before }} ${{ github.event.after }} Encode/) ]]; then
echo "::set-output name=changed::true"
else
echo "::set-output name=changed::false"
fi
- name: Cache CommonCode Gradle dependencies
id: cache-gradle
uses: actions/cache@v2
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('CommonCode/gradle/wrapper/gradle-wrapper.properties') }}
- name: Build Encode module
id: build-encode
run: |
if [[ "${{ steps.check-encode.outputs.changed }}" == "true" || "${{ github.event_name }}" == "push" || "${{ github.event_name }}" == "workflow_dispatch" ]]; then
cd Encode
chmod +x ./gradlew
./gradlew build
echo "Build completed"
else
echo "Encode has not changed. Skipping Encode module build."
echo "::set-output name=job_skipped::true"
fi
- name: Generate Docker image tag
id: docker-tag
run: echo "::set-output name=tag::$(date -u +'%Y.%m.%d')-$(uuidgen | cut -c 1-8)"
- name: Docker login
uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9
with:
username: ${{ secrets.DOCKER_HUB_NAME }}
password: ${{ secrets.DOCKER_HUB_TOKEN }}
- name: Build and push Docker image
if: (steps.build-encode.outputs.job_skipped != 'true' && github.event_name == 'push') || github.event_name == 'workflow_dispatch'
uses: docker/build-push-action@v2
with:
context: ./Encode
push: true
tags: |
bskjon/media-processing--encode:latest
bskjon/media-processing--encode:${{ github.sha }}
bskjon/media-processing--encode:${{ steps.docker-tag.outputs.tag }}
build-reader:
needs: build-commoncode
runs-on: ubuntu-latest
if: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' }}
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Check if Reader has changed
id: check-reader
run: |
if [[ $(git diff --name-only ${{ github.event.before }} ${{ github.event.after }} Reader/) ]]; then
echo "::set-output name=changed::true"
else
echo "::set-output name=changed::false"
fi
- name: Cache CommonCode Gradle dependencies
id: cache-gradle
uses: actions/cache@v2
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('CommonCode/gradle/wrapper/gradle-wrapper.properties') }}
- name: Build Reader module
id: build-reader
run: |
if [[ "${{ steps.check-reader.outputs.changed }}" == "true" || "${{ github.event_name }}" == "push" || "${{ github.event_name }}" == "workflow_dispatch" ]]; then
cd Reader
chmod +x ./gradlew
./gradlew build
echo "Build completed"
else
echo "Reader has not changed. Skipping Reader module build."
echo "::set-output name=job_skipped::true"
fi
- name: Generate Docker image tag
id: docker-tag
run: echo "::set-output name=tag::$(date -u +'%Y.%m.%d')-$(uuidgen | cut -c 1-8)"
- name: Docker login
uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9
with:
username: ${{ secrets.DOCKER_HUB_NAME }}
password: ${{ secrets.DOCKER_HUB_TOKEN }}
- name: Build and push Docker image
if: (steps.build-reader.outputs.job_skipped != 'true' && github.event_name == 'push') || github.event_name == 'workflow_dispatch'
uses: docker/build-push-action@v2
with:
context: ./Reader
push: true
tags: |
bskjon/mediaprocessing-reader:latest
bskjon/mediaprocessing-reader:${{ github.sha }}
bskjon/mediaprocessing-reader:${{ steps.docker-tag.outputs.tag }}
build-pymetadata:
if: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' }}
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Check if pyMetadata has changed
id: check-pymetadata
run: |
if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
echo "::set-output name=skip::false"
else
if [[ $(git diff --name-only ${{ github.event.before }} ${{ github.event.after }} pyMetadata/) ]]; then
echo "::set-output name=skip::false"
else
echo "::set-output name=skip::true"
fi
fi
- name: Build pyMetadata module
id: build-pymetadata
if: steps.check-pymetadata.outputs.skip == 'false' # skip dette trinnet hvis pyMetadata ikke har endringer
run: |
if [[ "${{ steps.check-pymetadata.outputs.changed }}" == "true" || "${{ github.event_name }}" == "push" || "${{ github.event_name }}" == "workflow_dispatch" ]]; then
cd pyMetadata
# Add the necessary build steps for your Python module here
echo "Build completed"
else
echo "pyMetadata has not changed. Skipping pyMetadata module build."
echo "::set-output name=job_skipped::true"
fi
- name: Generate Docker image tag
if: steps.check-pymetadata.outputs.skip == 'false' # skip dette trinnet hvis pyMetadata ikke har endringer
id: docker-tag
run: echo "::set-output name=tag::$(date -u +'%Y.%m.%d')-$(uuidgen | cut -c 1-8)"
- name: Docker login
if: steps.check-pymetadata.outputs.skip == 'false' # skip dette trinnet hvis pyMetadata ikke har endringer
uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9
with:
username: ${{ secrets.DOCKER_HUB_NAME }}
password: ${{ secrets.DOCKER_HUB_TOKEN }}
- name: Build and push Docker image
if: steps.check-pymetadata.outputs.skip == 'false' # skip dette trinnet hvis pyMetadata ikke har endringer
uses: docker/build-push-action@v2
with:
context: ./pyMetadata
push: true
tags: |
bskjon/mediaprocessing-pymetadata:latest
bskjon/mediaprocessing-pymetadata:${{ github.sha }}
bskjon/mediaprocessing-pymetadata:${{ steps.docker-tag.outputs.tag }}