diff --git a/.github/workflows/stable-build.yml b/.github/workflows/stable-build.yml index 435aede..8f08461 100644 --- a/.github/workflows/stable-build.yml +++ b/.github/workflows/stable-build.yml @@ -1,6 +1,6 @@ ### This workflow setup instance then build and push images ### name: Multi-arch build stable -run-name: ${{ inputs.tag }} (${{ inputs.release_number }}) +run-name: ${{ inputs.tag }} (${{ inputs.release_number }}) — ${{ inputs.community && 'CE ' || '' }}${{ inputs.enterprise && 'EE DE' || '' }} on: workflow_dispatch: @@ -19,6 +19,14 @@ on: type: boolean required: true default: true + community: + type: boolean + description: 'Release Community Edition' + default: true + enterprise: + type: boolean + description: 'Release Enterprise editions (-ee and -de)' + default: true env: COMPANY_NAME: "onlyoffice" @@ -28,14 +36,42 @@ env: LATEST: ${{ github.event.inputs.latest }} jobs: + setup: + name: "Prepare editions matrix" + runs-on: ubuntu-latest + outputs: + editions: ${{ steps.set.outputs.editions }} + editions_ucs: ${{ steps.set.outputs.editions_ucs }} + steps: + - name: Build editions list + id: set + shell: bash + env: + INPUT_C: ${{ github.event.inputs.community }} + INPUT_E: ${{ github.event.inputs.enterprise }} + run: | + set -eux + editions=$(jq -nc \ + --argjson c "$INPUT_C" \ + --argjson e "$INPUT_E" \ + '[ if $c then "" else empty end, + if $e then ("-ee", "-de") else empty end ]') + editions_ucs=$(echo "$editions" | jq -c 'map(select(. != "-de"))') + echo "editions=$editions" >> "$GITHUB_OUTPUT" + echo "editions_ucs=$editions_ucs" >> "$GITHUB_OUTPUT" + echo "Matrix editions: $editions" + echo "Matrix editions (UCS): $editions_ucs" + build: name: "Release image: DocumentServer${{ matrix.edition }}" runs-on: ubuntu-latest + needs: [setup] + if: ${{ needs.setup.outputs.editions != '[]' }} strategy: fail-fast: false matrix: images: ["documentserver-stable"] - edition: ["", "-ee", "-de"] + edition: ${{ fromJSON(needs.setup.outputs.editions) }} steps: - name: Checkout code uses: actions/checkout@v4 @@ -83,6 +119,8 @@ jobs: release_4enterprise: name: "Release image: onlyoffice4enterprise" runs-on: ubuntu-latest + needs: [setup] + if: ${{ github.event.inputs.enterprise == 'true' }} steps: - name: Checkout code uses: actions/checkout@v4 @@ -109,13 +147,13 @@ jobs: build-nonexample: name: "Release image: DocumentServer${{ matrix.edition }}-nonExample" runs-on: ubuntu-latest - needs: [build] + needs: [build, setup] if: ${{ false }} strategy: fail-fast: false matrix: images: ["documentserver-nonexample"] - edition: ["", "-ee", "-de"] + edition: ${{ fromJSON(needs.setup.outputs.editions) }} steps: - name: Checkout code uses: actions/checkout@v4 @@ -146,10 +184,12 @@ jobs: build-ucs-ubuntu20: name: "Release image: DocumentServer${{ matrix.edition }}-ucs" runs-on: ubuntu-latest + if: ${{ needs.setup.outputs.editions_ucs != '[]' }} + needs: [setup] strategy: fail-fast: false matrix: - edition: ["", "-ee"] + edition: ${{ fromJSON(needs.setup.outputs.editions_ucs) }} platform: ["amd64"] steps: - name: Checkout code