diff --git a/.github/workflows/docker-build-push.yml b/.github/workflows/docker-build-push.yml index 1f0889d..70fbb36 100644 --- a/.github/workflows/docker-build-push.yml +++ b/.github/workflows/docker-build-push.yml @@ -6,6 +6,7 @@ on: - main - beta - dev + - github-actions-ci paths: - 'src/**' - 'helm/Chart.yaml' @@ -45,21 +46,29 @@ jobs: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Extract appVersion from Chart.yaml - id: chart_version + - name: Extract appVersion from Chart.yaml and determine tags + id: tags run: | - APP_VERSION=$(grep '^appVersion:' helm/Chart.yaml | awk '{print $2}' | tr -d '"') - echo "version=$APP_VERSION" >> $GITHUB_OUTPUT + APP_VERSION=$(grep '^appVersion:' helm/Chart.yaml | awk '{print $2}' | tr -d '"' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//') + + if [ -z "$APP_VERSION" ]; then + echo "Error: Could not extract appVersion from Chart.yaml" + exit 1 + fi + + if [[ "${{ github.ref_name }}" == "main" ]]; then + TAGS="${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${APP_VERSION},${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest" + else + TAGS="${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${APP_VERSION}-${{ github.ref_name }}" + fi + + echo "tags=$TAGS" >> $GITHUB_OUTPUT - name: Extract metadata (tags, labels) id: meta uses: docker/metadata-action@v5 with: images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} - tags: | - type=raw,value=${{ steps.chart_version.outputs.version }},enable={{is_default_branch}} - type=raw,value=${{ steps.chart_version.outputs.version }}-${{ github.ref_name }},enable=${{ github.ref_name != 'main' }} - type=raw,value=latest,enable={{is_default_branch}} - name: Build and push Docker image uses: docker/build-push-action@v5 @@ -67,10 +76,12 @@ jobs: context: . file: ./Dockerfile push: true - tags: ${{ steps.meta.outputs.tags }} + tags: ${{ steps.tags.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} cache-from: type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:buildcache cache-to: type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:buildcache,mode=max - name: Image digest - run: echo ${{ steps.meta.outputs.digest }} + run: | + echo "Image built and pushed with tags:" + echo "${{ steps.tags.outputs.tags }}" diff --git a/.github/workflows/helm-package-push.yml b/.github/workflows/helm-package-push.yml index 8cd119a..9ba9150 100644 --- a/.github/workflows/helm-package-push.yml +++ b/.github/workflows/helm-package-push.yml @@ -6,8 +6,10 @@ on: - main - beta - dev + - github-actions-ci paths: - 'helm/**' + - '.github/workflows/helm-package-push.yml' tags: - 'v*' release: @@ -39,37 +41,36 @@ jobs: run: | echo "${{ secrets.GITHUB_TOKEN }}" | helm registry login ghcr.io --username ${{ github.actor }} --password-stdin - - name: Extract version from Chart.yaml - id: version - run: | - VERSION=$(grep '^version:' ./helm/Chart.yaml | awk '{print $2}' | tr -d '"') - echo "version=$VERSION" >> $GITHUB_OUTPUT - - - name: Package Helm chart + - name: Set Helm chart version and package run: | + CHART_NAME=$(grep '^name:' ./helm/Chart.yaml | awk '{print $2}') + BASE_VERSION=$(grep '^version:' ./helm/Chart.yaml | awk '{print $2}') + + if [[ "${{ github.ref_name }}" == "main" ]]; then + CHART_VERSION="${BASE_VERSION}" + else + CHART_VERSION="${BASE_VERSION}-${{ github.ref_name }}" + fi + + # Update Chart.yaml temporarily with the versioned name + sed -i "s/^version:.*/version: ${CHART_VERSION}/" ./helm/Chart.yaml + + # Package the helm chart helm package ./helm + + echo "CHART_NAME=${CHART_NAME}" >> $GITHUB_ENV + echo "CHART_VERSION=${CHART_VERSION}" >> $GITHUB_ENV - name: Push Helm chart to registry run: | - CHART_VERSION=$(grep '^version:' ./helm/Chart.yaml | awk '{print $2}') - CHART_FILE=$(grep '^name:' ./helm/Chart.yaml | awk '{print $2}') - CHART_PATH="${CHART_FILE}-${CHART_VERSION}.tgz" - - # Determine tag based on branch - if [[ "${{ github.ref_name }}" == "main" ]]; then - TAG="${{ steps.version.outputs.version }}" - helm push "$CHART_PATH" oci://${{ env.REGISTRY }}/$CHART_FILE:$TAG - helm push "$CHART_PATH" oci://${{ env.REGISTRY }}/$CHART_FILE:latest - else - TAG="${{ steps.version.outputs.version }}-${{ github.ref_name }}" - helm push "$CHART_PATH" oci://${{ env.REGISTRY }}/$CHART_FILE:$TAG - fi + helm push ${{ env.CHART_NAME }}-${{ env.CHART_VERSION }}.tgz oci://${{ env.REGISTRY }} - name: Chart pushed run: | + CHART_VERSION=$(grep '^version:' ./helm/Chart.yaml | awk '{print $2}') CHART_FILE=$(grep '^name:' ./helm/Chart.yaml | awk '{print $2}') if [[ "${{ github.ref_name }}" == "main" ]]; then - echo "Chart pushed: $CHART_FILE:${{ steps.version.outputs.version }} and $CHART_FILE:latest" + echo "Chart pushed: ${CHART_FILE}:${CHART_VERSION}" else - echo "Chart pushed: $CHART_FILE:${{ steps.version.outputs.version }}-${{ github.ref_name }}" + echo "Chart pushed: ${CHART_FILE}:${CHART_VERSION}-${{ github.ref_name }}" fi diff --git a/helm/Chart.yaml b/helm/Chart.yaml index 94decfd..288225d 100644 --- a/helm/Chart.yaml +++ b/helm/Chart.yaml @@ -1,15 +1,15 @@ -apiVersion: v2 -name: krawl-chart -description: A Helm chart for Krawl honeypot server -type: application -version: 0.1.3 -appVersion: "0.1.6" -keywords: - - honeypot - - security - - krawl -maintainers: - - name: blessedrebus -home: https://github.com/blessedrebus/krawl -sources: - - https://github.com/blessedrebus/krawl +apiVersion: v2 +name: krawl-chart +description: A Helm chart for Krawl honeypot server +type: application +version: 0.1.3 +appVersion: 0.1.6 +keywords: + - honeypot + - security + - krawl +maintainers: + - name: blessedrebus +home: https://github.com/blessedrebus/krawl +sources: + - https://github.com/blessedrebus/krawl