build script supports setting the build time and date through environment variables
This commit is contained in:
@@ -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 <<EOF
|
||||
#!/bin/sh
|
||||
@@ -53,6 +56,8 @@ jobs:
|
||||
build-args: |
|
||||
RELEASE_BUILD=1
|
||||
BUILD_PIPELINE=1
|
||||
BUILD_UNIXTIME=${{ steps.setup.outputs.build_unix_time }}
|
||||
BUILD_DATE=${{ steps.setup.outputs.build_date }}
|
||||
CHECK_3RD_API=${{ vars.CHECK_3RD_API }}
|
||||
SKIP_TESTS=${{ vars.SKIP_TESTS }}
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
|
||||
@@ -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 <<EOF
|
||||
#!/bin/sh
|
||||
@@ -52,6 +55,8 @@ jobs:
|
||||
push: true
|
||||
build-args: |
|
||||
BUILD_PIPELINE=1
|
||||
BUILD_UNIXTIME=${{ steps.setup.outputs.build_unix_time }}
|
||||
BUILD_DATE=${{ steps.setup.outputs.build_date }}
|
||||
CHECK_3RD_API=${{ vars.CHECK_3RD_API }}
|
||||
SKIP_TESTS=${{ vars.SKIP_TESTS }}
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
|
||||
@@ -4,6 +4,12 @@ inputs:
|
||||
release-build:
|
||||
required: false
|
||||
type: string
|
||||
build-unix-time:
|
||||
required: false
|
||||
type: string
|
||||
build-date:
|
||||
required: false
|
||||
type: string
|
||||
check-3rd-api:
|
||||
required: false
|
||||
type: string
|
||||
@@ -83,6 +89,8 @@ runs:
|
||||
*.platform=${{ inputs.platform }}
|
||||
*.args.RELEASE_BUILD=${{ inputs.release-build }}
|
||||
*.args.BUILD_PIPELINE=1
|
||||
*.args.BUILD_UNIXTIME=${{ inputs.build-unix-time }}
|
||||
*.args.BUILD_DATE=${{ inputs.build-date }}
|
||||
*.args.CHECK_3RD_API=${{ inputs.check-3rd-api }}
|
||||
*.args.SKIP_TESTS=${{ inputs.skip-tests }}
|
||||
*.output=type=image,push-by-digest=true,name-canonical=true,push=${{ inputs.docker-push }}
|
||||
|
||||
@@ -13,6 +13,12 @@ inputs:
|
||||
release-build:
|
||||
required: false
|
||||
type: string
|
||||
build-unix-time:
|
||||
required: false
|
||||
type: string
|
||||
build-date:
|
||||
required: false
|
||||
type: string
|
||||
check-3rd-api:
|
||||
required: false
|
||||
type: string
|
||||
@@ -55,6 +61,8 @@ runs:
|
||||
env:
|
||||
RELEASE_BUILD: "${{ inputs.release-build }}"
|
||||
BUILD_PIPELINE: "1"
|
||||
BUILD_UNIXTIME: "${{ inputs.build-unix-time }}"
|
||||
BUILD_DATE: "${{ inputs.build-date }}"
|
||||
CHECK_3RD_API: "${{ inputs.check-3rd-api }}"
|
||||
SKIP_TESTS: "${{ inputs.skip-tests }}"
|
||||
run: |
|
||||
|
||||
10
.github/workflows/build-non-main-branch.yml
vendored
10
.github/workflows/build-non-main-branch.yml
vendored
@@ -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-tags: ${{ steps.meta.outputs.tags }}
|
||||
docker-labels: ${{ steps.meta.outputs.labels }}
|
||||
ezbookkeeping-docker-bake-meta-file-path: ${{ steps.variable.outputs.ezbookkeeping_docker_bake_meta_file_path }}
|
||||
@@ -34,6 +36,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"
|
||||
@@ -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 }}
|
||||
|
||||
10
.github/workflows/build-release.yml
vendored
10
.github/workflows/build-release.yml
vendored
@@ -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 }}
|
||||
|
||||
10
.github/workflows/build-snapshot.yml
vendored
10
.github/workflows/build-snapshot.yml
vendored
@@ -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 }}
|
||||
|
||||
@@ -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
|
||||
|
||||
10
build.bat
10
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"
|
||||
|
||||
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
|
||||
|
||||
10
build.ps1
10
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
|
||||
|
||||
if (-not $BuildUnixTime) {
|
||||
$script:BuildUnixTime = [int][double]::Parse((Get-Date -UFormat %s))
|
||||
}
|
||||
|
||||
if (-not $BuildDate) {
|
||||
$script:BuildDate = Get-Date -Format "yyyyMMdd"
|
||||
}
|
||||
}
|
||||
|
||||
function Build-Backend {
|
||||
|
||||
14
build.sh
14
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)"
|
||||
|
||||
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"
|
||||
|
||||
Reference in New Issue
Block a user