name: Build & Publish Dockerfile on: workflow_call: inputs: repository: type: string required: true description: Git repository URL dockerfile: type: string required: false description: Name or path to Dockerfile default: Dockerfile registry: type: string required: false description: Docker registry FQDN default: ${{github.server_url}} user: type: string required: false description: Docker user default: ${{github.repository_owner}} pass: type: string required: true description: User password name: type: string required: false description: Docker container name default: ${{github.repository}} tag: type: string required: false description: Docker tag that will be added to image default: ${{github.ref_name}} jobs: docker: name: Build & Publish Dockerfile runs-on: ubuntu-latest container: docker steps: - name: Clone Repository uses: ztimson/actions/clone@develop with: url: ${{inputs.repository}} - name: Get Version Number run: | [[ -f package.json ]] && echo "VERSION=$(cat package.json | grep version | grep -Eo ':.+' | grep -Eo '[[:alnum:]\.\/\-]+')" >> $GITHUB_ENV shell: sh - name: Build Docker Image uses: ztimson/actions/docker/build@develop with: registry: ${{inputs.registry}} name: ${{inputs.name}} tag: ${{inputs.tag}} dockerfile: ${{inputs.dockerfile}} - name: Push as ${{inputs.tag}} uses: ztimson/actions/docker/push@develop with: registry: ${{inputs.registry}} user: ${{inputs.user}} pass: ${{inputs.pass}} name: ${{inputs.name}} tag: ${{inputs.tag}} - name: Push as ${{env.VERSION}} uses: ztimson/actions/docker/push@develop if: ${{env.VERSION}} with: from: "${{inputs.registry}}/${{inputs.name}}:${{inputs.tag}}" registry: ${{inputs.registry}} user: ${{inputs.user}} pass: ${{inputs.pass}} name: ${{inputs.name}} tag: ${{env.VERSION}} - name: Push as Latest uses: ztimson/actions/docker/push@develop if: ${{inputs.tag}} != latest && ${{github.ref_name}} == (git symbolic-ref refs/remotes/origin/HEAD --short | cut -c 7) with: from: "${{inputs.registry}}/${{inputs.name}}:${{inputs.tag}}" registry: ${{inputs.registry}} user: ${{inputs.user}} pass: ${{inputs.pass}} name: ${{inputs.name}} tag: latest