diff --git a/.github/workflows/build-manual.yaml b/.github/workflows/build-manual.yaml new file mode 100644 index 00000000..ae75be84 --- /dev/null +++ b/.github/workflows/build-manual.yaml @@ -0,0 +1,86 @@ +name: Image Builder (manual) + +on: + workflow_dispatch: + +jobs: + configure: + name: Configure + runs-on: ubuntu-latest + outputs: + pandoc-version: ${{ steps.config.outputs.pandoc-version }} + stacks: ${{ steps.config.outputs.stacks }} + build: ${{ steps.config.outputs.build }} + steps: + - uses: actions/checkout@v4 + with: + ref: ${{ github.event.after }} + - name: Configure build + id: config + run: | + if [ 'schedule' = "${{ github.event_name }}" ]; then + pandoc_versions="['edge']" + stacks="['alpine','ubuntu','static']" + build=true + else + versions="'edge'" + pandoc_versions="[${versions}]" + stacks="'alpine'" + stacks="[${stacks}]" + build=true + fi + + printf "Setting outputs:\n" + printf " - pandoc-versions: %s\n" "$pandoc_versions" + printf " - stacks: %s\n" "$stacks" + printf " - build: %s\n" "$build" + + printf 'pandoc-version=%s\n' "$pandoc_versions" >> $GITHUB_OUTPUT + printf 'stacks=%s\n' "$stacks" >> $GITHUB_OUTPUT + printf 'build=%s\n' "$build" >> $GITHUB_OUTPUT + + # Build images and store them as tar archive + build: + if: ${{ fromJSON( needs.configure.outputs.build ) }} + name: Build + runs-on: ubuntu-latest + needs: configure + + strategy: + fail-fast: false + matrix: + stack: ${{ fromJSON( needs.configure.outputs.stacks ) }} + version: ${{ fromJSON( needs.configure.outputs.pandoc-version ) }} + + env: + PANDOC_VERSION: ${{ matrix.version }} + STACK: ${{ matrix.stack }} + + steps: + - uses: actions/checkout@v4 + + - name: Show config + run: make show-args + + - name: Build extra image + if: ${{ matrix.stack != 'static' }} + run: make extra + + - name: Test extra image + if: ${{ matrix.stack != 'static' }} + run: make test-extra + + - name: Push + if: >- + (github.event_name == 'push' || github.event_name == 'schedule') && + github.repository == 'innofactororg/pandoc-dockerfiles' + run: | + # Log into registry + echo "${{ secrets.DOCKER_HUB_TOKEN }}" | + docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} --password-stdin + #make push-minimal + if [ "$STACK" != 'static' ]; then + #make push-core + #make push-latex + make push-extra + fi