name: Docker Publish Release on: release: types: [published, edited] # Can be triggered manually workflow_dispatch: inputs: release: required: true description: The version to generate git-ref: required: true description: The git reference to checkout prior to running the docker build force-latest: required: true type: choice default: 'false' description: Whether to force a latest tag on the release options: - true - false jobs: config: runs-on: "ubuntu-latest" outputs: has-secrets: ${{ steps.check.outputs.has-secrets }} steps: - name: "Check for secrets" id: check shell: bash run: | if [ -n "${{ (secrets.DOCKERHUB_USER != '' && secrets.DOCKERHUB_TOKEN != '') || '' }}" ]; then echo "has-secrets=1" >> "$GITHUB_OUTPUT" fi docker-release: needs: config if: needs.config.outputs.has-secrets name: docker-release runs-on: ubuntu-latest strategy: matrix: build_preset: ["dev", "lean", "py310", "websocket", "dockerize"] fail-fast: false steps: - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Setup Node Env uses: actions/setup-node@v4 with: node-version: '20' - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )" uses: actions/checkout@v4 - name: Setup supersetbot uses: ./.github/actions/setup-supersetbot/ - name: Execute custom Node.js script env: DOCKERHUB_USER: ${{ secrets.DOCKERHUB_USER }} DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} run: | RELEASE="${{ github.event.release.tag_name }}" FORCE_LATEST="" EVENT="${{github.event_name}}" if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then # in the case of a manually-triggered run, read release from input RELEASE="${{ github.event.inputs.release }}" if [ "${{ github.event.inputs.force-latest }}" = "true" ]; then FORCE_LATEST="--force-latest" fi # build_docker.py may not exist on that SHA, let's switcharoo to /tmp cp ./scripts/build_docker.py /tmp git checkout "${{ github.event.inputs.git-ref }}" cp /tmp/build_docker.py scripts/ EVENT="release" fi supersetbot docker \ --preset ${{ matrix.build_preset }} \ --context "$EVENT" \ --context-ref "$RELEASE" $FORCE_LATEST \ --platform "linux/arm64" \ --platform "linux/amd64"