feat: move website to public repo #178
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Our desired pipeline using only a Nix shell environment | |
name: Check and build Kardinal | |
on: | |
push: | |
branches: | |
- main | |
tags: | |
- "v*.*.*" | |
paths-ignore: | |
- 'website/**' | |
pull_request: | |
branches: | |
- main | |
paths-ignore: | |
- 'website/**' | |
env: | |
MAIN_BRANCH: ${{ 'refs/heads/main' }} | |
jobs: | |
# Check if we should skip CI if only ./website directory was modified | |
check_skip_condition: | |
name: Check if CI should be skipped | |
runs-on: ubuntu-latest | |
outputs: | |
run_workflow: ${{ steps.check.outputs.run_workflow }} | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 # fetches all history for all branches and tags | |
- name: Check for changes outside website directory | |
id: check | |
run: | | |
if [[ "${{ github.ref }}" == "refs/heads/main" ]]; then | |
# On main branch, compare the latest commit with its parent | |
diff_base="HEAD^" | |
else | |
# On other branches or PRs, compare with the main branch | |
diff_base="origin/main" | |
fi | |
if git diff --name-only $diff_base HEAD | grep -v -e '^website/' | grep -q '^'; then | |
echo "run_workflow=true" >> $GITHUB_OUTPUT | |
else | |
echo "run_workflow=false" >> $GITHUB_OUTPUT | |
fi | |
check_nix: | |
name: Basic Check | |
needs: check_skip_condition | |
if: needs.check_skip_condition.outputs.run_workflow == 'true' | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: git checkout | |
uses: actions/checkout@v3 | |
- name: Install Nix | |
uses: DeterminateSystems/nix-installer-action@main | |
- name: Magic cache | |
uses: DeterminateSystems/magic-nix-cache-action@main | |
- name: Check Nixpkgs inputs | |
uses: DeterminateSystems/flake-checker-action@main | |
with: | |
fail-mode: true | |
# Nix-specific logic begins here | |
- name: Nix Check | |
run: | | |
nix flake check | |
- name: Check Go tidiness | |
run: | | |
git reset --hard | |
git clean -f | |
nix develop --command go-tidy-all | |
export changed_files=$(git diff-files --name-only | grep -cv ".toml$") | |
if [[ $changed_files != 0 ]]; then | |
echo "Go modules are not so tidy (run 'go-tidy-all' to fix it):" | |
git diff-files --name-only | |
exit 1 | |
fi | |
- name: Check Go formatting | |
run: | | |
git reset --hard | |
git clean -f | |
nix develop --command test -z $(gofmt -l .) | |
build_publish_images: | |
name: Test, build and publish images | |
needs: [check_skip_condition, check_nix] | |
if: needs.check_skip_condition.outputs.run_workflow == 'true' | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: git checkout | |
uses: actions/checkout@v3 | |
- name: Install Nix | |
uses: DeterminateSystems/nix-installer-action@main | |
- name: Magic cache | |
uses: DeterminateSystems/magic-nix-cache-action@main | |
- name: Build Kardinal Manager images | |
run: | | |
nix build ./#containers.x86_64-linux.kardinal-manager.arm64 --no-link --print-out-paths | |
nix build ./#containers.x86_64-linux.kardinal-manager.amd64 --no-link --print-out-paths | |
- name: Build Kardinal CLI images | |
run: | | |
nix build ./#containers.x86_64-linux.kardinal-cli.arm64 --no-link --print-out-paths | |
nix build ./#containers.x86_64-linux.kardinal-cli.amd64 --no-link --print-out-paths | |
- name: Build Redis Sidecar images | |
run: | | |
nix build ./#containers.x86_64-linux.redis-proxy-overlay.arm64 --no-link --print-out-paths | |
nix build ./#containers.x86_64-linux.redis-proxy-overlay.amd64 --no-link --print-out-paths | |
- name: Login to Docker Hub | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_TOKEN }} | |
- name: Publish images | |
if: github.ref == env.MAIN_BRANCH | |
run: | | |
nix run ./#publish-kardinal-manager-container | |
nix run ./#publish-kardinal-cli-container | |
nix run ./#publish-redis-proxy-overlay-container | |
build_clis: | |
name: Test and build cross-compiled clis | |
needs: [check_skip_condition, check_nix] | |
if: needs.check_skip_condition.outputs.run_workflow == 'true' | |
runs-on: ubuntu-22.04 | |
strategy: | |
matrix: | |
os: [linux, darwin, windows] | |
arch: [amd64, arm64] | |
steps: | |
- name: git checkout | |
uses: actions/checkout@v3 | |
- name: Install Nix | |
uses: DeterminateSystems/nix-installer-action@main | |
- name: Magic cache | |
uses: DeterminateSystems/magic-nix-cache-action@main | |
- name: Build cli | |
run: | | |
result=$(nix build ./#cross-compiled-cli.x86_64-linux.${{ matrix.os }}.${{ matrix.arch }} --no-link --print-out-paths) | |
path=$(find $result -name 'kardinal.cli*' -type f | head -n 1) | |
if [[ "${{ matrix.os }}" == "windows" ]]; then | |
binout="/tmp/kardinal-${{ matrix.os }}-${{ matrix.arch }}.exe" | |
else | |
binout="/tmp/kardinal-${{ matrix.os }}-${{ matrix.arch }}" | |
fi | |
ls -lah $path | |
ln -s $path $binout | |
ls -lah $binout | |
[ -s $binout ] |