Preinstalled gems base image (#2208)

* Builds from baseimage with gems preinstalled

* Checks for changes in Gemfile

* Different conditional steps for build dockerfile selection

* Builds new latest gems base image if new gems are added to master
This commit is contained in:
Keijo Raamat 2021-11-11 09:48:24 +02:00 committed by GitHub
parent c5719a35f1
commit 00bb2ffb45
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 83 additions and 4 deletions

View file

@ -0,0 +1,32 @@
name: build baseimage with gems
on:
push:
branches:
- master
paths:
- "Gemfile"
- "Gemfile.lock"
jobs:
build:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- name: Login to container registry
env:
PASSWORD: ${{ secrets.GHCR }}
run: |
echo $PASSWORD | docker login ghcr.io -u eisbot --password-stdin
- name: Build new image with gems
run: |
docker build --no-cache -t ghcr.io/internetee/registry:gems-latest -f Dockerfile.gems .
docker push ghcr.io/internetee/registry:gems-latest

View file

@ -26,6 +26,32 @@ jobs:
- uses: actions/checkout@v2
- name: Check if there are gem updates
id: gem-updates-check
uses: tj-actions/changed-files@aae164d51be780a235cdeea89752bbacbbfee3c3
with:
files: |
Gemfile
Gemfile.lock
- name: Login to container registry
env:
PASSWORD: ${{ secrets.GHCR }}
run: |
echo $PASSWORD | docker login ghcr.io -u eisbot --password-stdin
- name: No changes in gems
# feature branch has no changes in gems
if: steps.gem-updates-check.outputs.any_changed == 'false'
run: |
echo "DOCKERFILE=Dockerfile.preinstalled_gems" >> $GITHUB_ENV
- name: Gems are changed
# feature branch has new/updated gems
if: steps.gem-updates-check.outputs.any_changed == 'true'
run: |
echo "DOCKERFILE=Dockerfile.generic" >> $GITHUB_ENV
- name: Set image tag
run: |
SHORT_SHA=$(echo $GITHUB_SHA | cut -c 1-7) #pr-s test commit of merged state
@ -55,7 +81,7 @@ jobs:
env:
KEY_BASE: ${{ secrets.KEY_BASE}}
run: |
docker build -t $TAG --build-arg RAILS_ENV=staging --build-arg SECRET_KEY_BASE="$KEY_BASE" -f Dockerfile.generic .
docker build -t $TAG --build-arg RAILS_ENV=staging --build-arg SECRET_KEY_BASE="$KEY_BASE" -f $DOCKERFILE .
- name: Clone epp_proxy project
run: |
@ -82,10 +108,7 @@ jobs:
docker build -t $PROXY_TAG -f Dockerfile.release .
- name: Push Docker image to gh container registry
env:
PASSWORD: ${{ secrets.GHCR }}
run: |
echo $PASSWORD | docker login ghcr.io -u eisbot --password-stdin
docker push $TAG
docker push $PROXY_TAG