Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(release): Publish Docker image #36

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 83 additions & 0 deletions .github/actions/docker-publish/action.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
name: 'Build & Push Docker'

inputs:
compose-version:
description: 'Docker Dompose version'
default: 2.6.0
registry:
description: 'Docker registry service'
default: ghcr.io
username:
description: 'Username for https://ghcr.io'
required: true
password:
description: 'Password for https://ghcr.io'
required: true
image:
description: 'Image name with provider url'
required: true
dockerfile:
description: 'Path to the Dockerfile'
required: true
context:
description: 'Path to the Context'
default: .
required: true
build-args:
description: 'List of build-time variables'
required: false

outputs:
image:
description: 'Image url'
value: ${{ steps.imageOuput.outputs.imageUrl }}
imageid:
description: 'Image ID'
value: ${{ steps.publish.outputs.imageId }}
digest:
description: 'Image digest'
value: ${{ steps.publish.outputs.digest }}
metadata:
description: 'Build result metadata'
value: ${{ steps.publish.outputs.metadata }}

runs:
using: 'composite'
steps:
- name: Log in to the ghcr.io registry
uses: docker/login-action@v2
with:
registry: ${{ inputs.registry }}
username: ${{ inputs.username }}
password: ${{ inputs.password }}

- name: Docker meta
id: meta
uses: docker/metadata-action@v3
with:
images: |
${{ inputs.image }}
tags: |
type=ref,event=branch
type=sha,prefix=
type=semver,pattern={{raw}}

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1

- name: Build and push the image to ghcr.io
uses: docker/build-push-action@v4
id: publish
with:
context: ${{ inputs.context }}
file: ${{ inputs.dockerfile }}
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build-args: ${{ inputs.build-args }}
cache-from: type=gha
cache-to: type=gha,mode=max
- id: imageOuput
shell: bash
run: |
echo "imageUrl=${{ fromJSON(steps.publish.outputs.metadata)['image.name'] }}" >> $GITHUB_OUTPUT
34 changes: 34 additions & 0 deletions .github/workflows/docker-publish.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: Build and publish Docker image

on:
push:
branches:
- main
pull_request:
types: [opened, synchronize]
release:
types: [published]

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
build-and-publish-image:
runs-on: buildjet-4vcpu-ubuntu-2204
if: |
(github.event_name == 'release' && github.event.action == 'published') ||
github.ref == 'refs/heads/main' ||
(github.event_name == 'pull_request' &&
github.event.pull_request.head.repo.full_name == github.repository)
steps:
- uses: actions/checkout@v3

- name: Build and push Fuel Core NATS image
uses: ./.github/actions/docker-publish
id: publish
with:
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
image: ghcr.io/fuellabs/fuel-core-nats
dockerfile: docker/fuel-core-nats.Dockerfile
Loading