Creating a base image to speed up builds #4
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Copyright (c) 2024 Isaac Adams | |
# Licensed under the MIT License. See LICENSE file in the project root for full license information. | |
name: Build Base Image | |
on: | |
push: | |
paths-ignore: | |
- '.github/**' | |
- 'seeds/**' | |
- 'dump/**' | |
- 'k8s/**' | |
- '!Base.Dockerfile' | |
- '!requirements.txt' | |
- '!package-lock.json' | |
- '.gitignore' | |
concurrency: | |
group: deployment | |
env: | |
PROJECT_ID: crank-404520 | |
SERVICE: crank | |
REGION: us-west1 | |
ARTIFACT_REPO: crank-repository | |
jobs: | |
build-image: | |
permissions: | |
contents: 'read' | |
id-token: 'write' | |
packages: 'write' | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check if last commit was a merge commit | |
id: check | |
run: | | |
if [[ "$(git log --merges -1 --pretty=%H)" != "$(git log -1 --pretty=%H)" ]]; then | |
echo "This was not a merge commit. Exiting..." | |
exit 1 | |
fi | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set up Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install -r requirements.txt | |
- name: Install Node.js dependencies | |
run: npm install | |
- name: Authenticate with GitHub Container Registry | |
uses: docker/login-action@v2 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Copy Base.Dockerfile to Dockerfile | |
run: | | |
cp Base.Dockerfile Dockerfile | |
- name: Build and Push Container to GitHub Container Registry | |
uses: docker/build-push-action@v5 | |
with: | |
context: . | |
push: true | |
tags: ghcr.io/${{ github.repository }}/crank-base:${{ github.sha }} | |
- name: Tag and Push Image as Latest | |
run: | | |
docker tag ghcr.io/${{ github.repository }}/crank-base:${{ github.sha }} ghcr.io/${{ github.repository }}/crank-base:latest | |
docker push ghcr.io/${{ github.repository }}/crank-base:latest |