Skip to content

Commit

Permalink
docker & generate manifest workflow reworked
Browse files Browse the repository at this point in the history
  • Loading branch information
anirudhprasad-sap committed Sep 20, 2023
1 parent 86613e0 commit 043ce67
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 63 deletions.
54 changes: 5 additions & 49 deletions .github/workflows/docker-push.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
name: Docker push

on:
release:
types: [published]
push:
tags:
- manager/v[0-9]+.[0-9]+.[0-9]+

concurrency: release-${{ github.event.release.tag_name }}

Expand All @@ -13,47 +14,10 @@ defaults:
run:
shell: bash

jobs:
get_component:
name: Get component from tag
runs-on: ubuntu-22.04
outputs:
proceed_with_docker_push: ${{ steps.check_release_tag.outputs.proceed }}
component: ${{ steps.extract_component.outputs.component }}
permissions:
contents: read
packages: write

steps:
- name: Checkout
uses: actions/checkout@v3

- name: Extract component from tag
id: extract_component
run: |
echo "component=$(echo ${{ github.event.release.tag_name }} | grep -oP '^(.*?)\/' | rev | cut -c2- | rev )" >> $GITHUB_OUTPUT
- name: Print component
run: |
echo ${{ steps.extract_component.outputs.component }}
- name: Check release tag
id: check_release_tag
run: |
if [[ '${{ steps.extract_component.outputs.component }}' == 'manager' ]]
then
echo "Release tag created for cap-operator-manager, we can proceed with docker push."
echo "proceed=true" >> $GITHUB_OUTPUT
else
echo "Release tag doesn't correspond to cap-operator-manager, skip!!!"
echo "proceed=false" >> $GITHUB_OUTPUT
fi
jobs:
docker_build_and_push:
name: Docker build and push
runs-on: ubuntu-22.04
needs: [get_component]
if: needs.get_component.outputs.proceed_with_docker_push == 'true'
outputs:
version: ${{ steps.extract-metadata.outputs.version }}
permissions:
Expand Down Expand Up @@ -109,12 +73,4 @@ jobs:
- name: Print Outputs
run: |
echo "Tags: ${{ steps.extract-metadata.outputs.tags }}"
echo "Labels: ${{ steps.extract-metadata.outputs.labels }}"
generate_manifests:
uses: ./.github/workflows/generate-manifest.yml
needs: [get_component, docker_build_and_push]
if: needs.get_component.outputs.proceed_with_docker_push == 'true'
with:
version: ${{ needs.docker_build_and_push.outputs.version }}
upload_url: ${{ github.event.release.upload_url }}
echo "Labels: ${{ steps.extract-metadata.outputs.labels }}"
65 changes: 51 additions & 14 deletions .github/workflows/generate-manifest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,9 @@
name: Generate Manifests

on:
workflow_call:
inputs:
version:
type: string
required: true
upload_url:
type: string
required: false
release:
types: [published]

workflow_dispatch:
inputs:
version:
Expand All @@ -28,18 +23,42 @@ defaults:
shell: bash

jobs:
generate-manifest:
generate_manifest:
name: Generate manifest
runs-on: ubuntu-22.04

steps:
- name: Checkout
uses: actions/checkout@v3

- name: Get version and upload URL
id: get_version_upload_url
run: |
if [[ ! -z '${{ inputs.version }}' ]]
then
echo "version=${{ inputs.version }}" >> $GITHUB_OUTPUT
else
echo "version=$(echo ${{ github.event.release.tag_name }} | grep -oP '(?<=\/v)\d+\.\d+\.\d+' )" >> $GITHUB_OUTPUT
fi
if [[ ! -z '${{ inputs.upload_url }}' ]]
then
echo "upload_url=${{ inputs.upload_url }}" >> $GITHUB_OUTPUT
elif [[ ! -z '${{ github.event.release.upload_url }}' ]]
then
echo "upload_url=${{ github.event.release.upload_url }}" >> $GITHUB_OUTPUT
else
echo "upload_url=''" >> $GITHUB_OUTPUT
fi
- name: Print version and upload URL
run: |
echo "Version=${{ steps.get_version_upload_url.outputs.version }}"
echo "Upload URL=${{ steps.get_version_upload_url.outputs.upload_url }}"
- name: Update version in kustomization.yaml
run: |
yq -i '.images[0].newTag="${{ inputs.version }}"' config/default/kustomization.yaml
cat config/default/kustomization.yaml > $CR_FILENAME
yq -i '.images[0].newTag="${{ steps.get_version_upload_url.outputs.version }}"' config/default/kustomization.yaml
- name: Download kustomize cli
run: |
Expand All @@ -50,11 +69,29 @@ jobs:
run: |
./kustomize build config/default/ > $MANIFEST_FILENAME
cat $MANIFEST_FILENAME
cat config/samples/operator_v1alpha1_capoperator.yaml > $CR_FILENAME
- name: Determine target commit
id: get_target_commit
run: |
sha=$(git rev-parse HEAD)
echo "Target commit: $sha"
echo "sha=$sha" >> $GITHUB_OUTPUT
- name: Wait for check suites to complete
uses: sap-contributions/await-check-suites@master

Check warning on line 82 in .github/workflows/generate-manifest.yml

View check run for this annotation

In Solidarity / Inclusive Language

Match Found

Please consider an alternative to `master`. Possibilities include: `primary`, `main`, `leader`, `active`, `writer`
Raw output
/\b(?!masterdata|masterdata\w+\b)master/gi
if: inputs.version == ''
with:
ref: ${{ steps.get_target_commit.outputs.sha }}
intervalSeconds: 10
timeoutSeconds: 1800
failStepIfUnsuccessful: true
appSlugFilter: github-actions

- name: Upload manifest & default CR to release
if: inputs.upload_url != ''
if: inputs.upload_url != '' || github.event.release.upload_url != ''
run: |
upload_url="${{ inputs.upload_url }}"
upload_url="${{ steps.get_version_upload_url.outputs.upload_url }}"
upload_url=${upload_url%%\{*\}}
file=$MANIFEST_FILENAME
echo "Uploading manifest $file to $upload_url ..."
Expand All @@ -72,4 +109,4 @@ jobs:
-H "Authorization: Bearer ${{ github.token }}" \
-H "Content-Type: $(file -b --mime-type $file)" \
--data-binary @$file \
"$upload_url?name=$(basename $file)"
"$upload_url?name=$(basename $file)"

0 comments on commit 043ce67

Please sign in to comment.