Skip to content

Merge pull request #115 from controlplaneio-fluxcd/flux-v2.4-tests #10

Merge pull request #115 from controlplaneio-fluxcd/flux-v2.4-tests

Merge pull request #115 from controlplaneio-fluxcd/flux-v2.4-tests #10

Workflow file for this run

name: workflow release
on:
push:
tags: [ 'v*' ]
permissions:
contents: read
jobs:
manifests:
strategy:
matrix:
variant:
- distroless
- alpine
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
id-token: write
steps:
- name: Checkout
uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
- name: Setup Flux
uses: fluxcd/flux2/action@896e0fa46d5107a05e953dd0a5261d78a145ec8c #v2.3.0
with:
version: ${{ github.ref_name }}
- name: Login to GHCR
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build manifests
run: |
mkdir -p bin/${{ matrix.variant }}
flux install \
--components-extra="image-reflector-controller,image-automation-controller" \
--registry=ghcr.io/controlplaneio-fluxcd/${{ matrix.variant }} \
--image-pull-secret=flux-enterprise-auth \
--export > --export > bin/${{ matrix.variant }}/gotk-components.yaml
- name: Push manifests
id: push
run: |
set -euo pipefail
img_digest=$(flux push artifact \
oci://ghcr.io/controlplaneio-fluxcd/${{ matrix.variant }}/flux-manifests:${{ github.ref_name }} \
--path=bin/${{ matrix.variant }} \
--source=${{ github.repositoryUrl }} \
--revision="${{ github.ref_name }}@sha1:${{ github.sha }}" \
--annotations='org.opencontainers.image.description=ControlPLane Enterprise for Flux CD' \
--output=json | jq -r '.digest')
echo "img_digest=$img_digest" >> $GITHUB_OUTPUT
img_repository=ghcr.io/controlplaneio-fluxcd/${{ matrix.variant }}/flux-manifests
echo "img_repository=$img_repository" >> $GITHUB_OUTPUT
img_url=${img_repository}:${{ github.ref_name }}
echo "img_url=$img_url" >> $GITHUB_OUTPUT
- uses: sigstore/cosign-installer@4959ce089c160fddf62f7b42464195ba1a56d382 # v3.6.0
- name: Sign manifests
run: |
cosign sign --yes ${{ steps.push.outputs.img_repository }}@${{ steps.push.outputs.img_digest }}
release:
runs-on: ubuntu-latest
env:
ENTERPRISE_REGISTRY: ghcr.io/controlplaneio-fluxcd
ENTERPRISE_VARIANTS: alpine;distroless
UPSTREAM_REGISTRY: ghcr.io/fluxcd
UPSTREAM_VARIANT: alpine
needs:
- manifests
permissions:
contents: write
pull-requests: write
steps:
- name: Checkout
uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
- name: Create release
shell: bash
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
title="Flux ${{ github.ref_name }}"
notes="See the distribution [release notes](https://github.com/controlplaneio-fluxcd/distribution/blob/main/releases/release-${GITHUB_REF_NAME:0:4}.md) for more details."
gh release create ${{ github.ref_name }} --title="${title}" --notes="${notes}" --verify-tag
- name: Setup Flux
uses: fluxcd/flux2/action@896e0fa46d5107a05e953dd0a5261d78a145ec8c #v2.3.0
with:
version: ${{ github.ref_name }}
- name: Login to GHCR
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GHCR_READONLY }}
- name: Upload install manifests
shell: bash
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
WORK_DIR="workspace"
mkdir -p "${WORK_DIR}"
cd "${WORK_DIR}"
for variant in ${ENTERPRISE_VARIANTS//;/$'\n'}
do
flux pull artifact oci://${ENTERPRISE_REGISTRY}/${variant}/flux-manifests:${{ github.ref_name }} -o .;
mv gotk-components.yaml install-${variant}.yaml;
done
gh release upload ${{ github.ref_name }} ./*.yaml
- name: Generate upstream images
shell: bash
run: |
DISTRIBUTION="upstream" \
REGISTRY="${UPSTREAM_REGISTRY}" \
VARIANT="${UPSTREAM_VARIANT}" \
VERSION="${{ github.ref_name }}" \
.github/workflows/update-images.sh
- name: Generate enterprise images
shell: bash
run: |
for variant in ${ENTERPRISE_VARIANTS//;/$'\n'}
do
DISTRIBUTION="enterprise" \
REGISTRY="${ENTERPRISE_REGISTRY}" \
VARIANT="${variant}" \
VERSION="${{ github.ref_name }}" \
.github/workflows/update-images.sh;
cp "images/${{ github.ref_name }}/enterprise-${variant}.yaml" "workspace/images-${variant}.yaml";
done
- name: Update latest version
shell: bash
run: |
echo "${{ github.ref_name }}" > "images/VERSION"
- name: Create Pull Request
uses: peter-evans/create-pull-request@5e914681df9dc83aa4e4905692ca88beb2f9e91f # v7.0.5
with:
token: ${{ secrets.GITHUB_TOKEN }}
commit-message: |
Add images for Flux ${{ github.ref_name }}
committer: GitHub <[email protected]>
signoff: true
branch: update-images-${{ github.ref_name }}
base: main
title: Add images for Flux ${{ github.ref_name }}
body: |
Add images with digests for Flux ${{ github.ref_name }}
labels: |
area/images