diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index d3a053f..1ff8191 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image.yml @@ -17,18 +17,26 @@ jobs: docker: runs-on: ubuntu-latest steps: + - + name: Checkout + uses: actions/checkout@v4 + - + name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 - name: Login to Docker Hub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - name: Build and push uses: docker/build-push-action@v6 with: - push: true - tags: philippemerle/kubediagrams:latest + context: . + platforms: linux/amd64,linux/arm64 + push: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} + tags: philippemerle/kubediagrams:latest \ No newline at end of file diff --git a/flake.nix b/flake.nix index a4aafe9..321998e 100644 --- a/flake.nix +++ b/flake.nix @@ -6,15 +6,19 @@ flake-utils.url = "github:numtide/flake-utils"; }; - outputs = { self, nixpkgs, flake-utils }: - flake-utils.lib.eachDefaultSystem (system: - let + outputs = { + self, + nixpkgs, + flake-utils, + }: + flake-utils.lib.eachDefaultSystem ( + system: let pkgs = nixpkgs.legacyPackages.${system}; - pythonEnv = pkgs.python312.withPackages (ps: [ ps.pyyaml ps.diagrams ]); + pythonEnv = pkgs.python312.withPackages (ps: [ps.pyyaml ps.diagrams]); - kube-diagrams = pkgs.stdenv.mkDerivation rec { + kube-diagrams = pkgs.stdenv.mkDerivation { pname = "kube-diagrams"; - version = "0.2.0"; + version = "0.3.0"; src = self; postPatch = '' substituteInPlace bin/kube-diagrams \ @@ -27,31 +31,34 @@ ''; }; - runtimeEnv = with pkgs; [ - busybox - cacert - graphviz - kubernetes-helm - kube-diagrams - pythonEnv - ]; + runtimeEnv = with pkgs; + [ + cacert + graphviz + kubernetes-helm + kube-diagrams + pythonEnv + ] + ++ lib.optionals pkgs.stdenv.isLinux [busybox]; in { devShells.default = pkgs.mkShell { - packages = with pkgs; [ - git - lazygit - nodePackages.prettier - ] ++ runtimeEnv; + packages = with pkgs; + [ + git + lazygit + nodePackages.prettier + ] + ++ runtimeEnv; }; packages = { default = kube-diagrams; kube-diagrams = kube-diagrams; - docker = pkgs.dockerTools.buildLayeredImage { + docker = pkgs.dockerTools.buildImage { name = "ghcr.io/philippemerle/kubediagrams"; tag = "latest"; - contents = runtimeEnv; - created = "now"; + copyToRoot = runtimeEnv; + created = builtins.substring 0 8 self.lastModifiedDate; }; }; }