commit dc0f92322021ec18c3757885b6cdb7ade804ca5d Author: Dreaded_X Date: Wed Apr 23 02:50:54 2025 +0200 Added rust-kubernetes workflow diff --git a/.gitea/workflows/rust-kubernetes.yaml b/.gitea/workflows/rust-kubernetes.yaml new file mode 100644 index 0000000..790bd16 --- /dev/null +++ b/.gitea/workflows/rust-kubernetes.yaml @@ -0,0 +1,111 @@ +name: Build and deploy + +on: + workflow_call: + inputs: + generate_crds: + description: Runs a binary called gencrd in the docker container and writes the output to ./manifests/crds.yaml + default: false + required: false + type: boolean + +env: + OCI_REPO: git.huizinga.dev/dreaded_x/${{ gitea.event.repository.name}} + +jobs: + build: + name: Build container and manifests + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set timestamp and release version + run: | + echo "TIMESTAMP=$(git log -1 --pretty=%ct)" >> $GITHUB_ENV + git fetch --prune --unshallow --tags --force + echo "RELEASE_VERSION=$(git describe --always --dirty='--modified')" >> $GITHUB_ENV + cat $GITHUB_ENV + + - name: Login to registry + uses: docker/login-action@v3 + with: + registry: git.huizinga.dev + username: ${{ gitea.actor }} + password: ${{ secrets.REGISTRY_TOKEN }} + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Install kustomize + run: | + curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash + + - name: Setup Flux CLI + uses: https://github.com/fluxcd/flux2/action@main + with: + version: v2.5.0 + + - name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.OCI_REPO }} + tags: | + type=edge + type=ref,event=branch + type=semver,pattern=v{{version}} + type=semver,pattern=v{{major}}.{{minor}} + type=semver,pattern=v{{major}} + + - name: Build container + id: build + uses: docker/build-push-action@v6 + with: + context: . + push: true + sbom: true + provenance: mode=max + tags: ${{ steps.meta.outputs.tags }} + annotations: ${{ steps.meta.outputs.annotations }} + cache-from: type=gha + cache-to: type=gha,mode=max + build-args: | + "RELEASE_VERSION=${{ env.RELEASE_VERSION }}" + env: + SOURCE_DATE_EPOCH: ${{ env.TIMESTAMP }} + + - name: Generate CRDs + if: ${{ inputs.generate_crds }} + run: | + docker run --rm ${{ env.OCI_REPO }}@${{ steps.build.outputs.imageid }} /crdgen > ./manifests/crds.yaml + + - name: Kustomize manifests + run: | + ./kustomize build ./manifests | sed "s/\${DIGEST}/${{ steps.build.outputs.digest }}/" > ./manifests.yaml + + - name: Push manifests + run: | + flux push artifact oci://${{ env.OCI_REPO }}/manifests:${{ gitea.head_ref || gitea.ref_name }} \ + --path="./manifests.yaml" \ + --source="$(git config --get remote.origin.url)" \ + --revision="$(git rev-parse HEAD)" \ + $(echo "${{ steps.meta.outputs.labels }}" | sed -e 's/^/-a /') + + flux tag artifact oci://${{ env.OCI_REPO }}/manifests:${{ gitea.head_ref || gitea.ref_name }} \ + $(echo "${{ steps.meta.outputs.tags }}" | sed -e 's/^.*:/--tag /') + + - name: Notify build status + if: failure() + uses: appleboy/telegram-action@master + with: + to: ${{ secrets.TELEGRAM_TO }} + token: ${{ secrets.TELEGRAM_TOKEN }} + # TODO: Escaping issues need to be solved first + # format: markdown + message: | + 🚨 *BUILD FAILED!* + ${{ gitea.repository }} (#${{ gitea.run_number }}) + + [${{ gitea.ref_name }} @ ${{ gitea.sha }}] + > ${{ gitea.event.head_commit.message }}