diff --git a/.gitea/workflows/docker-release.yml b/.gitea/workflows/docker-release.yml index b4aafc1c..c09f5b5f 100644 --- a/.gitea/workflows/docker-release.yml +++ b/.gitea/workflows/docker-release.yml @@ -30,7 +30,10 @@ jobs: uses: docker/setup-buildx-action@v3 - name: Set up the environment + id: setup run: | + echo "build_unix_time=$(date '+%s')" >> "$GITHUB_OUTPUT" + echo "build_date=$(date '+%Y%m%d')" >> "$GITHUB_OUTPUT" sed -r -i 's#FROM( --.*)? (.*:.*)?#FROM\1 ${{ secrets.DOCKER_REPO }}/mirrors/\2#g' Dockerfile cat >> docker/custom-backend-pre-setup.sh <> "$GITHUB_OUTPUT" + echo "build_date=$(date '+%Y%m%d')" >> "$GITHUB_OUTPUT" sed -r -i 's#FROM( --.*)? (.*:.*)?#FROM\1 ${{ secrets.DOCKER_REPO }}/mirrors/\2#g' Dockerfile cat >> docker/custom-backend-pre-setup.sh <> "$GITHUB_OUTPUT" + echo "build_date=$(date '+%Y%m%d')" >> "$GITHUB_OUTPUT" echo "ezbookkeeping_docker_bake_meta_file_path=${{ runner.temp }}/bake-meta.json" >> "$GITHUB_OUTPUT" echo "ezbookkeeping_docker_bake_meta_artifact_name=ezbookkeeping-build-dev-docker-bake-meta-${{ github.run_id }}" >> "$GITHUB_OUTPUT" echo "ezbookkeeping_docker_digests_file_path=${{ runner.temp }}/digests" >> "$GITHUB_OUTPUT" @@ -63,6 +67,8 @@ jobs: - uses: ./.github/actions/build-linux-docker-and-package with: + build-unix-time: ${{ needs.setup.outputs.build-unix-time }} + build-date: ${{ needs.setup.outputs.build-date }} check-3rd-api: ${{ vars.CHECK_3RD_API }} skip-tests: ${{ vars.SKIP_TESTS }} platform: linux/amd64 @@ -95,6 +101,8 @@ jobs: - uses: ./.github/actions/build-linux-docker-and-package with: + build-unix-time: ${{ needs.setup.outputs.build-unix-time }} + build-date: ${{ needs.setup.outputs.build-date }} check-3rd-api: ${{ vars.CHECK_3RD_API }} skip-tests: ${{ vars.SKIP_TESTS }} platform: ${{ matrix.platform }} @@ -118,6 +126,8 @@ jobs: - uses: ./.github/actions/build-windows-backend with: + build-unix-time: ${{ needs.setup.outputs.build-unix-time }} + build-date: ${{ needs.setup.outputs.build-date }} check-3rd-api: ${{ vars.CHECK_3RD_API }} skip-tests: ${{ vars.SKIP_TESTS }} backend-artifact-name-prefix: ${{ needs.setup.outputs.ezbookkeeping-backend-artifact-name-prefix }} diff --git a/.github/workflows/build-release.yml b/.github/workflows/build-release.yml index 0dd2c063..44963ecf 100644 --- a/.github/workflows/build-release.yml +++ b/.github/workflows/build-release.yml @@ -9,6 +9,8 @@ jobs: setup: runs-on: ubuntu-latest outputs: + build-unix-time: ${{ steps.variable.outputs.build_unix_time }} + build-date: ${{ steps.variable.outputs.build_date }} docker-version: ${{ steps.meta.outputs.version }} docker-tags: ${{ steps.meta.outputs.tags }} docker-labels: ${{ steps.meta.outputs.labels }} @@ -37,6 +39,8 @@ jobs: - name: Set up variables id: variable run: | + echo "build_unix_time=$(date '+%s')" >> "$GITHUB_OUTPUT" + echo "build_date=$(date '+%Y%m%d')" >> "$GITHUB_OUTPUT" echo "ezbookkeeping_docker_bake_meta_file_path=${{ runner.temp }}/bake-meta.json" >> "$GITHUB_OUTPUT" echo "ezbookkeeping_docker_bake_meta_artifact_name=ezbookkeeping-build-release-docker-bake-meta-${{ github.run_id }}" >> "$GITHUB_OUTPUT" echo "ezbookkeeping_docker_digests_file_path=${{ runner.temp }}/digests" >> "$GITHUB_OUTPUT" @@ -67,6 +71,8 @@ jobs: - uses: ./.github/actions/build-linux-docker-and-package with: release-build: 1 + build-unix-time: ${{ needs.setup.outputs.build-unix-time }} + build-date: ${{ needs.setup.outputs.build-date }} check-3rd-api: ${{ vars.CHECK_3RD_API }} skip-tests: ${{ vars.SKIP_TESTS }} platform: linux/amd64 @@ -102,6 +108,8 @@ jobs: - uses: ./.github/actions/build-linux-docker-and-package with: release-build: 1 + build-unix-time: ${{ needs.setup.outputs.build-unix-time }} + build-date: ${{ needs.setup.outputs.build-date }} check-3rd-api: ${{ vars.CHECK_3RD_API }} skip-tests: ${{ vars.SKIP_TESTS }} platform: ${{ matrix.platform }} @@ -149,6 +157,8 @@ jobs: - uses: ./.github/actions/build-windows-backend with: release-build: 1 + build-unix-time: ${{ needs.setup.outputs.build-unix-time }} + build-date: ${{ needs.setup.outputs.build-date }} check-3rd-api: ${{ vars.CHECK_3RD_API }} skip-tests: ${{ vars.SKIP_TESTS }} backend-artifact-name-prefix: ${{ needs.setup.outputs.ezbookkeeping-backend-artifact-name-prefix }} diff --git a/.github/workflows/build-snapshot.yml b/.github/workflows/build-snapshot.yml index f2f035b7..c4ffc59b 100644 --- a/.github/workflows/build-snapshot.yml +++ b/.github/workflows/build-snapshot.yml @@ -9,6 +9,8 @@ jobs: setup: runs-on: ubuntu-latest outputs: + build-unix-time: ${{ steps.variable.outputs.build_unix_time }} + build-date: ${{ steps.variable.outputs.build_date }} docker-version: ${{ steps.meta.outputs.version }} docker-tags: ${{ steps.meta.outputs.tags }} docker-labels: ${{ steps.meta.outputs.labels }} @@ -37,6 +39,8 @@ jobs: - name: Set up variables id: variable run: | + echo "build_unix_time=$(date '+%s')" >> "$GITHUB_OUTPUT" + echo "build_date=$(date '+%Y%m%d')" >> "$GITHUB_OUTPUT" echo "ezbookkeeping_docker_bake_meta_file_path=${{ runner.temp }}/bake-meta.json" >> "$GITHUB_OUTPUT" echo "ezbookkeeping_docker_bake_meta_artifact_name=ezbookkeeping-build-dev-docker-bake-meta-${{ github.run_id }}" >> "$GITHUB_OUTPUT" echo "ezbookkeeping_docker_digests_file_path=${{ runner.temp }}/digests" >> "$GITHUB_OUTPUT" @@ -66,6 +70,8 @@ jobs: - uses: ./.github/actions/build-linux-docker-and-package with: + build-unix-time: ${{ needs.setup.outputs.build-unix-time }} + build-date: ${{ needs.setup.outputs.build-date }} check-3rd-api: ${{ vars.CHECK_3RD_API }} skip-tests: ${{ vars.SKIP_TESTS }} platform: linux/amd64 @@ -100,6 +106,8 @@ jobs: - uses: ./.github/actions/build-linux-docker-and-package with: + build-unix-time: ${{ needs.setup.outputs.build-unix-time }} + build-date: ${{ needs.setup.outputs.build-date }} check-3rd-api: ${{ vars.CHECK_3RD_API }} skip-tests: ${{ vars.SKIP_TESTS }} platform: ${{ matrix.platform }} @@ -146,6 +154,8 @@ jobs: - uses: ./.github/actions/build-windows-backend with: + build-unix-time: ${{ needs.setup.outputs.build-unix-time }} + build-date: ${{ needs.setup.outputs.build-date }} check-3rd-api: ${{ vars.CHECK_3RD_API }} skip-tests: ${{ vars.SKIP_TESTS }} backend-artifact-name-prefix: ${{ needs.setup.outputs.ezbookkeeping-backend-artifact-name-prefix }} diff --git a/Dockerfile b/Dockerfile index 99b89447..601b6478 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,10 +2,14 @@ FROM golang:1.25.3-alpine3.22 AS be-builder ARG RELEASE_BUILD ARG BUILD_PIPELINE +ARG BUILD_UNIXTIME +ARG BUILD_DATE ARG CHECK_3RD_API ARG SKIP_TESTS ENV RELEASE_BUILD=$RELEASE_BUILD ENV BUILD_PIPELINE=$BUILD_PIPELINE +ENV BUILD_UNIXTIME=$BUILD_UNIXTIME +ENV BUILD_DATE=$BUILD_DATE ENV CHECK_3RD_API=$CHECK_3RD_API ENV SKIP_TESTS=$SKIP_TESTS WORKDIR /go/src/github.com/mayswind/ezbookkeeping @@ -18,8 +22,12 @@ RUN ./build.sh backend FROM --platform=$BUILDPLATFORM node:24.10.0-alpine3.22 AS fe-builder ARG RELEASE_BUILD ARG BUILD_PIPELINE +ARG BUILD_UNIXTIME +ARG BUILD_DATE ENV RELEASE_BUILD=$RELEASE_BUILD ENV BUILD_PIPELINE=$BUILD_PIPELINE +ENV BUILD_UNIXTIME=$BUILD_UNIXTIME +ENV BUILD_DATE=$BUILD_DATE WORKDIR /go/src/github.com/mayswind/ezbookkeeping COPY . . RUN docker/frontend-build-pre-setup.sh diff --git a/build.bat b/build.bat index 4477e85c..322926cb 100644 --- a/build.bat +++ b/build.bat @@ -8,8 +8,8 @@ set "RELEASE=%RELEASE_BUILD%" set "RELEASE_TYPE=unknown" set "VERSION=" set "COMMIT_HASH=" -set "BUILD_UNIXTIME=" -set "BUILD_DATE=" +set "BUILD_UNIXTIME=%BUILD_UNIXTIME%" +set "BUILD_DATE=%BUILD_DATE%" set "PACKAGE_FILENAME=" for /f %%a in ('"prompt $E$S & echo on & for %%b in (1) do rem"') do set "ESC=%%a" @@ -113,8 +113,14 @@ goto :pre_parse_args set VERSION=%VERSION:,=% set VERSION=%VERSION:"=% for /f %%x in ('git rev-parse --short^=7 HEAD') do set "COMMIT_HASH=%%x" - call :set_unixtime BUILD_UNIXTIME - call :set_date BUILD_DATE + + if "%BUILD_UNIXTIME%"=="" ( + call :set_unixtime BUILD_UNIXTIME + ) + + if "%BUILD_DATE%"=="" ( + call :set_date BUILD_DATE + ) :main if "%TYPE%"=="backend" call :build_backend & goto :end diff --git a/build.ps1 b/build.ps1 index 637873b0..f41b95f0 100644 --- a/build.ps1 +++ b/build.ps1 @@ -11,8 +11,8 @@ $script:SkipTests = $env:SKIP_TESTS $script:ReleaseType = "unknown" $script:Version = "" $script:CommitHash = "" -$script:BuildUnixTime = "" -$script:BuildDate = "" +$script:BuildUnixTime = $env:BUILD_UNIXTIME +$script:BuildDate = $env:BUILD_DATE function Write-Red($msg) { Write-Host $msg -ForegroundColor Red @@ -79,8 +79,14 @@ function Check-Type-Dependencies { function Set-Build-Parameters { $script:Version = (Get-Content package.json | ConvertFrom-Json).version $script:CommitHash = git rev-parse --short=7 HEAD - $script:BuildUnixTime = [int][double]::Parse((Get-Date -UFormat %s)) - $script:BuildDate = Get-Date -Format "yyyyMMdd" + + if (-not $BuildUnixTime) { + $script:BuildUnixTime = [int][double]::Parse((Get-Date -UFormat %s)) + } + + if (-not $BuildDate) { + $script:BuildDate = Get-Date -Format "yyyyMMdd" + } } function Build-Backend { diff --git a/build.sh b/build.sh index d78e0d7f..9d438746 100755 --- a/build.sh +++ b/build.sh @@ -8,7 +8,8 @@ RELEASE=${RELEASE_BUILD:-"0"} RELEASE_TYPE="unknown" VERSION="" COMMIT_HASH="" -BUILD_UNIXTIME="" +BUILD_UNIXTIME="${BUILD_UNIXTIME}" +BUILD_DATE="${BUILD_DATE}" PACKAGE_FILENAME="" DOCKER_TAG="" @@ -118,7 +119,14 @@ check_type_dependencies() { set_build_parameters() { VERSION="$(grep '"version": ' package.json | awk -F ':' '{print $2}' | tr -d ' ' | tr -d ',' | tr -d '"')" COMMIT_HASH="$(git rev-parse --short=7 HEAD)" - BUILD_UNIXTIME="$(date '+%s')" + + if [ -z "$BUILD_UNIXTIME" ]; then + BUILD_UNIXTIME="$(date '+%s')" + fi + + if [ -z "$BUILD_DATE" ]; then + BUILD_DATE="$(date '+%Y%m%d')" + fi } build_backend() { @@ -203,7 +211,7 @@ build_package() { package_file_name="$VERSION"; if [ "$RELEASE" = "0" ]; then - package_file_name="$package_file_name-$(date '+%Y%m%d')" + package_file_name="$package_file_name-$BUILD_DATE" fi package_file_name="ezbookkeeping-$package_file_name-$(arch).tar.gz" @@ -237,7 +245,7 @@ build_docker() { docker_tag="$VERSION" if [ "$RELEASE" = "0" ]; then - docker_tag="SNAPSHOT-$(date '+%Y%m%d')"; + docker_tag="SNAPSHOT-$BUILD_DATE"; fi docker_tag="ezbookkeeping:$docker_tag"