name: autobuildallthemods on: push: branches: - master paths: - 'docker-mods/**' workflow_dispatch: inputs: app: description: 'Select an app' required: true type: choice options: - radarr - sonarr - readarr - lidarr - bazarr - whisparr - prowlarr - plex - jellyfin - emby - sabnzbd - synclounge - transmission - calibre-web - lazylibrarian - mylar3 - duplicati - tautulli - vuetorrent - deluge - jackett - librespeed - nzbget - qbittorrent - rutorrent - swag - thelounge - build-all-the-mods append-tag: required: false description: 'Append a the tag with "-custom" e.g :radarr-testing' jobs: push_to_ghcr_io: runs-on: ubuntu-latest steps: - name: checkout uses: actions/checkout@v2 with: fetch-depth: 0 - name: get changed files id: getfile run: | echo "::set-output name=files::$(git diff-tree --no-commit-id --name-only -r ${{ github.sha }} docker-mods/| xargs)" - name: Login to GitHub Container Registry uses: docker/login-action@v1 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GH_PAT }} - name: find correct directory then build&push if: ${{ github.event_name == 'push' }} run: | for i in ${{ steps.getfile.outputs.files }} do directory="$( echo $i | cut -d'/' -f2 -s )" if [ -z "$directory" ]; then continue # Skip root dir elif [ "$i" == *.md ]; then continue # Skip markdown files elif [ "$i" == *.yml ]; then continue # Skip YAML files fi docker build docker-mods/$directory --tag ghcr.io/gilbn/theme.park:$directory docker push ghcr.io/gilbn/theme.park:$directory done - name: manually build if: ${{ github.event.inputs.app != 'build-all-the-mods' }} run: | docker build docker-mods/${{ github.event.inputs.app }} --tag ghcr.io/gilbn/theme.park:${{ github.event.inputs.app }}${{ github.event.inputs.append-tag }} docker push ghcr.io/gilbn/theme.park:${{ github.event.inputs.app }}${{ github.event.inputs.append-tag }} - name: manually build all mods if: ${{ github.event.inputs.app == 'build-all-the-mods' }} run: | for dir in docker-mods/*; do app="$( echo "$dir" | cut -d'/' -f2 -s )" docker build docker-mods/$app --tag ghcr.io/gilbn/theme.park:$app${{ github.event.inputs.append-tag }} docker push ghcr.io/gilbn/theme.park:$app${{ github.event.inputs.append-tag }} done push_to_dockerhub: runs-on: ubuntu-latest steps: - name: checkout uses: actions/checkout@v2 with: fetch-depth: 0 - name: get changed files id: getfile run: | echo "::set-output name=files::$(git diff-tree --no-commit-id --name-only -r ${{ github.sha }} docker-mods/| xargs)" - name: Login to Docker Hub uses: docker/login-action@v1 with: username: ${{ secrets.DH_USER }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: find correct directory then build&push if: ${{ github.event_name == 'push' }} run: | for i in ${{ steps.getfile.outputs.files }} do directory="$( echo $i | cut -d'/' -f2 -s )" if [ -z "$directory" ]; then continue # Skip root dir elif [ "$i" == *.md ]; then continue # Skip markdown files elif [ "$i" == *.yml ]; then continue # Skip YAML files fi docker build docker-mods/$directory --tag gilbn/theme.park:$directory docker push gilbn/theme.park:$directory done - name: manually build if: ${{ github.event.inputs.app != 'build-all-the-mods' }} run: | docker build docker-mods/${{ github.event.inputs.app }} --tag gilbn/theme.park:${{ github.event.inputs.app }}${{ github.event.inputs.append-tag }} docker push gilbn/theme.park:${{ github.event.inputs.app }}${{ github.event.inputs.append-tag }} - name: manually build all mods if: ${{ github.event.inputs.app == 'build-all-the-mods' }} run: | for dir in docker-mods/*; do app="$( echo "$dir" | cut -d'/' -f2 -s )" docker build docker-mods/$app --tag gilbn/theme.park:$app${{ github.event.inputs.append-tag }} docker push gilbn/theme.park:$app${{ github.event.inputs.append-tag }} done