Skip to content

Pin GitHub workflow dependencies #20

Pin GitHub workflow dependencies

Pin GitHub workflow dependencies #20

name: Build and publish Images/Packages
on:
push:
branches:
- main
tags:
- "v*.*.*"
pull_request:
branches:
- main
concurrency: build_and_publish_concurrency_group-${{ github.event.pull_request.number || github.ref_name }}
env:
IMAGE_NAME: ${{ github.repository }}
IMAGE_REGISTRY: ghcr.io
REGISTRY_USER: ${{ github.actor }}
REGISTRY_PASSWORD: ${{ github.token }}
jobs:
create-and-publish-packages:
runs-on: ubuntu-latest
permissions:
# write is required for creating releases
contents: write
packages: write
steps:
- name: Checkout repository
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
- name: Log in to the Container registry
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0
with:
registry: ${{ env.IMAGE_REGISTRY }}
username: ${{ env.REGISTRY_USER }}
password: ${{ env.REGISTRY_PASSWORD }}
# MARK: packager
- name: Build packager
uses: docker/build-push-action@4f58ea79222b3b9dc2c8bbdd6debcef730109a75 # v6.9.0
with:
context: .
target: packager
load: true
tags: packager
- name: Extract built package
run: |
ID=$(docker create packager)
docker cp $ID:/opt/slurm.tar.gz .
docker rm $ID
- name: Upload package
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3
with:
name: slurm
path: slurm.tar.gz
# MARK: daemon-base image
- name: Extract metadata (tags, labels) for daemon-base
id: daemon-base-meta
uses: docker/metadata-action@8e5442c4ef9f78752691e2d8f8d19755c6f78e81 # v5.5.1
with:
images: ${{ env.IMAGE_REGISTRY }}/${{ env.IMAGE_NAME }}
flavor: |
suffix=-daemon-base
tags: |
type=schedule
type=ref,event=branch
type=ref,event=tag
type=ref,event=pr
type=sha,format=long
- name: Build and push daemon-base image
uses: docker/build-push-action@4f58ea79222b3b9dc2c8bbdd6debcef730109a75 # v6.9.0
with:
context: .
target: daemon-base
platforms: linux/amd64
push: true
build-args: |
DOCKER_METADATA_OUTPUT_JSON
tags: ${{ steps.daemon-base-meta.outputs.tags }}
labels: ${{ steps.daemon-base-meta.outputs.labels }}
# MARK: slurmctld image
- name: Extract metadata (tags, labels) for slurmctld
id: slurmctld-meta
uses: docker/metadata-action@8e5442c4ef9f78752691e2d8f8d19755c6f78e81 # v5.5.1
with:
images: ${{ env.IMAGE_REGISTRY }}/${{ env.IMAGE_NAME }}
flavor: |
suffix=-slurmctld
tags: |
type=schedule
type=ref,event=branch
type=ref,event=tag
type=ref,event=pr
type=sha,format=long
- name: Build and push slurmctld image
uses: docker/build-push-action@4f58ea79222b3b9dc2c8bbdd6debcef730109a75 # v6.9.0
with:
context: .
target: slurmctld
platforms: linux/amd64
push: true
build-args: |
DOCKER_METADATA_OUTPUT_JSON
tags: ${{ steps.slurmctld-meta.outputs.tags }}
labels: ${{ steps.slurmctld-meta.outputs.labels }}
# MARK: slurmdbd image
- name: Extract metadata (tags, labels) for slurmdbd
id: slurmdbd-meta
uses: docker/metadata-action@8e5442c4ef9f78752691e2d8f8d19755c6f78e81 # v5.5.1
with:
images: ${{ env.IMAGE_REGISTRY }}/${{ env.IMAGE_NAME }}
flavor: |
suffix=-slurmdbd
tags: |
type=schedule
type=ref,event=branch
type=ref,event=tag
type=ref,event=pr
type=sha,format=long
- name: Build and push slurmdbd image
uses: docker/build-push-action@4f58ea79222b3b9dc2c8bbdd6debcef730109a75 # v6.9.0
with:
context: .
target: slurmdbd
platforms: linux/amd64
push: true
build-args: |
DOCKER_METADATA_OUTPUT_JSON
tags: ${{ steps.slurmdbd-meta.outputs.tags }}
labels: ${{ steps.slurmdbd-meta.outputs.labels }}
# MARK: attach slurm.tar.gz to release
- name: Attach slurm.tar.gz to release
uses: softprops/action-gh-release@c062e08bd532815e2082a85e87e3ef29c3e6d191 # v2.0.8
if: startsWith(github.ref, 'refs/tags/')
with:
files: |
slurm.tar.gz