actions/.github/workflows/docker.yaml

94 lines
2.9 KiB
YAML

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