Skip to content

R image: update python, pangeo-notebook and rstudio-server #2

R image: update python, pangeo-notebook and rstudio-server

R image: update python, pangeo-notebook and rstudio-server #2

Workflow file for this run

name: Build and Push Docker Image
on:
workflow_call:
inputs:
working_directory:
type: string
description: What directory should the image be built from
required: true
image_name:
type: string
description: Name of Docker image
required: true
image_tag:
type: string
description: Tag for Docker image
required: true
push_image:
type: boolean
description: Should the image be pushed to the Github Container Registry
required: false
default: false
secrets:
GH_TOKEN:
description: Github access token
required: false
SLACK_WEBHOOK_URL:
description: Slack webhook URL to send messages to
required: false
outputs:
image_name:
description: Fully qualified image name
value: ${{ jobs.build-image.outputs.image_name}}
image_ref:
description: Docker image reference
value: ${{ jobs.build-image.outputs.image_ref }}
workflow_dispatch:
inputs:
working_directory:
type: string
description: What directory should the image be built from
required: true
image_name:
type: string
description: Name of Docker image
required: true
image_tag:
type: string
description: Tag for Docker image
required: true
push_image:
type: boolean
description: Should the image be pushed to the Github Container Registry
required: false
default: false
jobs:
build-image:
runs-on: ubuntu-22.04
name: Build and push image
timeout-minutes: 30
outputs:
image_name: ${{ steps.env_var.outputs.image_name }}
image_ref: ${{ steps.env_var.outputs.image_ref }}
steps:
steps:

Check failure on line 69 in .github/workflows/build-image.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/build-image.yml

Invalid workflow file

You have an error in your yaml syntax on line 69
- name: Delete huge unnecessary tools folder
run: rm -rf /opt/hostedtoolcache
# https://github.com/orgs/community/discussions/25678#discussioncomment-5242449
- name: Checkout Repository
uses: actions/checkout@v2
- name: Set up Docker Buildx
uses: docker/[email protected]
- name: Cache Docker layers
uses: actions/[email protected]
with:
path: /tmp/.buildx-cache
key: ohw-docker-buildx-${{ inputs.image_name }}-${{ github.sha }}
restore-keys: |
ohw-docker-buildx-${{ inputs.image_name }}
- name: Set Job Environment Variables
id: env_var
run: |
SHA7="${GITHUB_SHA::7}"
DOCKER_TAG=$SHA7
IMAGE_NAME="ghcr.io/${{ github.repository_owner }}/${{ inputs.image_name }}"
echo "DOCKER_TAG=${{ inputs.image_tag }}" >> $GITHUB_ENV
echo "IMAGE_NAME=${IMAGE_NAME}" >> $GITHUB_ENV
echo "::set-output name=image_name::${IMAGE_NAME})"
echo "::set-output name=image_ref::${DOCKER_TAG})"
- name: Build Docker Image
uses: docker/[email protected]
with:
tags: |
${{ env.IMAGE_NAME }}:${{ env.DOCKER_TAG }}
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache-new
push: false
load: true
context: ${{ inputs.working_directory }}
- name: Docker image sizes
run: |
docker images | grep ${{ env.IMAGE_NAME }}
echo "### Image sizes" >> $GITHUB_STEP_SUMMARY
docker images | grep ${{ env.IMAGE_NAME }} >> $GITHUB_STEP_SUMMARY
- name: Export Full Conda Environment
run: |
docker run ${{ env.IMAGE_NAME }}:${{ env.DOCKER_TAG }} conda list > conda-packages.txt
echo "### Conda Environment" >> $GITHUB_STEP_SUMMARY
cat conda-packages.txt >> $GITHUB_STEP_SUMMARY
- name: Archive Conda Package List
uses: actions/upload-artifact@v4
with:
name: conda-packages
path: conda-packages.txt
- name: "Log into GitHub Container Registery"
uses: docker/[email protected]
if: ${{ inputs.push_image}}
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GH_TOKEN || secrets.GITHUB_TOKEN }}
- name: Push Docker Image to GitHub Container Registry
if: ${{ inputs.push_image }}
run: docker push ${{ env.IMAGE_NAME }}:${{ env.DOCKER_TAG }}
- name: Notify on newly built image
if: ${{ inputs.push_image }}
uses: slackapi/[email protected]
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK
with:
payload: |
{
"text": "Built image ${{ env.IMAGE_NAME }}:${{ env.DOCKER_TAG }}. Maybe let 2i2c know?",
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "Built image `${{ env.IMAGE_NAME }}:${{ env.DOCKER_TAG }}`. Maybe let 2i2c know?"
}
}
]
}
- name: Move Docker Cache
run: |
rm -rf /tmp/.buildx-cache
mv /tmp/.buildx-cache-new /tmp/.buildx-cache