Skip to content
Snippets Groups Projects
Commit b982061b authored by Corné Lukken's avatar Corné Lukken
Browse files

Convert jobs to create images on gitlab from github actions

parent 3343ee20
No related branches found
No related tags found
1 merge request!2Diverge and convert to gitlab
Pipeline #96908 failed
name: Docker-in-Docker
on:
workflow_dispatch:
inputs:
version:
description: 'The version to tag the DIND image with e.g. v1.0.0'
required: true
type: string
permissions:
packages: write
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Build and push Docker image
uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc
with:
context: dind
platforms: linux/amd64,linux/arm64
push: true
tags: ghcr.io/jumppad-labs/dind:${{inputs.version}}
name: Kubernetes
on:
push:
schedule:
- cron: '0 0 * * *'
workflow_dispatch:
inputs:
version:
description: 'The version of Kubernetes to build an image for e.g. v1.28.3'
required: true
type: string
permissions:
packages: write
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Get Kubernetes version
id: collect
run: |-
# Get latest Kubernetes version
KUBERNETES_VERSION=${{inputs.version}}
if [ -z "$KUBERNETES_VERSION" ]; then
KUBERNETES_VERSION=$(curl -s https://registry.hub.docker.com/v2/repositories/rancher/k3s/tags\?name\=k3s1\&page_size\=50 | \
jq -r '.results[].name | select(contains("-rc") | not) | select(endswith("k3s1")) | sub("(?<version>[0-9]+\\.[0-9]+\\.[0-9]+).*";.version)' | \
sort -r | \
head -n 1)
CURRENT_VERSION=$(curl --silent --fail -L \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \
-H "X-GitHub-Api-Version: 2022-11-28" \
"https://api.github.com/orgs/jumppad-labs/packages/container/kubernetes/versions" | \
jq -r '.[].metadata.container.tags[] | select( . != null )' | \
sort -r | \
head -n 1)
fi
echo "version=$KUBERNETES_VERSION" >> "$GITHUB_OUTPUT"
echo "current=$CURRENT_VERSION" >> "$GITHUB_OUTPUT"
echo $KUBERNETES_VERSION
echo $CURRENT_VERSION
- name: Login to GitHub Container Registry
if: steps.collect.outputs.version != steps.collect.outputs.current
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set up QEMU
if: steps.collect.outputs.version != steps.collect.outputs.current
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
if: steps.collect.outputs.version != steps.collect.outputs.current
uses: docker/setup-buildx-action@v2
- name: Build and push Docker image
if: steps.collect.outputs.version != steps.collect.outputs.current
uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc
with:
context: kubernetes
platforms: linux/amd64,linux/arm64
build-args: |
KUBERNETES_VERSION=${{steps.collect.outputs.version}}
push: true
tags: ghcr.io/jumppad-labs/kubernetes:${{steps.collect.outputs.version}}
- name: Test built image
if: steps.collect.outputs.version != steps.collect.outputs.current
run: |-
# Install Jumppad
curl https://jumppad.dev/install | bash
# Test the image
jumppad test --tags @Single --var version=${{steps.collect.outputs.version}} ./kubernetes/tests
\ No newline at end of file
name: Nomad
on:
push:
schedule:
- cron: '0 0 * * *'
workflow_dispatch:
inputs:
version:
description: 'The version of Nomad to build an image for e.g. v1.6.3'
required: true
type: string
permissions:
packages: write
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Get Nomad version
id: collect
run: |-
# Get latest Nomad version
NOMAD_VERSION=${{inputs.version}}
if [ -z "$NOMAD_VERSION" ]; then
NOMAD_VERSION=$(curl --silent "https://api.github.com/repos/hashicorp/nomad/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')
CURRENT_VERSION=$(curl --silent --fail -L \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \
-H "X-GitHub-Api-Version: 2022-11-28" \
"https://api.github.com/orgs/jumppad-labs/packages/container/nomad/versions" | \
jq -r '.[].metadata.container.tags[] | select( . != null )' | \
sort -V -r | \
head -n 1)
fi
echo "version=$NOMAD_VERSION" >> "$GITHUB_OUTPUT"
echo "current=$CURRENT_VERSION" >> "$GITHUB_OUTPUT"
echo $NOMAD_VERSION
echo $CURRENT_VERSION
- name: Remove v in Tag
id: version
uses: ashley-taylor/regex-property-action@v1.0
with:
value: ${{steps.collect.outputs.version}}
regex: "v"
replacement: ""
- name: Login to GitHub Container Registry
if: steps.collect.outputs.version != steps.collect.outputs.current
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set up QEMU
if: steps.collect.outputs.version != steps.collect.outputs.current
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
if: steps.collect.outputs.version != steps.collect.outputs.current
uses: docker/setup-buildx-action@v2
- name: Build and push Docker image
if: steps.collect.outputs.version != steps.collect.outputs.current
uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc
with:
context: nomad
platforms: linux/amd64,linux/arm64
build-args: |
NOMAD_VERSION=${{steps.version.outputs.value}}
push: true
tags: ghcr.io/jumppad-labs/nomad:${{steps.collect.outputs.version}}
- name: Test built image
if: steps.collect.outputs.version != steps.collect.outputs.current
run: |-
# Install Jumppad
curl https://jumppad.dev/install | bash
# Test the image
jumppad test --tags @Single --var version=${{steps.collect.outputs.version}} ./nomad/tests
\ No newline at end of file
stages:
- build
- tag-latest
- trigger
variables:
IMAGE_TAG: $CI_COMMIT_REF_SLUG-$CI_PIPELINE_ID
before_script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
.default_rules:
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
build:
stage: build
tags:
- dind
parallel:
matrix:
- IMAGE_TYPE:
- dind
- kubernetes
- nomad
- pind
script:
- cd ${IMAGE_TYPE}
- docker pull {$CI_REGISTRY_IMAGE}/${IMAGE_TYPE}:latest || true
- docker build --cache-from ${CI_REGISTRY_IMAGE}/${IMAGE_TYPE}:latest --tag ${CI_REGISTRY_IMAGE}:${IMAGE_TAG} .
- docker push ${CI_REGISTRY_IMAGE}/${IMAGE_TYPE}:${IMAGE_TAG}
tag-latest:
stage: tag-latest
tags:
- dind
parallel:
matrix:
- IMAGE_TYPE:
- dind
- kubernetes
- nomad
- pind
script:
- docker pull ${CI_REGISTRY_IMAGE}/${IMAGE_TYPE}:${IMAGE_TAG}
- docker tag ${CI_REGISTRY_IMAGE}/${IMAGE_TYPE}:${IMAGE_TAG} ${CI_REGISTRY_IMAGE}/${IMAGE_TYPE}:latest
- docker push ${CI_REGISTRY_IMAGE}/${IMAGE_TYPE}:latest
rules:
- !reference [.default_rules, rules]
trigger-tango:
stage: trigger
trigger: lofar2.0/tango
rules:
- !reference [.default_rules, rules]
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment