name: Docker Build & Push on: workflow_call: inputs: env_json: required: true type: string version: required: true type: string build_args: required: false type: string secrets: GITEA_TOKEN: required: true DOCKER_USERNAME: required: false DOCKER_PASSWORD: required: true env: GITEA_API_URL: ${{ fromJson(inputs.env_json).GITEA_API_URL }} GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} DOCKER_REGISTRY: ${{ fromJson(inputs.env_json).DOCKER_REGISTRY || '' }} DOCKER_IMAGE_NAME: ${{ fromJson(inputs.env_json).DOCKER_IMAGE_NAME || '' }} DOCKER_UI_URL: ${{ fromJson(inputs.env_json).DOCKER_UI_URL || '' }} DOCKERFILE: ${{ fromJson(inputs.env_json).DOCKERFILE || 'Dockerfile' }} GIT_TAG_PREFIX: ${{ fromJson(inputs.env_json).GIT_TAG_PREFIX || '' }} VERSION: ${{ inputs.version }} concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: build-push: runs-on: docker steps: - uses: actions/checkout@v4 - uses: actions/checkout@v4 with: repository: niko/gitea-ci-library path: .ci - name: Build and push container env: DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME || github.actor }} DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} BUILD_ARGS_INPUT: ${{ inputs.build_args }} run: | if [ -z "${DOCKER_REGISTRY}" ]; then echo "ERROR: DOCKER_REGISTRY not set in env.conf"; exit 1; fi if [ -z "${DOCKER_IMAGE_NAME}" ]; then echo "ERROR: DOCKER_IMAGE_NAME not set in env.conf"; exit 1; fi REGISTRY="${DOCKER_REGISTRY}" IMAGE="${DOCKER_IMAGE_NAME}" REGISTRY_HOST="${REGISTRY%%/*}" BUILD_ARGS="" if [ -n "$BUILD_ARGS_INPUT" ]; then while IFS= read -r arg; do [ -n "$arg" ] && BUILD_ARGS="$BUILD_ARGS --build-arg $arg" done <