diff --git a/.gitea/workflows/docker-push.yaml b/.gitea/workflows/docker-push.yaml new file mode 100644 index 0000000..e62d067 --- /dev/null +++ b/.gitea/workflows/docker-push.yaml @@ -0,0 +1,35 @@ +name: Nix Docker Push Test +on: [push] + +jobs: + build-and-push: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Install Nix + uses: cachix/install-nix-action@v27 + + - name: Build Docker Image with Nix + run: | + nix build .#dockerImage + cp result hello-image.tar.gz + + - name: Load image to Local Docker + run: docker load < hello-image.tar.gz + + - name: Login to Gitea Registry + run: | + echo "${{ secrets.GITEA_TOKEN }}" | docker login git.zhukovsky.me -u ${{ gitea.actor }} --password-stdin + + - name: Tag and Push + run: | + # В Gitea путь к образу: // + # Приводим к нижнему регистру для реестра + REGISTRY_IMAGE="git.zhukovsky.me/$(echo ${{ gitea.repository }} | tr '[:upper:]' '[:lower:]')" + + # Находим ID образа, который мы только что загрузили (test-nix-hello:latest) + docker tag test-nix-hello:latest $REGISTRY_IMAGE:latest + docker push $REGISTRY_IMAGE:latest + diff --git a/flake.nix b/flake.nix index 471067e..365c7fb 100644 --- a/flake.nix +++ b/flake.nix @@ -1,17 +1,31 @@ { - description = "A simple Nix flake for testing Gitea Actions"; + description = "A simple Nix flake for testing Gitea Actions Docker build"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; }; - outputs = { self, nixpkgs }: + outputs = { nixpkgs, ... }: let system = "x86_64-linux"; pkgs = nixpkgs.legacyPackages.${system}; in { + # Обычный пакет packages.${system}.default = pkgs.hello; + + # Docker образ + packages.${system}.dockerImage = pkgs.dockerTools.buildImage { + name = "test-nix-hello"; + tag = "latest"; + copyToRoot = pkgs.buildEnv { + name = "image-root"; + paths = [ pkgs.hello pkgs.coreutils ]; + pathsToLink = [ "/bin" ]; + }; + config = { + Cmd = [ "/bin/hello" ]; + }; + }; }; } -