From 3971b37abcead6429e114724678da67d2fb3c308 Mon Sep 17 00:00:00 2001 From: Jason Kulatunga Date: Fri, 27 May 2022 12:59:32 -0700 Subject: [PATCH] attempting to fix docker image build by generating frontend version information before docker build. --- .github/workflows/docker-build.yaml | 14 +++----- .github/workflows/release-frontend.yaml | 2 ++ docker/Dockerfile | 4 +-- docker/Dockerfile.web | 4 +-- webapp/frontend/git.version.sh | 33 +++++++++++++++++++ webapp/frontend/git.version.ts | 34 -------------------- webapp/frontend/package.json | 2 -- webapp/frontend/src/environments/versions.ts | 3 +- 8 files changed, 42 insertions(+), 54 deletions(-) create mode 100755 webapp/frontend/git.version.sh delete mode 100644 webapp/frontend/git.version.ts diff --git a/.github/workflows/docker-build.yaml b/.github/workflows/docker-build.yaml index cb6d73c..dd91261 100644 --- a/.github/workflows/docker-build.yaml +++ b/.github/workflows/docker-build.yaml @@ -93,7 +93,8 @@ jobs: type=ref,enable=true,event=branch,suffix=-web type=ref,enable=true,event=tag,suffix=-web images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} - + - name: "Generate frontend version information" + run: "cd webapp/frontend && ./git.version.sh" # Build and push Docker image with Buildx (don't push on PR) # https://github.com/docker/build-push-action - name: Build and push Docker image @@ -105,10 +106,6 @@ jobs: push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} - build-args: | - GITHUB_REF_NAME=${{ env.GITHUB_REF_NAME }} - GITHUB_REF_TYPE=${{ env.GITHUB_REF_TYPE }} - GITHUB_SHA=${{ env.GITHUB_SHA }} cache-from: type=gha cache-to: type=gha,mode=max omnibus: @@ -143,7 +140,8 @@ jobs: type=ref,enable=true,event=branch,suffix=-omnibus type=ref,enable=true,event=tag,suffix=-omnibus images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} - + - name: "Generate frontend version information" + run: "cd webapp/frontend && ./git.version.sh" # Build and push Docker image with Buildx (don't push on PR) # https://github.com/docker/build-push-action - name: Build and push Docker image @@ -155,9 +153,5 @@ jobs: push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} - build-args: | - GITHUB_REF_NAME=${{ env.GITHUB_REF_NAME }} - GITHUB_REF_TYPE=${{ env.GITHUB_REF_TYPE }} - GITHUB_SHA=${{ env.GITHUB_SHA }} cache-from: type=gha cache-to: type=gha,mode=max \ No newline at end of file diff --git a/.github/workflows/release-frontend.yaml b/.github/workflows/release-frontend.yaml index e9c3317..1ef261b 100644 --- a/.github/workflows/release-frontend.yaml +++ b/.github/workflows/release-frontend.yaml @@ -15,6 +15,8 @@ jobs: uses: actions/checkout@v2 with: ref: ${{github.event.release.tag_name}} + - name: "Generate frontend version information" + run: "cd webapp/frontend && ./git.version.sh" - name: Build Frontend run: | cd webapp/frontend diff --git a/docker/Dockerfile b/docker/Dockerfile index 4cf3fd5..b6cc906 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -12,9 +12,7 @@ RUN go mod vendor && \ ######## FROM node:lts-slim as frontendbuild -ARG GITHUB_REF_NAME="" -ARG GITHUB_REF_TYPE="" -ARG GITHUB_SHA="" + #reduce logging, disable angular-cli analytics for ci environment ENV NPM_CONFIG_LOGLEVEL=warn NG_CLI_ANALYTICS=false diff --git a/docker/Dockerfile.web b/docker/Dockerfile.web index 8318b53..7e1e959 100644 --- a/docker/Dockerfile.web +++ b/docker/Dockerfile.web @@ -10,9 +10,7 @@ RUN go mod vendor && \ ######## FROM node:lts-slim as frontendbuild -ARG GITHUB_REF_NAME="" -ARG GITHUB_REF_TYPE="" -ARG GITHUB_SHA="" + #reduce logging, disable angular-cli analytics for ci environment ENV NPM_CONFIG_LOGLEVEL=warn NG_CLI_ANALYTICS=false diff --git a/webapp/frontend/git.version.sh b/webapp/frontend/git.version.sh new file mode 100755 index 0000000..ee7e3eb --- /dev/null +++ b/webapp/frontend/git.version.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash + +if [[ -z "${CI}" ]]; then + echo "running locally (not in Github Actions). generating version file from git client" + GIT_TAG=`git describe --tags` + GIT_BRANCH=`git rev-parse --abbrev-ref HEAD` + + if [[ "$GIT_BRANCH" == "master" ]]; then + VERSION_INFO="${GIT_TAG}" + else + VERSION_INFO="${GIT_BRANCH}#${GIT_TAG}" + fi +else + echo "running in Github Actions, generating version file from environmental variables" + # https://docs.github.com/en/actions/learn-github-actions/environment-variables + GITHUB_SHA + GITHUB_REF_NAME + GITHUB_REF_TYPE + + VERSION_INFO="${GITHUB_REF_NAME}" + + if [[ "$GITHUB_REF_TYPE" == "branch" ]]; then + VERSION_INFO="${VERSION_INFO}#${GITHUB_SHA::7}" + fi +fi + +echo "writing version file (version: ${VERSION_INFO})" +cat < src/environments/versions.ts +// this file is automatically generated by git.version.ts script +export const versionInfo = { + version: '${VERSION_INFO}', +}; +EOT diff --git a/webapp/frontend/git.version.ts b/webapp/frontend/git.version.ts deleted file mode 100644 index 37327c7..0000000 --- a/webapp/frontend/git.version.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { writeFileSync } from 'fs'; -import { dedent } from 'tslint/lib/utils'; -import { promisify } from 'util'; -import * as child from 'child_process'; -const exec = promisify(child.exec); - -async function createVersionsFile(filename: string) { - let versionInfo = '' - if(process.env.GITHUB_SHA){ - // we're in a github action - - versionInfo = process.env.GITHUB_REF_NAME - if(process.env.GITHUB_REF_TYPE === 'branch'){ - versionInfo += `#${process.env.GITHUB_SHA}` - } - } else { - const tag = (await exec('git describe --tags')).stdout.toString().trim(); - const branch = (await exec('git rev-parse --abbrev-ref HEAD')).stdout.toString().trim(); - - versionInfo = (branch === 'master' ? tag : branch + '#' + tag) - } - - - - const content = dedent` - // this file is automatically generated by git.version.ts script - export const versionInfo = { - version: '${versionInfo}', - };`; - - writeFileSync(filename, content, {encoding: 'utf8'}); -} - -createVersionsFile('src/environments/versions.ts'); diff --git a/webapp/frontend/package.json b/webapp/frontend/package.json index ec21a23..748b322 100644 --- a/webapp/frontend/package.json +++ b/webapp/frontend/package.json @@ -4,10 +4,8 @@ "license": "https://themeforest.net/licenses/standard", "scripts": { "ng": "ng", - "prestart": "ts-node -O '{\"module\": \"commonjs\"}' git.version.ts", "start": "ng serve --open", "start:mem": "node --max_old_space_size=6144 ./node_modules/@angular/cli/bin/ng serve --open", - "prebuild:prod": "ts-node -O '{\"module\": \"commonjs\"}' git.version.ts", "build": "ng build", "build:prod": "ng build --prod", "build:prod:mem": "node --max_old_space_size=6144 ./node_modules/@angular/cli/bin/ng build --prod", diff --git a/webapp/frontend/src/environments/versions.ts b/webapp/frontend/src/environments/versions.ts index 2502048..396f969 100644 --- a/webapp/frontend/src/environments/versions.ts +++ b/webapp/frontend/src/environments/versions.ts @@ -1,5 +1,4 @@ - // this file is automatically generated by git.version.ts script export const versionInfo = { - version: 'v0.0.0', + version: 'dev', };