mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-18 15:33:09 +00:00
Update Actions to always deploy the locally created image. non-PRs do not need to redownload images from DockerHub.
This commit is contained in:
24
.github/workflows/docker.yml
vendored
24
.github/workflows/docker.yml
vendored
@@ -149,9 +149,9 @@ jobs:
|
|||||||
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
||||||
DOCKER_ACCESS_TOKEN: ${{ secrets.DOCKER_ACCESS_TOKEN }}
|
DOCKER_ACCESS_TOKEN: ${{ secrets.DOCKER_ACCESS_TOKEN }}
|
||||||
|
|
||||||
########################################################################
|
#################################################################################
|
||||||
# Test Deployment via Docker to ensure images are working properly
|
# Test Deployment via Docker to ensure newly built images are working properly
|
||||||
########################################################################
|
#################################################################################
|
||||||
docker-deploy:
|
docker-deploy:
|
||||||
# Ensure this job never runs on forked repos. It's only executed for 'dspace/dspace'
|
# Ensure this job never runs on forked repos. It's only executed for 'dspace/dspace'
|
||||||
if: github.repository == 'dspace/dspace'
|
if: github.repository == 'dspace/dspace'
|
||||||
@@ -172,25 +172,23 @@ jobs:
|
|||||||
swordv2__D__server__P__enabled: true
|
swordv2__D__server__P__enabled: true
|
||||||
# If this is a PR, force using "pr-testing" version of all Docker images. Otherwise, if on main branch, use the
|
# If this is a PR, force using "pr-testing" version of all Docker images. Otherwise, if on main branch, use the
|
||||||
# "latest" tag. Otherwise, use the branch name. NOTE: the "pr-testing" tag is a temporary tag that we assign to
|
# "latest" tag. Otherwise, use the branch name. NOTE: the "pr-testing" tag is a temporary tag that we assign to
|
||||||
# all PR-built docker images in reusabe-docker-build.yml
|
# all PR-built docker images in reusable-docker-build.yml
|
||||||
DSPACE_VER: ${{ (github.event_name == 'pull_request' && 'pr-testing') || (github.ref_name == github.event.repository.default_branch && 'latest') || github.ref_name }}
|
DSPACE_VER: ${{ (github.event_name == 'pull_request' && 'pr-testing') || (github.ref_name == github.event.repository.default_branch && 'latest') || github.ref_name }}
|
||||||
steps:
|
steps:
|
||||||
# Checkout our codebase (to get access to Docker Compose scripts)
|
# Checkout our codebase (to get access to Docker Compose scripts)
|
||||||
- name: Checkout codebase
|
- name: Checkout codebase
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
# For PRs, download Docker image artifacts (built by reusable-docker-build.yml for all PRs)
|
# Download Docker image artifacts (which were just built by reusable-docker-build.yml)
|
||||||
- name: Download Docker image artifacts (for PRs)
|
- name: Download Docker image artifacts
|
||||||
if: github.event_name == 'pull_request'
|
|
||||||
uses: actions/download-artifact@v4
|
uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
# Download all Docker images (TAR files) into the /tmp/docker directory
|
# Download all amd64 Docker images (TAR files) into the /tmp/docker directory
|
||||||
pattern: docker-image-*
|
pattern: docker-image-*-linux-amd64
|
||||||
path: /tmp/docker
|
path: /tmp/docker
|
||||||
merge-multiple: true
|
merge-multiple: true
|
||||||
# For PRs, load each of the images into Docker by calling "docker image load" for each.
|
# Load each of the images into Docker by calling "docker image load" for each.
|
||||||
# This ensures we are using the images built from this PR & not the prior versions on DockerHub
|
# This ensures we are using the images just built & not any prior versions on DockerHub
|
||||||
- name: Load all downloaded Docker images (for PRs)
|
- name: Load all downloaded Docker images
|
||||||
if: github.event_name == 'pull_request'
|
|
||||||
run: |
|
run: |
|
||||||
find /tmp/docker -type f -name "*.tar" -exec docker image load --input "{}" \;
|
find /tmp/docker -type f -name "*.tar" -exec docker image load --input "{}" \;
|
||||||
docker image ls -a
|
docker image ls -a
|
||||||
|
21
.github/workflows/reusable-docker-build.yml
vendored
21
.github/workflows/reusable-docker-build.yml
vendored
@@ -130,7 +130,7 @@ jobs:
|
|||||||
#------------------------------------------------------------
|
#------------------------------------------------------------
|
||||||
# https://github.com/docker/metadata-action
|
# https://github.com/docker/metadata-action
|
||||||
# Get Metadata for docker_build_deps step below
|
# Get Metadata for docker_build_deps step below
|
||||||
- name: Sync metadata (tags, labels) from GitHub to Docker for image
|
- name: Extract metadata (tags, labels) from GitHub for Docker image
|
||||||
if: ${{ ! matrix.isPr }}
|
if: ${{ ! matrix.isPr }}
|
||||||
id: meta_build
|
id: meta_build
|
||||||
uses: docker/metadata-action@v5
|
uses: docker/metadata-action@v5
|
||||||
@@ -151,10 +151,23 @@ jobs:
|
|||||||
context: ${{ inputs.dockerfile_context }}
|
context: ${{ inputs.dockerfile_context }}
|
||||||
file: ${{ inputs.dockerfile_path }}
|
file: ${{ inputs.dockerfile_path }}
|
||||||
platforms: ${{ matrix.arch }}
|
platforms: ${{ matrix.arch }}
|
||||||
push: true
|
|
||||||
# Use tags / labels provided by 'docker/metadata-action' above
|
# Use tags / labels provided by 'docker/metadata-action' above
|
||||||
tags: ${{ steps.meta_build.outputs.tags }}
|
tags: ${{ steps.meta_build.outputs.tags }}
|
||||||
labels: ${{ steps.meta_build.outputs.labels }}
|
labels: ${{ steps.meta_build.outputs.labels }}
|
||||||
|
# Export image to both Docker registry & to a local TAR file
|
||||||
|
outputs: |
|
||||||
|
registry
|
||||||
|
type=docker,dest=/tmp/${{ inputs.build_id }}.tar
|
||||||
|
|
||||||
|
# Upload the local docker image (in TAR file) to a build Artifact
|
||||||
|
- name: Upload local image to artifact
|
||||||
|
if: ${{ ! matrix.isPr }}
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: docker-image-${{ inputs.build_id }}-${{ env.ARCH_NAME }}
|
||||||
|
path: /tmp/${{ inputs.build_id }}.tar
|
||||||
|
if-no-files-found: error
|
||||||
|
retention-days: 1
|
||||||
|
|
||||||
# Export the digest of Docker build locally (for non PRs only)
|
# Export the digest of Docker build locally (for non PRs only)
|
||||||
- name: Export Docker build digest
|
- name: Export Docker build digest
|
||||||
@@ -204,7 +217,7 @@ jobs:
|
|||||||
# brand-new images for automated testing.
|
# brand-new images for automated testing.
|
||||||
#--------------------------------------------------------------
|
#--------------------------------------------------------------
|
||||||
# Get Metadata for docker_build_deps step below
|
# Get Metadata for docker_build_deps step below
|
||||||
- name: Create metadata (tags, labels) for local Docker image
|
- name: Extract metadata (tags, labels) for local Docker image
|
||||||
if: matrix.isPr
|
if: matrix.isPr
|
||||||
id: meta_build_pr
|
id: meta_build_pr
|
||||||
uses: docker/metadata-action@v5
|
uses: docker/metadata-action@v5
|
||||||
@@ -233,7 +246,7 @@ jobs:
|
|||||||
if: matrix.isPr
|
if: matrix.isPr
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: docker-image-${{ inputs.build_id }}
|
name: docker-image-${{ inputs.build_id }}-${{ env.ARCH_NAME }}
|
||||||
path: /tmp/${{ inputs.build_id }}.tar
|
path: /tmp/${{ inputs.build_id }}.tar
|
||||||
if-no-files-found: error
|
if-no-files-found: error
|
||||||
retention-days: 1
|
retention-days: 1
|
||||||
|
Reference in New Issue
Block a user