@@ -3,6 +3,9 @@ name: Docker images
33
44# Run this Build for all pushes to 'main' or maintenance branches, or tagged releases.
55# Also run for PRs to ensure PR doesn't break Docker build process
6+ # NOTE: uses "reusable-docker-build.yml" in DSpace/DSpace to actually build each of the Docker images
7+ # https://github.com/DSpace/DSpace/blob/dspace-7_x/.github/workflows/reusable-docker-build.yml
8+ #
69on :
710 push :
811 branches :
1518permissions :
1619 contents : read # to fetch code (actions/checkout)
1720
18-
19- env :
20- # Define tags to use for Docker images based on Git tags/branches (for docker/metadata-action)
21- # For a new commit on default branch (main), use the literal tag 'latest' on Docker image.
22- # For a new commit on other branches, use the branch name as the tag for Docker image.
23- # For a new tag, copy that tag name as the tag for Docker image.
24- IMAGE_TAGS : |
25- type=raw,value=latest,enable=${{ endsWith(github.ref, github.event.repository.default_branch) }}
26- type=ref,event=branch,enable=${{ !endsWith(github.ref, github.event.repository.default_branch) }}
27- type=ref,event=tag
28- # Define default tag "flavor" for docker/metadata-action per
29- # https://github.com/docker/metadata-action#flavor-input
30- # We manage the 'latest' tag ourselves to the 'main' branch (see settings above)
31- TAGS_FLAVOR : |
32- latest=false
33- # Architectures / Platforms for which we will build Docker images
34- # If this is a PR, we ONLY build for AMD64. For PRs we only do a sanity check test to ensure Docker builds work.
35- # If this is NOT a PR (e.g. a tag or merge commit), also build for ARM64.
36- PLATFORMS : linux/amd64${{ github.event_name != 'pull_request' && ', linux/arm64' || '' }}
37-
38-
3921jobs :
40- # ##############################################
22+ # ############################################################
4123 # Build/Push the 'dspace/dspace-angular' image
42- # ##############################################
24+ # ############################################################
4325 dspace-angular :
4426 # Ensure this job never runs on forked repos. It's only executed for 'dspace/dspace-angular'
4527 if : github.repository == 'dspace/dspace-angular'
46- runs-on : ubuntu-latest
47-
48- steps :
49- # https://github.com/actions/checkout
50- - name : Checkout codebase
51- uses : actions/checkout@v3
52-
53- # https://github.com/docker/setup-buildx-action
54- - name : Setup Docker Buildx
55- uses : docker/setup-buildx-action@v2
56-
57- # https://github.com/docker/setup-qemu-action
58- - name : Set up QEMU emulation to build for multiple architectures
59- uses : docker/setup-qemu-action@v2
60-
61- # https://github.com/docker/login-action
62- - name : Login to DockerHub
63- # Only login if not a PR, as PRs only trigger a Docker build and not a push
64- if : github.event_name != 'pull_request'
65- uses : docker/login-action@v2
66- with :
67- username : ${{ secrets.DOCKER_USERNAME }}
68- password : ${{ secrets.DOCKER_ACCESS_TOKEN }}
69-
70- # https://github.com/docker/metadata-action
71- # Get Metadata for docker_build step below
72- - name : Sync metadata (tags, labels) from GitHub to Docker for 'dspace-angular' image
73- id : meta_build
74- uses : docker/metadata-action@v4
75- with :
76- images : dspace/dspace-angular
77- tags : ${{ env.IMAGE_TAGS }}
78- flavor : ${{ env.TAGS_FLAVOR }}
79-
80- # https://github.com/docker/build-push-action
81- - name : Build and push 'dspace-angular' image
82- id : docker_build
83- uses : docker/build-push-action@v4
84- with :
85- context : .
86- file : ./Dockerfile
87- platforms : ${{ env.PLATFORMS }}
88- # For pull requests, we run the Docker build (to ensure no PR changes break the build),
89- # but we ONLY do an image push to DockerHub if it's NOT a PR
90- push : ${{ github.event_name != 'pull_request' }}
91- # Use tags / labels provided by 'docker/metadata-action' above
92- tags : ${{ steps.meta_build.outputs.tags }}
93- labels : ${{ steps.meta_build.outputs.labels }}
28+ # Use the reusable-docker-build.yml script from DSpace/DSpace repo to build our Docker image
29+ uses : DSpace/DSpace/.github/workflows/reusable-docker-build.yml@dspace-7_x
30+ with :
31+ build_id : dspace-angular-dev
32+ image_name : dspace/dspace-angular
33+ dockerfile_path : ./Dockerfile
34+ secrets :
35+ DOCKER_USERNAME : ${{ secrets.DOCKER_USERNAME }}
36+ DOCKER_ACCESS_TOKEN : ${{ secrets.DOCKER_ACCESS_TOKEN }}
9437
9538 # ############################################################
9639 # Build/Push the 'dspace/dspace-angular' image ('-dist' tag)
9740 # ############################################################
9841 dspace-angular-dist :
9942 # Ensure this job never runs on forked repos. It's only executed for 'dspace/dspace-angular'
10043 if : github.repository == 'dspace/dspace-angular'
101- runs-on : ubuntu-latest
102-
103- steps :
104- # https://github.com/actions/checkout
105- - name : Checkout codebase
106- uses : actions/checkout@v3
107-
108- # https://github.com/docker/setup-buildx-action
109- - name : Setup Docker Buildx
110- uses : docker/setup-buildx-action@v2
111-
112- # https://github.com/docker/setup-qemu-action
113- - name : Set up QEMU emulation to build for multiple architectures
114- uses : docker/setup-qemu-action@v2
115-
116- # https://github.com/docker/login-action
117- - name : Login to DockerHub
118- # Only login if not a PR, as PRs only trigger a Docker build and not a push
119- if : github.event_name != 'pull_request'
120- uses : docker/login-action@v2
121- with :
122- username : ${{ secrets.DOCKER_USERNAME }}
123- password : ${{ secrets.DOCKER_ACCESS_TOKEN }}
124-
125- # https://github.com/docker/metadata-action
126- # Get Metadata for docker_build_dist step below
127- - name : Sync metadata (tags, labels) from GitHub to Docker for 'dspace-angular-dist' image
128- id : meta_build_dist
129- uses : docker/metadata-action@v4
130- with :
131- images : dspace/dspace-angular
132- tags : ${{ env.IMAGE_TAGS }}
133- # As this is a "dist" image, its tags are all suffixed with "-dist". Otherwise, it uses the same
134- # tagging logic as the primary 'dspace/dspace-angular' image above.
135- flavor : ${{ env.TAGS_FLAVOR }}
136- suffix=-dist
137-
138- - name : Build and push 'dspace-angular-dist' image
139- id : docker_build_dist
140- uses : docker/build-push-action@v4
141- with :
142- context : .
143- file : ./Dockerfile.dist
144- platforms : ${{ env.PLATFORMS }}
145- # For pull requests, we run the Docker build (to ensure no PR changes break the build),
146- # but we ONLY do an image push to DockerHub if it's NOT a PR
147- push : ${{ github.event_name != 'pull_request' }}
148- # Use tags / labels provided by 'docker/metadata-action' above
149- tags : ${{ steps.meta_build_dist.outputs.tags }}
150- labels : ${{ steps.meta_build_dist.outputs.labels }}
44+ # Use the reusable-docker-build.yml script from DSpace/DSpace repo to build our Docker image
45+ uses : DSpace/DSpace/.github/workflows/reusable-docker-build.yml@dspace-7_x
46+ with :
47+ build_id : dspace-angular-dist
48+ image_name : dspace/dspace-angular
49+ dockerfile_path : ./Dockerfile.dist
50+ # As this is a "dist" image, its tags are all suffixed with "-dist". Otherwise, it uses the same
51+ # tagging logic as the primary 'dspace/dspace-angular' image above.
52+ tags_flavor : suffix=-dist
53+ secrets :
54+ DOCKER_USERNAME : ${{ secrets.DOCKER_USERNAME }}
55+ DOCKER_ACCESS_TOKEN : ${{ secrets.DOCKER_ACCESS_TOKEN }}
56+ # Enable redeploy of sandbox & demo if the branch for this image matches the deployment branch of
57+ # these sites as specified in reusable-docker-build.xml
58+ REDEPLOY_SANDBOX_URL : ${{ secrets.REDEPLOY_SANDBOX_URL }}
59+ REDEPLOY_DEMO_URL : ${{ secrets.REDEPLOY_DEMO_URL }}
0 commit comments