Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
E
eic_container
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
containers
eic_container
Merge requests
!907
feat(ci): github actions build workflow
Code
Review changes
Check out branch
Download
Patches
Plain diff
Merged
feat(ci): github actions build workflow
gha
into
master
Overview
0
Commits
25
Pipelines
0
Changes
2
Merged
Wouter Deconinck
requested to merge
gha
into
master
1 year ago
Overview
0
Commits
25
Pipelines
0
Changes
2
Expand
0
0
Merge request reports
Compare
master
version 1
5a20a546
1 year ago
master (base)
and
latest version
latest version
d20494b8
25 commits,
1 year ago
version 1
5a20a546
25 commits,
1 year ago
2 files
+
290
−
1
Side-by-side
Compare changes
Side-by-side
Inline
Show whitespace changes
Show one file at a time
Files
2
Search (e.g. *.vue) (Ctrl+P)
.github/workflows/build-push.yml
0 → 100644
+
289
−
0
Options
name
:
build-push
on
:
schedule
:
-
cron
:
"
30
*/6
*
*
*"
push
:
branches
:
-
master
pull_request
:
branches
:
-
master
workflow_dispatch
:
inputs
:
EDM4EIC_VERSION
:
required
:
false
default
:
'
'
type
:
string
EICRECON_VERSION
:
required
:
false
default
:
'
'
type
:
string
JUGGLER_VERSION
:
required
:
false
default
:
'
'
type
:
string
concurrency
:
group
:
${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress
:
false
env
:
## Default versions are specified in packages.yaml but can be overridden
## note: nightly builds will always use the master/main branch
EDM4EIC_VERSION
:
${{ inputs.EDM4EIC_VERSION }}
EICRECON_VERSION
:
${{ inputs.EICRECON_VERSION }}
JUGGLER_VERSION
:
${{ inputs.JUGGLER_VERSION }}
## Dockerhub registry
DH_REGISTRY
:
docker.io
DH_REGISTRY_USER
:
eicweb
DH_PUSH
:
0
## GitHub registry
GH_REGISTRY
:
ghcr.io
GH_REGISTRY_USER
:
eic
GH_PUSH
:
1
## Number of jobs to start during container builds
JOBS
:
4
## Internal tag used for the CI
INTERNAL_TAG
:
pipeline-${{ github.run_id }}
jobs
:
base
:
runs-on
:
ubuntu-latest
strategy
:
matrix
:
include
:
-
BASE_IMAGE
:
debian:stable-slim
BUILD_IMAGE
:
debian_stable_base
PLATFORM
:
linux/amd64
steps
:
-
name
:
Checkout
uses
:
actions/checkout@v4
-
name
:
Set up QEMU
uses
:
docker/setup-qemu-action@v3
with
:
platforms
:
linux/amd64,linux/arm64
-
name
:
Set up Docker Buildx
uses
:
docker/setup-buildx-action@v3
-
name
:
Docker meta
id
:
meta
uses
:
docker/metadata-action@v5
with
:
images
:
|
name=${{ env.DH_REGISTRY }}/${{ env.DH_REGISTRY_USER }}/${{ matrix.BUILD_IMAGE }},enable=${{ env.DH_PUSH != 0 }}
name=${{ env.GH_REGISTRY }}/${{ env.GH_REGISTRY_USER }}/${{ matrix.BUILD_IMAGE }},enable=${{ env.GH_PUSH != 0 }}
tags
:
|
${{ env.INTERNAL_TAG }}
type=schedule
type=ref,prefix=unstable-pr-,event=pr
-
name
:
Login to Docker Hub
uses
:
docker/login-action@v3
if
:
${{ env.DH_PUSH == '1' }}
with
:
registry
:
${{ env.DH_REGISTRY }}
username
:
${{ env.DH_REGISTRY_USER }}
password
:
${{ secrets.DH_EICWEB_TOKEN }}
-
name
:
Login to GitHub Container Registry
uses
:
docker/login-action@v3
if
:
${{ env.GH_PUSH == '1' }}
with
:
registry
:
${{ env.GH_REGISTRY }}
username
:
${{ secrets.GHCR_REGISTRY_USER }}
password
:
${{ secrets.GHCR_REGISTRY_TOKEN }}
-
name
:
Build and push
uses
:
docker/build-push-action@v5
with
:
file
:
containers/debian/base.Dockerfile
context
:
containers/debian
platforms
:
${{ matrix.PLATFORM }}
push
:
true
tags
:
${{ steps.meta.outputs.tags }}
labels
:
${{ steps.meta.outputs.labels }}
build-args
:
|
BASE_IMAGE=${{ matrix.BASE_IMAGE }}
BUILD_IMAGE=${{ matrix.BUILD_IMAGE }}
cache-from
:
type=gha,scope=${{ github.workflow }}
cache-to
:
type=gha,mode=max,scope=${{ github.workflow }}
dev
:
runs-on
:
ubuntu-latest
needs
:
base
strategy
:
matrix
:
include
:
-
BASE_IMAGE
:
debian_stable_base
BUILD_IMAGE
:
dev
PLATFORM
:
linux/amd64
ENV
:
dev
steps
:
-
name
:
Free Disk Space (Ubuntu)
uses
:
jlumbroso/free-disk-space@v1.3.1
with
:
android
:
true
dotnet
:
true
-
name
:
Checkout
uses
:
actions/checkout@v4
-
name
:
Load spack version and cherry-picks
id
:
spack
shell
:
bash
run
:
|
source spack.sh
echo "orgrepo=${SPACK_ORGREPO}" | tee -a $GITHUB_OUTPUT
echo "version=${SPACK_VERSION}" | tee -a $GITHUB_OUTPUT
echo "cherrypicks=${SPACK_CHERRYPICKS//$'\n'/ }" | tee -a $GITHUB_OUTPUT
echo "cherrypicks_files=${SPACK_CHERRYPICKS_FILES//$'\n'/ }" | tee -a $GITHUB_OUTPUT
-
name
:
Load eic-spack version and cherry-picks
id
:
eic-spack
run
:
|
source eic-spack.sh
echo "orgrepo=${EICSPACK_ORGREPO}" | tee -a $GITHUB_OUTPUT
echo "version=${EICSPACK_VERSION}" | tee -a $GITHUB_OUTPUT
echo "cherrypicks=${EICSPACK_CHERRYPICKS//$'\n'/ }" | tee -a $GITHUB_OUTPUT
-
name
:
Load secrets into mirrors.yaml
id
:
mirrors
run
:
|
source spack.sh
export SPACK_VERSION
export CI_REGISTRY=ghcr.io
export CI_PROJECT_PATH=eic
export CI_REGISTRY_USER=${{ secrets.GHCR_REGISTRY_USER }}
export CI_REGISTRY_PASSWORD=${{ secrets.GHCR_REGISTRY_TOKEN }}
export GITHUB_REGISTRY_USER=${{ secrets.GHCR_REGISTRY_USER }}
export GITHUB_REGISTRY_TOKEN=${{ secrets.GHCR_REGISTRY_TOKEN }}
export S3RW_ACCESS_KEY=${{ secrets.S3RW_ACCESS_KEY }}
export S3RW_SECRET_KEY=${{ secrets.S3RW_SECRET_KEY }}
cat mirrors.yaml.in | envsubst > mirrors.yaml
-
name
:
Set up QEMU
uses
:
docker/setup-qemu-action@v3
with
:
platforms
:
linux/amd64
-
name
:
Set up Docker Buildx
uses
:
docker/setup-buildx-action@v3
-
name
:
Docker meta
id
:
meta
uses
:
docker/metadata-action@v5
with
:
images
:
|
name=${{ env.DH_REGISTRY }}/${{ env.DH_REGISTRY_USER }}/eic_${{ matrix.BUILD_IMAGE }},enable=${{ env.DH_PUSH != 0 }}
name=${{ env.GH_REGISTRY }}/${{ env.GH_REGISTRY_USER }}/eic_${{ matrix.BUILD_IMAGE }},enable=${{ env.GH_PUSH != 0 }}
tags
:
|
${{ env.INTERNAL_TAG }}
type=schedule,pattern={{date 'YYYY-MM-DD'}}
type=ref,prefix=unstable-pr-,event=pr
type=match,pattern=^v(\d+\.\d+\.\d+-.*)$,group=1
-
name
:
Login to Docker Hub
uses
:
docker/login-action@v3
if
:
${{ env.DH_PUSH == '1' }}
with
:
registry
:
${{ env.DH_REGISTRY }}
username
:
${{ env.DH_REGISTRY_USER }}
password
:
${{ secrets.DH_EICWEB_TOKEN }}
-
name
:
Login to GitHub Container Registry
uses
:
docker/login-action@v3
if
:
${{ env.GH_PUSH == '1' }}
with
:
registry
:
${{ env.GH_REGISTRY }}
username
:
${{ secrets.GHCR_REGISTRY_USER }}
password
:
${{ secrets.GHCR_REGISTRY_TOKEN }}
-
name
:
Build and push
uses
:
docker/build-push-action@v5
with
:
file
:
containers/jug/dev.Dockerfile
context
:
containers/jug
build-contexts
:
|
spack-environment=spack-environment
secret-files
:
|
mirrors=mirrors.yaml
platforms
:
${{ matrix.PLATFORM }}
push
:
true
tags
:
${{ steps.meta.outputs.tags }}
labels
:
${{ steps.meta.outputs.labels }}
build-args
:
|
DOCKER_REGISTRY=${{ env.GH_REGISTRY }}/${{ env.GH_REGISTRY_USER }}/
BASE_IMAGE=${{ matrix.BASE_IMAGE }}
BUILD_IMAGE=eic_${{ matrix.BUILD_IMAGE }}
INTERNAL_TAG=${{ env.INTERNAL_TAG }}
SPACK_ORGREPO=${{ steps.spack.outputs.orgrepo }}
SPACK_VERSION=${{ steps.spack.outputs.version }}
SPACK_CHERRYPICKS=${{ steps.spack.outputs.cherrypicks }}
SPACK_CHERRYPICKS_FILES=${{ steps.spack.outputs.cherrypicks_files }}
EICSPACK_ORGREPO=${{ steps.eic-spack.outputs.orgrepo }}
EICSPACK_VERSION=${{ steps.eic-spack.outputs.version }}
EICSPACK_CHERRYPICKS=${{ steps.eic-spack.outputs.cherrypicks }}
S3_ACCESS_KEY=${{ secrets.S3_ACCESS_KEY }}
S3_SECRET_KEY=${{ secrets.S3_SECRET_KEY }}
jobs=${{ env.JOBS }}
cache-from
:
type=gha,scope=${{ github.workflow }}
cache-to
:
type=gha,mode=max,scope=${{ github.workflow }}
xl
:
runs-on
:
ubuntu-latest
needs
:
dev
strategy
:
matrix
:
include
:
-
BASE_IMAGE
:
dev
BUILD_IMAGE
:
xl
PLATFORM
:
linux/amd64
steps
:
-
name
:
Free Disk Space (Ubuntu)
uses
:
jlumbroso/free-disk-space@v1.3.1
with
:
android
:
true
dotnet
:
true
-
name
:
Checkout
uses
:
actions/checkout@v4
-
name
:
Set up QEMU
uses
:
docker/setup-qemu-action@v3
with
:
platforms
:
linux/amd64
-
name
:
Set up Docker Buildx
uses
:
docker/setup-buildx-action@v3
-
name
:
Docker meta
id
:
meta
uses
:
docker/metadata-action@v5
with
:
images
:
|
name=${{ env.DH_REGISTRY }}/${{ env.DH_REGISTRY_USER }}/eic_${{ matrix.BUILD_IMAGE }},enable=${{ env.DH_PUSH != 0 }}
name=${{ env.GH_REGISTRY }}/${{ env.GH_REGISTRY_USER }}/eic_${{ matrix.BUILD_IMAGE }},enable=${{ env.GH_PUSH != 0 }}
tags
:
|
${{ env.INTERNAL_TAG }}
type=schedule,pattern={{date 'YYYY-MM-DD'}}
type=ref,prefix=unstable-pr-,event=pr
type=match,pattern=^v(\d+\.\d+\.\d+-.*)$,group=1
-
name
:
Login to Docker Hub
uses
:
docker/login-action@v3
if
:
${{ env.DH_PUSH == '1' }}
with
:
registry
:
${{ env.DH_REGISTRY }}
username
:
${{ env.DH_REGISTRY_USER }}
password
:
${{ secrets.DH_EICWEB_TOKEN }}
-
name
:
Login to GitHub Container Registry
uses
:
docker/login-action@v3
if
:
${{ env.GH_PUSH == '1' }}
with
:
registry
:
${{ env.GH_REGISTRY }}
username
:
${{ secrets.GHCR_REGISTRY_USER }}
password
:
${{ secrets.GHCR_REGISTRY_TOKEN }}
-
name
:
Build and push
uses
:
docker/build-push-action@v5
with
:
file
:
containers/jug/xl.Dockerfile
context
:
containers/jug
build-contexts
:
|
detectors=.
platforms
:
${{ matrix.PLATFORM }}
push
:
true
tags
:
${{ steps.meta.outputs.tags }}
labels
:
${{ steps.meta.outputs.labels }}
build-args
:
|
DOCKER_REGISTRY=${{ env.GH_REGISTRY }}/${{ env.GH_REGISTRY_USER }}/
BASE_IMAGE=eic_${{ matrix.BASE_IMAGE }}
BUILD_IMAGE=eic_${{ matrix.BUILD_IMAGE }}
INTERNAL_TAG=${{ env.INTERNAL_TAG }}
jobs=${{ env.JOBS }}
cache-from
:
type=gha,scope=${{ github.workflow }}
cache-to
:
type=gha,mode=max,scope=${{ github.workflow }}
Loading