diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fe5f3b9..9d73bb3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -82,6 +82,11 @@ jobs: - name: Fix permissions run: | chmod +x scripts/*.sh + + - name: Write build info + run: | + echo "GIT_COMMIT=$(git rev-parse --short HEAD)" > build.txt + echo "BUILD_DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ")" >> build.txt - name: Upload client Spoolman artifact uses: actions/upload-artifact@v3 diff --git a/Dockerfile b/Dockerfile index f8044c3..7730e65 100644 --- a/Dockerfile +++ b/Dockerfile @@ -59,6 +59,10 @@ ARG BUILD_DATE=unknown ENV GIT_COMMIT=${GIT_COMMIT} ENV BUILD_DATE=${BUILD_DATE} +# Write GIT_COMMIT and BUILD_DATE to a build.txt file +RUN echo "GIT_COMMIT=${GIT_COMMIT}" > build.txt \ + && echo "BUILD_DATE=${BUILD_DATE}" >> build.txt + # Run command EXPOSE 8000 ENTRYPOINT ["/home/app/spoolman/entrypoint.sh"] diff --git a/spoolman/env.py b/spoolman/env.py index 682991a..7fe8c3b 100644 --- a/spoolman/env.py +++ b/spoolman/env.py @@ -286,10 +286,16 @@ def get_commit_hash() -> Optional[str]: Returns: Optional[str]: The commit hash. """ - commit_hash = os.getenv("GIT_COMMIT", "unknown") - if commit_hash == "unknown": + # Read commit has from build.txt + # commit is written as GIT_COMMIT= in build.txt + build_file = Path("build.txt") + if not build_file.exists(): return None - return commit_hash + with build_file.open(encoding="utf-8") as f: + for line in f: + if line.startswith("GIT_COMMIT="): + return line.split("=")[1].strip() + return None def get_build_date() -> Optional[datetime]: @@ -298,10 +304,16 @@ def get_build_date() -> Optional[datetime]: Returns: Optional[datetime.datetime]: The build date. """ - build_date = os.getenv("BUILD_DATE", "unknown") - if build_date == "unknown": + # Read build date has from build.txt + # build date is written as BUILD_DATE= in build.txt + build_file = Path("build.txt") + if not build_file.exists(): return None - return datetime.fromisoformat(build_date) + with build_file.open(encoding="utf-8") as f: + for line in f: + if line.startswith("BUILD_DATE="): + return datetime.fromisoformat(line.split("=")[1].strip()) + return None def can_write_to_data_dir() -> bool: