Added build_docker.sh script

This commit is contained in:
2024-01-24 22:34:56 +01:00
parent dcaecba393
commit d232510c0e
3 changed files with 63 additions and 8 deletions

2
.gitignore vendored
View File

@@ -23,3 +23,5 @@ htmlcov
# georgs # georgs
pkgs/.vs/ pkgs/.vs/
pkgs/clan-cli/.hypothesis/ pkgs/clan-cli/.hypothesis/
ui-assets.tar.gz
ui-release

View File

@@ -24,9 +24,8 @@ For Entity object go to
- [tests/openapi_client/docs/ResolutionApi.md](tests/openapi_client/docs/ResolutionApi.md) - [tests/openapi_client/docs/ResolutionApi.md](tests/openapi_client/docs/ResolutionApi.md)
- [tests/openapi_client/docs/RepositoriesApi.md](tests/openapi_client/docs/RepositoriesApi.md) - [tests/openapi_client/docs/RepositoriesApi.md](tests/openapi_client/docs/RepositoriesApi.md)
# Building a Docker Image # Building a Docker Image if the Backend Changed
To build a new docker image when the backend code changed be inside the `pkgs/clan-cli` folder and execute:
To build a docker image of the frontend and backend be inside the `pkgs/clan-cli` folder and execute:
```bash ```bash
nix build .#clan-docker nix build .#clan-docker
@@ -50,6 +49,20 @@ docker run -p 127.0.0.1:2979:2979 clan-docker:latest
## Docker build with UI changes ## Docker build with UI changes
To build a new docker image when the frontend code changed you first need
to get the `GITLAB_TOKEN` go to [repo access tokens](https://git.tu-berlin.de/internet-of-services-lab/service-aware-network-front-end/-/settings/access_tokens) and generate one. Then execute
```bash
export GITLAB_TOKEN="<your-access-token>"
```
Afterwards you can execute:
```bash
./build_docker.sh
```
### The Script Explained
If changes to the UI have been made, and you want them to propagate to the docker container edit the file: [../ui/nix/ui-assets.nix](../ui/nix/ui-assets.nix). If changes to the UI have been made, and you want them to propagate to the docker container edit the file: [../ui/nix/ui-assets.nix](../ui/nix/ui-assets.nix).
This is where a release version of the frontend is downloaded and integrated into the cli and the docker build. To do this first execute This is where a release version of the frontend is downloaded and integrated into the cli and the docker build. To do this first execute
@@ -63,11 +76,7 @@ Make a tarball out of it called `ui-assets.tar.gz`
tar -czvf ui-assets.tar.gz ui-release/lib/node_modules/clan-ui/out/ tar -czvf ui-assets.tar.gz ui-release/lib/node_modules/clan-ui/out/
``` ```
Upload ui-assets.tar.gz to gitlab. To get the `GITLAB_TOKEN` go to [repo access tokens](https://git.tu-berlin.de/internet-of-services-lab/service-aware-network-front-end/-/settings/access_tokens) and generate one. Then execute Upload ui-assets.tar.gz to gitlab.
```bash
export GITLAB_TOKEN="<your-access-token>"
```
```bash ```bash
curl --header "PRIVATE-TOKEN: $GITLAB_TOKEN" \ curl --header "PRIVATE-TOKEN: $GITLAB_TOKEN" \
@@ -121,6 +130,8 @@ Push the image to the git registry
docker image push git.tu-berlin.de:5000/internet-of-services-lab/service-aware-network-front-end:latest docker image push git.tu-berlin.de:5000/internet-of-services-lab/service-aware-network-front-end:latest
``` ```
# Using the Uploaded Docker Image
Pull the image Pull the image
```bash ```bash

42
pkgs/clan-cli/build_docker.sh Executable file
View File

@@ -0,0 +1,42 @@
#!/usr/bin/env bash
# shellcheck shell=bash
set -euo pipefail
# GITLAB_TOKEN
if [[ -z "${GITLAB_TOKEN:-}" ]]; then
cat <<EOF
GITLAB_TOKEN environment var is not set. Please generate a new token under
https://git.tu-berlin.de/internet-of-services-lab/service-aware-network-front-end/-/settings/access_tokens
EOF
exit 1
fi
# Create a new ui build
nix build .#ui --out-link ui-release
tar -czvf ui-assets.tar.gz ui-release/lib/node_modules/clan-ui/out/
# upload ui assets to gitlab
gitlab_base="https://git.tu-berlin.de/api/v4/projects/internet-of-services-lab%2Fservice-aware-network-front-end"
curl --header "PRIVATE-TOKEN: $GITLAB_TOKEN" \
--upload-file ./ui-assets.tar.gz \
"$gitlab_base/packages/generic/ui-assets/1.0.0/ui-assets.tar.gz"
# write url and hash to ui-assets.nix
url="$gitlab_base/packages/generic/ui-assets/1.0.0/ui-assets.tar.gz"
PROJECT_DIR=$(git rev-parse --show-toplevel)
cat > "$PROJECT_DIR/pkgs/ui/nix/ui-assets.nix" <<EOF
{ fetchzip }:
fetchzip {
url = "$url";
sha256 = "$(nix-prefetch-url --unpack $url)";
}
EOF
cat <<EOF
Please commit the changes to ui-assets.nix and push them to the repository.
If you want clan webui to use the new ui assets.
$ git commit -m "Update ui-assets.nix" "$PROJECT_DIR/pkgs/ui/nix/ui-assets.nix"
$ git push
EOF