Merge pull request #595 from knorrium/fix_docker_builds
Improvements to local and Docker builds
This commit is contained in:
		
						commit
						fdf15c39a6
					
				
							
								
								
									
										15
									
								
								.github/workflows/on-tag.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								.github/workflows/on-tag.yml
									
									
									
									
										vendored
									
									
								
							@ -27,6 +27,9 @@ jobs:
 | 
			
		||||
      - name: Show set environment variables
 | 
			
		||||
        run: |
 | 
			
		||||
          printf "      TAG: %s\n"  "$TAG"
 | 
			
		||||
      
 | 
			
		||||
      - name: Add SHORT_SHA env property with commit short sha
 | 
			
		||||
        run: echo "SHORT_SHA=`echo ${GITHUB_SHA} | cut -c1-8`" >> $GITHUB_ENV
 | 
			
		||||
 | 
			
		||||
      - name: Login to Docker for building
 | 
			
		||||
        run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin
 | 
			
		||||
@ -64,14 +67,6 @@ jobs:
 | 
			
		||||
          --cache-to "type=local,dest=/tmp/.buildx-cache" \
 | 
			
		||||
          --platform linux/amd64,linux/arm64,linux/arm/v7 \
 | 
			
		||||
          --tag ${{ secrets.DOCKER_HUB_USER }}/${{ matrix.service }}:$TAG \
 | 
			
		||||
          --output "type=registry" ./${{ matrix.service }}/
 | 
			
		||||
 | 
			
		||||
      - name: Run Docker buildx for ${{ matrix.service }} against latest
 | 
			
		||||
        run: |
 | 
			
		||||
          docker buildx build \
 | 
			
		||||
          --cache-from "type=local,src=/tmp/.buildx-cache" \
 | 
			
		||||
          --cache-to "type=local,dest=/tmp/.buildx-cache" \
 | 
			
		||||
          --platform linux/amd64,linux/arm64,linux/arm/v7 \
 | 
			
		||||
          --tag ${{ secrets.DOCKER_HUB_USER }}/${{ matrix.service }}:latest \
 | 
			
		||||
          --output "type=registry" ./${{ matrix.service }}/
 | 
			
		||||
 | 
			
		||||
          --output "type=registry" ./${{ matrix.service }}/ \
 | 
			
		||||
          --build-arg commitHash=$SHORT_SHA
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,8 @@
 | 
			
		||||
FROM node:12-buster-slim AS builder
 | 
			
		||||
 | 
			
		||||
ARG commitHash
 | 
			
		||||
ENV DOCKER_COMMIT_HASH=${commitHash}
 | 
			
		||||
 | 
			
		||||
WORKDIR /build
 | 
			
		||||
COPY . .
 | 
			
		||||
RUN apt-get update
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
var fs = require('fs');
 | 
			
		||||
const { execSync } = require('child_process');
 | 
			
		||||
const { spawnSync } = require('child_process');
 | 
			
		||||
 | 
			
		||||
const CONFIG_FILE_NAME = 'mempool-frontend-config.json';
 | 
			
		||||
const GENERATED_CONFIG_FILE_NAME = 'generated-config.js';
 | 
			
		||||
@ -12,15 +12,19 @@ let packetJsonVersion = '';
 | 
			
		||||
