From 72143a95f11bf89210a0fee4c31e7adec7efea9b Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Wed, 15 Sep 2021 10:57:26 +0200 Subject: [PATCH] chore(gitlab-ci): ... --- .gitlab-ci.yml | 142 +++++++++++++++++++++++++++++++++++++++++++++++-- flake.nix | 6 ++- 2 files changed, 144 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6095e829d..ea245ac00 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -12,12 +12,15 @@ variables: NIX_PATH: "nixpkgs=http://nixos.org/channels/nixos-21.05/nixexprs.tar.xz" stages: - - setup + - frontend:build + - backend:build + - docker:build node dependencies: - stage: setup + stage: frontend:build script: - nix -L build -o node-dependencies .#uniworxNodeDependencies + - nix-store --export $(nix-store -qR node-dependencies) > node-dependencies.nar before_script: - install -m 0644 .gitlab-ci/nix-bootstrap.conf /etc/nix/nix.conf - nix-env -f '' -riA envsubst @@ -29,7 +32,140 @@ node dependencies: - install -v -T -m 0644 "${FONTAWESOME_NPM_AUTH_FILE}" /etc/fontawesome-token artifacts: paths: - - node-dependencies + - node-dependencies.nar + name: "${CI_JOB_NAME}-${CI_COMMIT_SHORT_SHA}" + expire_in: "1 day" + retry: 2 + interruptible: true + +well known: + stage: frontend:build + script: + - nix-store --import well-known.nar + before_script: + - install -m 0644 .gitlab-ci/nix-bootstrap.conf /etc/nix/nix.conf + - nix-env -f '' -riA envsubst + - envsubst -i .gitlab-ci/nix.conf -o /etc/nix/nix.conf + - git config --global init.defaultBranch master + - install -v -m 0700 -d ~/.ssh + - install -v -T -m 0644 "${SSH_KNOWN_HOSTS}" ~/.ssh/known_hosts + - install -v -T -m 0400 "${SSH_DEPLOY_KEY}" ~/.ssh/deploy && echo "IdentityFile ~/.ssh/deploy" >> ~/.ssh/config; + - install -v -T -m 0644 "${FONTAWESOME_NPM_AUTH_FILE}" /etc/fontawesome-token + needs: + - job: node dependencies + artifacts: true + artifacts: + paths: + - well-known.nar + name: "${CI_JOB_NAME}-${CI_COMMIT_SHORT_SHA}" + expire_in: "1 day" + retry: 2 + interruptible: true + +frontend: + stage: frontend:build + script: + - nix-store --import frontend.nar + before_script: + - install -m 0644 .gitlab-ci/nix-bootstrap.conf /etc/nix/nix.conf + - nix-env -f '' -riA envsubst + - envsubst -i .gitlab-ci/nix.conf -o /etc/nix/nix.conf + - git config --global init.defaultBranch master + - install -v -m 0700 -d ~/.ssh + - install -v -T -m 0644 "${SSH_KNOWN_HOSTS}" ~/.ssh/known_hosts + - install -v -T -m 0400 "${SSH_DEPLOY_KEY}" ~/.ssh/deploy && echo "IdentityFile ~/.ssh/deploy" >> ~/.ssh/config; + - install -v -T -m 0644 "${FONTAWESOME_NPM_AUTH_FILE}" /etc/fontawesome-token + needs: + - job: node dependencies + artifacts: true + - job: well-known + artifacts: true + artifacts: + paths: + - frontend.nar + name: "${CI_JOB_NAME}-${CI_COMMIT_SHORT_SHA}" + expire_in: "1 day" + retry: 2 + interruptible: true + +backend: + stage: backend:build + script: + - nix-store --import ' -riA envsubst + - envsubst -i .gitlab-ci/nix.conf -o /etc/nix/nix.conf + - git config --global init.defaultBranch master + - install -v -m 0700 -d ~/.ssh + - install -v -T -m 0644 "${SSH_KNOWN_HOSTS}" ~/.ssh/known_hosts + - install -v -T -m 0400 "${SSH_DEPLOY_KEY}" ~/.ssh/deploy && echo "IdentityFile ~/.ssh/deploy" >> ~/.ssh/config; + - install -v -T -m 0644 "${FONTAWESOME_NPM_AUTH_FILE}" /etc/fontawesome-token + needs: + - job: frontend + artifacts: true + artifacts: + paths: + - bin/ + name: "${CI_JOB_NAME}-${CI_COMMIT_SHORT_SHA}" + expire_in: "1 day" + retry: 2 + interruptible: true + +demo docker: + stage: docker:build + script: + - nix-store --import ' -riA envsubst + - envsubst -i .gitlab-ci/nix.conf -o /etc/nix/nix.conf + - git config --global init.defaultBranch master + - install -v -m 0700 -d ~/.ssh + - install -v -T -m 0644 "${SSH_KNOWN_HOSTS}" ~/.ssh/known_hosts + - install -v -T -m 0400 "${SSH_DEPLOY_KEY}" ~/.ssh/deploy && echo "IdentityFile ~/.ssh/deploy" >> ~/.ssh/config; + - install -v -T -m 0644 "${FONTAWESOME_NPM_AUTH_FILE}" /etc/fontawesome-token + needs: + - job: backend + artifacts: true + artifacts: + paths: + - uniworx-demo.tar.gz + name: "${CI_JOB_NAME}-${CI_COMMIT_SHORT_SHA}" + expire_in: "1 day" + retry: 2 + interruptible: true + +docker: + stage: docker:build + script: + - nix-store --import ' -riA envsubst + - envsubst -i .gitlab-ci/nix.conf -o /etc/nix/nix.conf + - git config --global init.defaultBranch master + - install -v -m 0700 -d ~/.ssh + - install -v -T -m 0644 "${SSH_KNOWN_HOSTS}" ~/.ssh/known_hosts + - install -v -T -m 0400 "${SSH_DEPLOY_KEY}" ~/.ssh/deploy && echo "IdentityFile ~/.ssh/deploy" >> ~/.ssh/config; + - install -v -T -m 0644 "${FONTAWESOME_NPM_AUTH_FILE}" /etc/fontawesome-token + needs: + - job: backend + artifacts: true + artifacts: + paths: + - uniworx.tar.gz name: "${CI_JOB_NAME}-${CI_COMMIT_SHORT_SHA}" expire_in: "1 day" retry: 2 diff --git a/flake.nix b/flake.nix index c0e07cded..47f5fee9f 100644 --- a/flake.nix +++ b/flake.nix @@ -106,9 +106,13 @@ [[ -n "''${1}" ]] && shift ${pkgs.skopeo}/bin/skopeo ''${@} --insecure-policy copy docker-archive://${dockerImage} ''${target} ''; + uniworxBackend = pkgs.symlinkJoin { + name = "uniworx"; + paths = with pkgs; [ "uniworx:exe:uniworx" "uniworx:exe:uniworxdb" "uniworx:exe:uniworxload" "uniworx:exe:uniworx-wflint" ]; + }; in { packages = haskellFlake.packages // { - inherit (pkgs) uniworxNodeDependencies uniworxWellKnown uniworxFrontend uniworxDemoDocker uniworxDocker; + inherit (pkgs) uniworxNodeDependencies uniworxWellKnown uniworxFrontend uniworxBackend uniworxDemoDocker uniworxDocker; }; apps = haskellFlake.apps // { pushUniworxDemoDocker = flake-utils.lib.mkApp { drv = mkPushUniworxDocker pkgs.uniworxDemoDocker; };