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