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

Publish docker image #3

Merged
merged 3 commits into from
Feb 14, 2024
Merged
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
81 changes: 81 additions & 0 deletions .github/workflows/build-docker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
name: Build Docker Images

on:
workflow_call:
inputs:
image_tags:
required: true
type: string
description: (string) Image tags to build in docker/metadata-action format
release:
required: false
type: boolean
description: (bool) Whether this is a release or not
default: false
push:
required: false
type: boolean
description: (bool) Whether we should push the image or not
default: true
env:
NAMESPACE: "conduktor"
LABEL_IMAGE_AUTHORS: "Conduktor <[email protected]>"
LABEL_IMAGE_DOCUMENTATION: "https://docs.conduktor.io/conduktor"
LABEL_IMAGE_VENDOR: "Conduktor.io"

jobs:
build-docker:
name: Build Platform Docker
strokyl marked this conversation as resolved.
Show resolved Hide resolved
runs-on: [cdk-standard]
permissions:
id-token: write
contents: read
env:
IMAGE_NAME: "conduktorctl"
HARBOR_IMAGE: "harbor.cdkt.dev/conduktor/conduktorctl"
LABEL_IMAGE_TITLE: "Conduktor ctl"
LABEL_IMAGE_DESCRIPTION: "Conduktor command line tools"
LABEL_IMAGE_URL: "https://hub.docker.com/r/conduktor/conduktorctl"
steps:
- name: Set up Docker Buildx
id: setup-buildx
uses: docker/setup-buildx-action@v3
with:
version: v0.9.1
install: true
platforms: linux/amd64,linux/arm64

- name: Set up QEMU
uses: docker/setup-qemu-action@v3
with:
platforms: linux/amd64,linux/arm64
strokyl marked this conversation as resolved.
Show resolved Hide resolved

- name: Docker multi registries configuration
id: docker_meta
uses: conduktor/conduktor-actions/[email protected]
with:
image-name: |
${{ env.IMAGE_NAME }}
namespace: ${{ env.NAMESPACE }}
tags: ${{ inputs.image_tags }}
labels: |
org.opencontainers.image.title=${{ env.LABEL_IMAGE_TITLE }}
org.opencontainers.image.description=${{ env.LABEL_IMAGE_DESCRIPTION }}
org.opencontainers.image.authors=${{ env.LABEL_IMAGE_AUTHORS }}
org.opencontainers.image.documentation=${{ env.LABEL_IMAGE_DOCUMENTATION }}
org.opencontainers.image.vendor=${{ env.LABEL_IMAGE_VENDOR }}
org.opencontainers.image.url=${{ env.LABEL_IMAGE_URL }}
- uses: actions/checkout@v3
- name: Build ${{ env.IMAGE_NAME }} for ${{ steps.buildx.outputs.platforms }}
id: build
uses: docker/build-push-action@v5
with:
context: .
platforms: linux/amd64,linux/arm64
push: ${{ inputs.push }}
file: docker/Dockerfile
tags: ${{ steps.docker_meta.outputs.tags }}
labels: ${{ steps.docker_meta.outputs.labels }}
cache-from: type=registry,ref=${{env.HARBOR_IMAGE}}:main
cache-to: type=inline,mode=min
github-token: ${{ secrets.GITHUB_TOKEN }}
20 changes: 17 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
on:
push:
branches:
- main
pull_request:
types: [opened, reopened, synchronize, labeled]
jobs:
unit-test:
runs-on: cdk-large
runs-on: cdk-standard
strokyl marked this conversation as resolved.
Show resolved Hide resolved
steps:
- uses: actions/checkout@v3
- uses: actions/setup-go@v4
Expand All @@ -12,9 +15,20 @@ jobs:
- name: go test
run: go test ./...
integration-test:
runs-on: cdk-large
runs-on: cdk-standard
steps:
- uses: actions/checkout@v3
- name: run test
run: ./test_final_exec.sh

build-docker:
name: Build and publish conduktorctl images
uses: ./.github/workflows/build-docker.yml
secrets: inherit
needs: [unit-test, integration-test]
with:
release: false
push: ${{ github.ref_name == 'main' }}
image_tags: |
type=sha
type=ref,event=branch
type=ref,event=pr
92 changes: 92 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
name: Release
run-name: Release ${{ github.event.release.tag_name }} by ${{ github.actor }}

on:
release:
types: [published]
jobs:
tags:
name: List tags to be created
runs-on: cdk-standard
outputs:
image_tags: ${{ steps.image_tag.outputs.tags }}
version: ${{ steps.image_tag.outputs.version }}
is_latest: ${{ steps.image_tag.outputs.is_latest }}
steps:
- name: Debug tags
shell: bash
run: |
echo "----------------------------"
echo "GITHUB_REF : ${GITHUB_REF}"
echo "GITHUB_REF_NAME: ${GITHUB_REF_NAME}"
echo "GITHUB_REF_TYPE : ${GITHUB_REF_TYPE}"
echo "----------------------------"
echo "Release event : "
echo " name :${{ github.event.release.name }}"
echo " tag_name :${{ github.event.release.tag_name }}"
echo " target_commitish:${{ github.event.release.target_commitish }}"
echo " draft:${{ github.event.release.draft }}"

- name: Parse version from tag
id: version
uses: release-kit/semver@v2
with:
string: '${{ github.event.release.tag_name }}'

- name: Set release tag
if: ${{ github.event.release }}
shell: bash
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
latest_release_version=$(gh release view -R ${{ github.repository }} --json tagName -q .tagName)
echo "Latest release is ${latest_release}"
is_latest=$(test "${{ github.event.release.tag_name }}" == "${latest_release_version}" && echo true || echo false)

echo "RELEASE_TAG=${{ steps.version.outputs.full }}" >> $GITHUB_ENV
echo "IS_LATEST=${is_latest}" >> $GITHUB_ENV

- name: Image tag
id: image_tag
shell: bash
run: |
TAGS=""
TAGS="${TAGS}type=raw,value=${{ steps.version.outputs.full }}\n"
TAGS="${TAGS}type=semver,pattern={{version}}\n"
TAGS="${TAGS}type=raw,value=latest,enable=${{ env.IS_LATEST }}\n"

delimiter="$(openssl rand -hex 8)"
echo -e "tags<<${delimiter}\n${TAGS}\n${delimiter}" >> "${GITHUB_OUTPUT}"

echo -e "version=${{ steps.version.outputs.full }}" >> "${GITHUB_OUTPUT}"
echo -e "is_latest=${{ env.IS_LATEST }}" >> "${GITHUB_OUTPUT}"

echo "Outputs ${GITHUB_OUTPUT}"
echo "-------"
cat "${GITHUB_OUTPUT}"
echo "-------"
unit-test:
runs-on: cdk-standard
steps:
- uses: actions/checkout@v3
- uses: actions/setup-go@v4
with:
go-version: 1.22.0
- name: go test
run: go test ./...
integration-test:
runs-on: cdk-standard
steps:
- uses: actions/checkout@v3
- name: run test
run: ./test_final_exec.sh

build-docker:
name: Build and publish conduktorctl images
uses: ./.github/workflows/build-docker.yml
secrets: inherit
needs: [tags, unit-test, integration-test]
with:
release: true
push: true
image_tags: ${{ needs.tags.outputs.image_tags }}
Loading