try {
 | 
			
		||||
  const rawConfig = fs.readFileSync(CONFIG_FILE_NAME);
 | 
			
		||||
  configContent = JSON.parse(rawConfig);
 | 
			
		||||
  console.log(`${CONFIG_FILE_NAME} file found, using provided config`);
 | 
			
		||||
} catch (e) {
 | 
			
		||||
  if (e.code !== 'ENOENT') {
 | 
			
		||||
    throw new Error(e);
 | 
			
		||||
  } else {
 | 
			
		||||
    console.log(`${CONFIG_FILE_NAME} file not found, using default config`);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
try {
 | 
			
		||||
  const packageJson = fs.readFileSync('package.json');
 | 
			
		||||
  packetJsonVersion = JSON.parse(packageJson).version;
 | 
			
		||||
  console.log(`mempool version ${packetJsonVersion}`);
 | 
			
		||||
} catch (e) {
 | 
			
		||||
  throw new Error(e);
 | 
			
		||||
}
 | 
			
		||||
@ -32,11 +36,23 @@ for (setting in configContent) {
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
try {
 | 
			
		||||
  const command = 'git rev-parse --short HEAD';
 | 
			
		||||
  gitCommitHash = execSync(command).toString('utf8').replace(/[\n\r\s]+$/, '');
 | 
			
		||||
} catch (e) {
 | 
			
		||||
  console.log('Could not load git commit info: ' + e.message || e);
 | 
			
		||||
if (process.env.DOCKER_COMMIT_HASH) {
 | 
			
		||||
  gitCommitHash = process.env.DOCKER_COMMIT_HASH;
 | 
			
		||||
} else {
 | 
			
		||||
  try {
 | 
			
		||||
    const gitRevParse = spawnSync('git', ['rev-parse', '--short', 'HEAD']);
 | 
			
		||||
  
 | 
			
		||||
    if (!gitRevParse.error) {
 | 
			
		||||
      gitCommitHash = gitRevParse.stdout.toString('utf-8').replace(/[\n\r\s]+$/, '');
 | 
			
		||||
      console.log(`mempool revision ${gitCommitHash}`);
 | 
			
		||||
    } else if (gitRevParse.error.code === 'ENOENT') {
 | 
			
		||||
      console.log('git not found, cannot parse git hash');
 | 
			
		||||
      gitCommitHash = '?';
 | 
			
		||||
    }
 | 
			
		||||
  } catch (e) {
 | 
			
		||||
    console.log('Could not load git commit info: ' + e.message);
 | 
			
		||||
    gitCommitHash = '?';
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const newConfig = `(function (window) {
 | 
			
		||||
@ -46,18 +62,38 @@ const newConfig = `(function (window) {
 | 
			
		||||
    window.__env.PACKAGE_JSON_VERSION = '${packetJsonVersion}';
 | 
			
		||||
  }(global || this));`;
 | 
			
		||||
 | 
			
		||||
try {
 | 
			
		||||
  const currentConfig = fs.readFileSync(GENERATED_CONFIG_FILE_NAME).toString().trim();
 | 
			
		||||
  if (currentConfig === newConfig) {
 | 
			
		||||
    console.log("Configuration not changed, skipping generation");
 | 
			
		||||
  } else {
 | 
			
		||||
    try {
 | 
			
		||||
      fs.writeFileSync(GENERATED_CONFIG_FILE_NAME, newConfig, 'utf8');
 | 
			
		||||
      console.log('Config file generated');
 | 
			
		||||
    } catch (e) {
 | 
			
		||||
      throw new Error(e);
 | 
			
		||||
    }
 | 
			
		||||
function readConfig(path) {
 | 
			
		||||
  try {
 | 
			
		||||
    const currentConfig = fs.readFileSync(path).toString().trim();
 | 
			
		||||
    return currentConfig;
 | 
			
		||||
  } catch (e) {
 | 
			
		||||
    return false;
 | 
			
		||||
  }
 | 
			
		||||
} catch (e) {
 | 
			
		||||
  throw new Error(e);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function writeConfig(path, config) {
 | 
			
		||||
  try {
 | 
			
		||||
    fs.writeFileSync(path, config, 'utf8');
 | 
			
		||||
  } catch (e) {
 | 
			
		||||
    throw new Error(e);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const currentConfig = readConfig(GENERATED_CONFIG_FILE_NAME);
 | 
			
		||||
 | 
			
		||||
if (currentConfig && currentConfig === newConfig) {
 | 
			
		||||
  console.log(`No configuration updates, skipping ${GENERATED_CONFIG_FILE_NAME} file update`);
 | 
			
		||||
  return;
 | 
			
		||||
} else if (!currentConfig) {
 | 
			
		||||
  console.log(`${GENERATED_CONFIG_FILE_NAME} file not found, creating new config file`);
 | 
			
		||||
  console.log('CONFIG: ', newConfig);
 | 
			
		||||
  writeConfig(GENERATED_CONFIG_FILE_NAME, newConfig);
 | 
			
		||||
  console.log(`${GENERATED_CONFIG_FILE_NAME} file saved`);
 | 
			
		||||
  return;
 | 
			
		||||
} else {
 | 
			
		||||
  console.log(`Configuration changes detected, updating ${GENERATED_CONFIG_FILE_NAME} file`);
 | 
			
		||||
  console.log('OLD CONFIG: ', currentConfig);
 | 
			
		||||
  console.log('NEW CONFIG: ', newConfig);
 | 
			
		||||
  writeConfig(GENERATED_CONFIG_FILE_NAME, newConfig);
 | 
			
		||||
  console.log(`${GENERATED_CONFIG_FILE_NAME} file updated`);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user