250 lines
8.0 KiB
YAML
250 lines
8.0 KiB
YAML
name: Build Modules
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
pull_request:
|
|
branches:
|
|
- master
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
pre-check:
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
pyMetadata: ${{ steps.filter.outputs.pyMetadata }}
|
|
commonCode: ${{ steps.filter.outputs.commonCode }}
|
|
reader: ${{ steps.filter.outputs.reader }}
|
|
encode: ${{ steps.filter.outputs.encode }}
|
|
convert: ${{ steps.filter.outputs.convert }}
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v2
|
|
|
|
- uses: dorny/paths-filter@v2
|
|
id: filter
|
|
with:
|
|
filters: |
|
|
pyMetadata:
|
|
- 'pyMetadata/**'
|
|
reader:
|
|
- 'Reader/**'
|
|
encode:
|
|
- 'Encode/**'
|
|
convert:
|
|
- 'Convert/**'
|
|
commonCode:
|
|
- 'CommonCode/**'
|
|
# Step to print the outputs from "pre-check" job
|
|
- name: Print Outputs from pre-check job
|
|
run: |
|
|
echo "pyMetadata: ${{ needs.pre-check.outputs.pyMetadata }}"
|
|
echo "commonCode: ${{ needs.pre-check.outputs.commonCode }}"
|
|
echo "reader: ${{ needs.pre-check.outputs.reader }}"
|
|
echo "encode: ${{ needs.pre-check.outputs.encode }}"
|
|
echo "convert: ${{ needs.pre-check.outputs.convert }}"
|
|
|
|
build-commoncode:
|
|
runs-on: ubuntu-latest
|
|
needs: pre-check
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v2
|
|
|
|
- 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 CommonCode
|
|
if: steps.cache-gradle.outputs.cache-hit != 'true' || needs.pre-check.outputs.commonCode == 'true' || github.event_name == 'workflow_dispatch'
|
|
run: |
|
|
cd CommonCode
|
|
chmod +x ./gradlew
|
|
./gradlew build
|
|
|
|
build-encode:
|
|
needs: build-commoncode
|
|
if: ${{ needs.pre-check.outputs.encode == 'true' || github.event_name == 'workflow_dispatch' || needs.pre-check.outputs.commonCode == 'true' }}
|
|
runs-on: ubuntu-latest
|
|
#if: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' }}
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v2
|
|
|
|
- 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: |
|
|
cd Encode
|
|
chmod +x ./gradlew
|
|
./gradlew build
|
|
echo "Build completed"
|
|
|
|
|
|
- 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
|
|
uses: docker/build-push-action@v2
|
|
with:
|
|
context: ./Encode
|
|
push: true
|
|
tags: |
|
|
bskjon/mediaprocessing-encoder:latest
|
|
bskjon/mediaprocessing-encoder:${{ github.sha }}
|
|
bskjon/mediaprocessing-encoder:${{ steps.docker-tag.outputs.tag }}
|
|
|
|
build-reader:
|
|
needs: build-commoncode
|
|
runs-on: ubuntu-latest
|
|
if: ${{ needs.pre-check.outputs.reader == 'true' || github.event_name == 'workflow_dispatch' || needs.pre-check.outputs.commonCode == 'true' }}
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v2
|
|
|
|
- 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: |
|
|
cd Reader
|
|
chmod +x ./gradlew
|
|
./gradlew build
|
|
echo "Build completed"
|
|
|
|
- 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
|
|
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:
|
|
needs: pre-check
|
|
if: ${{ needs.pre-check.outputs.pyMetadata == 'true' || github.event_name == 'workflow_dispatch' }}
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Build pyMetadata module
|
|
id: build-pymetadata
|
|
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
|
|
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
|
|
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 }}
|
|
|
|
|
|
build-convert:
|
|
needs: build-commoncode
|
|
if: ${{ needs.pre-check.outputs.convert == 'true' || github.event_name == 'workflow_dispatch' || needs.pre-check.outputs.commonCode == 'true' }}
|
|
runs-on: ubuntu-latest
|
|
#if: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' }}
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v2
|
|
|
|
- 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 Convert module
|
|
id: build-convert
|
|
run: |
|
|
cd Convert
|
|
chmod +x ./gradlew
|
|
./gradlew build
|
|
echo "Build completed"
|
|
|
|
|
|
- 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
|
|
uses: docker/build-push-action@v2
|
|
with:
|
|
context: ./Encode
|
|
push: true
|
|
tags: |
|
|
bskjon/mediaprocessing-converter:latest
|
|
bskjon/mediaprocessing-converter:${{ github.sha }}
|
|
bskjon/mediaprocessing-converter:${{ steps.docker-tag.outputs.tag }} |