From de38d611263139925184c853b439260b372f9e25 Mon Sep 17 00:00:00 2001
From: strawberry <strawberry@puppygock.gay>
Date: Thu, 18 Apr 2024 20:00:34 -0400
Subject: [PATCH] merge ci steps back into one job for now

how do i persist or reuse the "state" of previous jobs

Signed-off-by: strawberry <strawberry@puppygock.gay>
---
 .github/workflows/ci.yml | 201 ++++++++++++++++++---------------------
 1 file changed, 95 insertions(+), 106 deletions(-)

diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 8b0d4e32..52d4762a 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -26,75 +26,8 @@ permissions:
   contents: read
 
 jobs:
-  setup:
-    name: CI Setup
-    runs-on: ubuntu-latest
-    steps:
-      - name: Sync repository
-        uses: actions/checkout@v4
-
-      - name: Install Nix (with flakes and nix-command enabled)
-        uses: cachix/install-nix-action@v26
-        with:
-          nix_path: nixpkgs=channel:nixos-unstable
-
-          # Add `nix-community`, Crane, upstream Conduit, and conduwuit binary caches
-          extra_nix_config: |
-            experimental-features = nix-command flakes
-            extra-substituters = https://nix-community.cachix.org
-            extra-trusted-public-keys = nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
-            extra-substituters = https://crane.cachix.org
-            extra-trusted-public-keys = crane.cachix.org-1:8Scfpmn9w+hGdXH/Q9tTLiYAE/2dnJYRJP7kl80GuRk=
-            extra-substituters = https://nix.computer.surgery/conduit
-            extra-trusted-public-keys = conduit:ZGAf6P6LhNvnoJJ3Me3PRg7tlLSrPxcQ2RiE5LIppjo=
-            extra-substituters = https://attic.kennel.juneis.dog/conduit
-            extra-trusted-public-keys = conduit:Isq8FGyEC6FOXH6nD+BOeAA+bKp6X6UIbupSlGEPuOg=
-            extra-substituters = https://attic.kennel.juneis.dog/conduwuit
-            extra-trusted-public-keys = conduwuit:lYPVh7o1hLu1idH4Xt2QHaRa49WRGSAqzcfFd94aOTw=
-
-      - name: Add alternative Nix binary caches if specified
-        if: ${{ (env.ATTIC_ENDPOINT != '') && (env.ATTIC_PUBLIC_KEY != '') }}
-        run: |
-          echo "extra-substituters = ${{ env.ATTIC_ENDPOINT }}" >> /etc/nix/nix.conf
-          echo "extra-trusted-public-keys = ${{ env.ATTIC_PUBLIC_KEY }}" >> /etc/nix/nix.conf
-
-      - name: Pop/push Magic Nix Cache
-        uses: DeterminateSystems/magic-nix-cache-action@main
-
-      - name: Configure `nix-direnv`
-        run: |
-          echo 'source $HOME/.nix-profile/share/nix-direnv/direnvrc' > "$HOME/.direnvrc"
-
-      - name: Install `direnv` and `nix-direnv`
-        run: nix-env -f "<nixpkgs>" -iA direnv -iA nix-direnv
-
-      - name: Pop/push downloaded crate cache
-        uses: actions/cache@v4
-        with:
-          key: downloaded-crates
-          path: ~/.cargo
-
-      - name: Pop/push compiled crate cache
-        uses: actions/cache@v4
-        with:
-          key: compiled-crates-${{runner.os}}
-          path: target
-
-      # Do this to shorten the logs for the real CI step
-      - name: Populate `/nix/store`
-        run: nix develop --command true
-
-      - name: Allow direnv
-        run: direnv allow
-
-      - name: Cache x86_64 inputs for devShell
-        run: |
-          ./bin/nix-build-and-cache .#devShells.x86_64-linux.default.inputDerivation
-
-
   build-and-test:
-    name: CI and Artifacts
-    needs: setup
+    name: CI, Tests, Artifacts, and Publish
     runs-on: ubuntu-latest
     strategy:
       matrix:
@@ -117,53 +50,109 @@ jobs:
           ]
 
     steps:
