diff --git a/.gitea/workflows/build-and-publish.yaml b/.gitea/workflows/build-and-publish.yaml index 97d899e..88cfbb9 100644 --- a/.gitea/workflows/build-and-publish.yaml +++ b/.gitea/workflows/build-and-publish.yaml @@ -1,69 +1,68 @@ name: Build and Publish - on: push: branches: - main - env: REGISTRY: ${{ format('{0}', replace(replace(github.server_url, 'https://', ''), 'http://', '')) }} - # Dynamically extracts just the repository name (e.g., 'my-repo' from 'owner/my-repo') CHART_NAME: ${{ github.event.repository.name }} IMAGE_NAME: ${{ github.event.repository.name }} - jobs: build-release: - runs-on: nix + runs-on: ubuntu-latest steps: - - name: Checkout via Native Git - env: - GITEA_URL: ${{ github.server_url }} - TOKEN: ${{ secrets.GITHUB_TOKEN }} - REPO: ${{ github.repository }} - SHA: ${{ github.sha }} - run: | - STRIPPED_URL=$(nix shell nixpkgs#gnused --command echo $GITEA_URL | sed -e 's|^https://||' -e 's|^http://||') - echo "Cloning from: $STRIPPED_URL" - # Perform the clone - git clone --depth 1 "https://token:${TOKEN}@${STRIPPED_URL}/${REPO}.git" . - # Checkout the specific commit - git checkout $SHA - + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Install Nix + uses: cachix/install-nix-action@v26 + with: + nix_path: nixpkgs=channel:nixos-unstable + extra_nix_config: | + experimental-features = nix-command flakes + sandbox = false + - name: Build Docker Image via Nix Flake run: | - nix build ./build/#dockerImage - docker load -i result - + nix build .#dockerImage --print-build-logs + docker load < result + - name: Log in to Gitea Container Registry uses: docker/login-action@v3 with: registry: ${{ env.REGISTRY }} username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - + - name: Tag and Push Docker Image run: | VERSION=${{ github.run_number }} - TARGET_IMAGE=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} - nix shell nixpkgs#docker - # Replace 'nix-built-image:latest' with your flake's internal image name - docker tag nix-built-image:latest $TARGET_IMAGE:$VERSION + TARGET_IMAGE=${{ env.REGISTRY }}/${{ github.repository_owner }}/${{ env.IMAGE_NAME }} + + # Auto-detect the built image name + SOURCE_IMAGE=$(docker images --format "{{.Repository}}:{{.Tag}}" | head -n 1) + + docker tag $SOURCE_IMAGE $TARGET_IMAGE:$VERSION + docker tag $SOURCE_IMAGE $TARGET_IMAGE:latest docker push $TARGET_IMAGE:$VERSION - + docker push $TARGET_IMAGE:latest + + - name: Setup Helm + uses: azure/setup-helm@v4 + with: + version: v3.14.0 + - name: Package Helm Chart run: | VERSION=${{ github.run_number }} - - nix shell nixpkgs#kubernetes-helm - # Packages the chart using the dynamically injected repo name helm package ops/chart --version $VERSION --app-version $VERSION - + - name: Push Helm Chart to Gitea Registry run: | VERSION=${{ github.run_number }} CHART_FILE=${{ env.CHART_NAME }}-${VERSION}.tgz - curl --user "${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}" \ + curl -f --user "${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}" \ -X POST \ --upload-file ./$CHART_FILE \ "${{ github.server_url }}/api/packages/${{ github.repository_owner }}/helm/api/charts"