Update .gitea/workflows/build-image.yml
This commit is contained in:
parent
b5ca58648e
commit
252a0ef7bf
@ -1,92 +1,47 @@
|
|||||||
name: Image Build
|
name: Image Build
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
schedule:
|
||||||
branches:
|
- cron: '0 0 * * *' # run daily
|
||||||
- main
|
|
||||||
# Manueel starte
|
|
||||||
workflow_dispatch:
|
|
||||||
# on:
|
|
||||||
# push:
|
|
||||||
# branches:
|
|
||||||
# - main
|
|
||||||
# workflow_dispatch:
|
|
||||||
# inputs:
|
|
||||||
# force_build:
|
|
||||||
# description: Force new build?
|
|
||||||
# required: false
|
|
||||||
# default: "false"
|
|
||||||
# type: string
|
|
||||||
# schedule: # run daily
|
|
||||||
# - cron: '0 0 * * *'
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
init:
|
init:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
# Map a step output to a job output
|
|
||||||
outputs:
|
outputs:
|
||||||
iventoy: ${{ steps.iventoy.outputs.version }}
|
iventoy: ${{ steps.iventoy.outputs.version }}
|
||||||
buildOrNot: ${{ steps.buildOrNot.outputs.buildOrNot }}
|
buildOrNot: ${{ steps.buildOrNot.outputs.buildOrNot }}
|
||||||
steps:
|
steps:
|
||||||
-
|
- name: get latest versions
|
||||||
name: get latest versions
|
|
||||||
id: iventoy
|
id: iventoy
|
||||||
run: |
|
run: |
|
||||||
version=$(curl -s https://api.github.com/repos/ventoy/PXE/releases/latest | grep "tag_name" | cut -d'"' -f4)
|
version=$(curl -s https://api.github.com/repos/ventoy/PXE/releases/latest | grep "tag_name" | cut -d'"' -f4)
|
||||||
echo "version=${version#'v'}" >> $GITHUB_OUTPUT
|
echo "version=${version#'v'}" >> $GITEA_OUTPUT
|
||||||
- # Check labels of the latest image on docker hub
|
- name: Check labels of the latest image on Docker Hub
|
||||||
name:
|
id: buildOrNot
|
||||||
id: buildOrNOt
|
|
||||||
env: # if [ -z $FORCE_BUILD ]; then echo "false"; else echo $FORCE_BUILD; fi -> ternary -> ${FORCE_BUILD:-false}
|
|
||||||
FORCE_BUILD: ${{ github.event.inputs.force_build }}
|
|
||||||
run: |
|
run: |
|
||||||
repo=${1:-${{ github.repository }}}
|
repo=${1:-$GITEA_REPO}
|
||||||
tag=${2:-latest}
|
tag=${2:-latest}
|
||||||
token=$(curl -s "https://auth.docker.io/token?service=registry.docker.io&scope=repository:${repo}:pull" | jq -r '.token')
|
token=$(curl -s "https://auth.docker.io/token?service=registry.docker.io&scope=repository:${repo}:pull" | jq -r '.token')
|
||||||
digest=$(curl -H "Accept: application/vnd.docker.distribution.manifest.v2+json" -H "Authorization: Bearer $token" -s "https://registry-1.docker.io/v2/${repo}/manifests/${tag}" | jq -r .config.digest)
|
digest=$(curl -H "Accept: application/vnd.docker.distribution.manifest.v2+json" -H "Authorization: Bearer $token" -s "https://registry-1.docker.io/v2/${repo}/manifests/${tag}" | jq -r .config.digest)
|
||||||
latest=$(curl -H "Accept: application/vnd.docker.distribution.manifest.v2+json" -H "Authorization: Bearer $token" -s -L "https://registry-1.docker.io/v2/${repo}/blobs/${digest}" | jq . | grep -Ew "IVENTOY" | cut -d'"' -f4)
|
latest=$(curl -H "Accept: application/vnd.docker.distribution.manifest.v2+json" -H "Authorization: Bearer $token" -s -L "https://registry-1.docker.io/v2/${repo}/blobs/${digest}" | jq . | grep -Ew "IVENTOY" | cut -d'"' -f4)
|
||||||
echo "buildOrNot=$([ $latest != '${{ steps.iventoy.outputs.version }}' ] && echo "true" || echo "${FORCE_BUILD:-false}")" >> $GITHUB_OUTPUT
|
echo "buildOrNot=$([ $latest != '$GITEA_IVENTOY' ] && echo "true" || echo "$GITEA_FORCE_BUILD")" >> $GITEA_OUTPUT
|
||||||
-
|
|
||||||
name: print
|
|
||||||
run: |
|
|
||||||
echo ${{ steps.iventoy.outputs.version }}
|
|
||||||
echo ${{ steps.buildOrNot.outputs.buildOrNot }}
|
|
||||||
|
|
||||||
docker:
|
docker:
|
||||||
name: iventoy image
|
name: iventoy image
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs:
|
needs:
|
||||||
- init
|
- init
|
||||||
if: |
|
if: ${{ needs.init.outputs.buildOrNot == 'true' }}
|
||||||
needs.init.outputs.buildOrNot == 'true'
|
|
||||||
steps:
|
steps:
|
||||||
-
|
- name: Checkout
|
||||||
name: init vars
|
|
||||||
run: |
|
run: |
|
||||||
echo "iventoy: ${{ needs.init.outputs.iventoy }}"
|
echo "Checkout repository"
|
||||||
-
|
- name: Login to Docker Hub
|
||||||
name: Checkout
|
run: |
|
||||||
uses: actions/checkout@v3
|
docker login -u $GITEA_DOCKERHUB_USERNAME -p $GITEA_DOCKERHUB_TOKEN
|
||||||
-
|
- name: Build and push
|
||||||
name: Login to Docker Hub
|
run: |
|
||||||
uses: docker/login-action@v2
|
docker build -t $GITEA_DOCKERHUB_USERNAME/${GITEA_REPOSITORY_NAME}:${GITEA_IVENTOY} --build-arg IVENTOY=$GITEA_IVENTOY .
|
||||||
with:
|
docker push $GITEA_DOCKERHUB_USERNAME/${GITEA_REPOSITORY_NAME}:${GITEA_IVENTOY}
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
docker tag $GITEA_DOCKERHUB_USERNAME/${GITEA_REPOSITORY_NAME}:${GITEA_IVENTOY} $GITEA_DOCKERHUB_USERNAME/${GITEA_REPOSITORY_NAME}:latest
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
docker push $GITEA_DOCKERHUB_USERNAME/${GITEA_REPOSITORY_NAME}:latest
|
||||||
-
|
|
||||||
name: Set up Docker Buildx
|
|
||||||
uses: docker/setup-buildx-action@v2
|
|
||||||
-
|
|
||||||
name: Build and push
|
|
||||||
uses: docker/build-push-action@v4
|
|
||||||
with:
|
|
||||||
provenance: false # Breaking change introduced with 3.3.0 https://github.com/docker/build-push-action/releases/tag/v3.3.0, when an image is pushed since that version I can't retrieve the blob with labels anymore based on the digest via registry api, night have to look into an alternative way to do this
|
|
||||||
context: .
|
|
||||||
file: ./Dockerfile
|
|
||||||
labels: |
|
|
||||||
IVENTOY=${{ needs.init.outputs.iventoy }}
|
|
||||||
build-args: |
|
|
||||||
IVENTOY=${{ needs.init.outputs.iventoy }}
|
|
||||||
push: true
|
|
||||||
tags: |
|
|
||||||
${{ secrets.DOCKERHUB_USERNAME }}/${{ github.event.repository.name }}:${{ needs.init.outputs.iventoy }}
|
|
||||||
${{ secrets.DOCKERHUB_USERNAME }}/${{ github.event.repository.name }}:latest
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user