-      - name: Perform continuous integration
-        run: direnv exec . engage
+    - name: Sync repository
+      uses: actions/checkout@v4
+
+    - name: Install Nix (with flakes and nix-command enabled)
+      uses: cachix/install-nix-action@v26
+      with:
+        nix_path: nixpkgs=channel:nixos-unstable
+
+        # Add `nix-community`, Crane, upstream Conduit, and conduwuit binary caches
+        extra_nix_config: |
+          experimental-features = nix-command flakes
+          extra-substituters = https://nix-community.cachix.org
+          extra-trusted-public-keys = nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
+          extra-substituters = https://crane.cachix.org
+          extra-trusted-public-keys = crane.cachix.org-1:8Scfpmn9w+hGdXH/Q9tTLiYAE/2dnJYRJP7kl80GuRk=
+          extra-substituters = https://nix.computer.surgery/conduit
+          extra-trusted-public-keys = conduit:ZGAf6P6LhNvnoJJ3Me3PRg7tlLSrPxcQ2RiE5LIppjo=
+          extra-substituters = https://attic.kennel.juneis.dog/conduit
+          extra-trusted-public-keys = conduit:Isq8FGyEC6FOXH6nD+BOeAA+bKp6X6UIbupSlGEPuOg=
+          extra-substituters = https://attic.kennel.juneis.dog/conduwuit
+          extra-trusted-public-keys = conduwuit:lYPVh7o1hLu1idH4Xt2QHaRa49WRGSAqzcfFd94aOTw=
+
+    - name: Add alternative Nix binary caches if specified
+      if: ${{ (env.ATTIC_ENDPOINT != '') && (env.ATTIC_PUBLIC_KEY != '') }}
+      run: |
+        echo "extra-substituters = ${{ env.ATTIC_ENDPOINT }}" >> /etc/nix/nix.conf
+        echo "extra-trusted-public-keys = ${{ env.ATTIC_PUBLIC_KEY }}" >> /etc/nix/nix.conf
+
+    - name: Pop/push Magic Nix Cache
+      uses: DeterminateSystems/magic-nix-cache-action@main
+
+    - name: Configure `nix-direnv`
+      run: |
+        echo 'source $HOME/.nix-profile/share/nix-direnv/direnvrc' > "$HOME/.direnvrc"
+
+    - name: Install `direnv` and `nix-direnv`
+      run: nix-env -f "<nixpkgs>" -iA direnv -iA nix-direnv
+
+    - name: Pop/push downloaded crate cache
+      uses: actions/cache@v4
+      with:
+        key: downloaded-crates
+        path: ~/.cargo
+
+    - name: Pop/push compiled crate cache
+      uses: actions/cache@v4
+      with:
+        key: compiled-crates-${{runner.os}}
+        path: target
+
+    # Do this to shorten the logs for the real CI step
+    - name: Populate `/nix/store`
+      run: nix develop --command true
+
+    - name: Allow direnv
+      run: direnv allow
+
+    - name: Cache x86_64 inputs for devShell
+      run: |
+        ./bin/nix-build-and-cache .#devShells.x86_64-linux.default.inputDerivation
 
 
-      - name: Build static artifacts
-        run: |
-          ./bin/nix-build-and-cache .#${{ matrix.target }}
-          mkdir -p target/release
-          cp -v -f result/bin/conduit target/release
-          direnv exec . cargo deb --no-build --output target/debian/${{ matrix.target }}.deb
-
-      - name: Upload static artifacts
-        uses: actions/upload-artifact@v4
-        with:
-          name: ${{ matrix.target }}
-          path: result/bin/conduit
-          if-no-files-found: error
-
-      - name: Upload static deb artifacts
-        uses: actions/upload-artifact@v4
-        with:
-          name: ${{ matrix.target }}.deb
-          path: target/debian/${{ matrix.target }}.deb
-          if-no-files-found: error
+    - name: Perform continuous integration
+      run: direnv exec . engage
 
 
-      - name: Build OCI images
-        run: |
-          ./bin/nix-build-and-cache .#oci-image-${{ matrix.oci-target }}
-          cp -v -f result oci-image-${{ matrix.oci-target }}.tar.gz
+    - name: Build static artifacts
+      run: |
+        ./bin/nix-build-and-cache .#${{ matrix.target }}
+        mkdir -p target/release
+        cp -v -f result/bin/conduit target/release
+        direnv exec . cargo deb --no-build --output target/debian/${{ matrix.target }}.deb
 
-      - name: Upload OCI image artifacts
-        uses: actions/upload-artifact@v4
-        with:
-          name: oci-image-${{ matrix.oci-target }}
-          path: oci-image-${{ matrix.oci-target }}.tar.gz
-          if-no-files-found: error
-          # don't compress again
-          compression-level: 0
+    - name: Upload static artifacts
+      uses: actions/upload-artifact@v4
+      with:
+        name: ${{ matrix.target }}
+        path: result/bin/conduit
+        if-no-files-found: error
+
+    - name: Upload static deb artifacts
+      uses: actions/upload-artifact@v4
+      with:
+        name: ${{ matrix.target }}.deb
+        path: target/debian/${{ matrix.target }}.deb
+        if-no-files-found: error
 
 
+    - name: Build OCI images
+      run: |
+        ./bin/nix-build-and-cache .#oci-image-${{ matrix.oci-target }}
+        cp -v -f result oci-image-${{ matrix.oci-target }}.tar.gz
+
+    - name: Upload OCI image artifacts
+      uses: actions/upload-artifact@v4
+      with:
+        name: oci-image-${{ matrix.oci-target }}
+        path: oci-image-${{ matrix.oci-target }}.tar.gz
+        if-no-files-found: error
+        # don't compress again
+        compression-level: 0
 
 
-  publish:
-    needs: build-and-test
-    runs-on: ubuntu-latest
-    steps:
     - name: Extract metadata for Dockerhub
       env:
         REGISTRY: registry.hub.docker.com