srfghsfnn

This commit is contained in:
2025-09-12 12:19:11 +02:00
parent 7a060e33cf
commit 8834bd3955
2 changed files with 100 additions and 81 deletions

View File

@@ -5,17 +5,19 @@ workflow:
- if: $CI_COMMIT_TAG # ... on tags - if: $CI_COMMIT_TAG # ... on tags
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # ... on default (master/main) branch - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # ... on default (master/main) branch
stages:
- build-image
- test
variables: variables:
# Fetch submodules # Fetch submodules
GIT_SUBMODULE_STRATEGY: recursive GIT_SUBMODULE_STRATEGY: recursive
# Only fetch the latest commit (shallow clone, faster) # Only fetch the latest commit (shallow clone, faster)
GIT_SUBMODULE_DEPTH: 1 GIT_SUBMODULE_DEPTH: 1
GIT_DEPTH: 1 GIT_DEPTH: 1
stages:
- build-image
- test
# Builds the image and pushes it to the registry # Builds the image and pushes it to the registry
# This image contains all the tooling necessary to run the compilation tools # This image contains all the tooling necessary to run the compilation tools

View File

@@ -1,81 +1,98 @@
# name: default pipe # This CI will run:
workflow:
# on: rules:
# push: - if: $CI_PIPELINE_SOURCE == 'merge_request_event' # ... on merge requests
# branches: - if: $CI_COMMIT_TAG # ... on tags
# - master - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # ... on default (master/main) branch
# # This CI will run:
# workflow:
# rules:
# - if: $CI_PIPELINE_SOURCE == 'merge_request_event' # ... on merge requests
# - if: $CI_COMMIT_TAG # ... on tags
# - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # ... on default (master/main) branch
variables:
# Fetch submodules
GIT_SUBMODULE_STRATEGY: recursive
# Only fetch the latest commit (shallow clone, faster)
GIT_SUBMODULE_DEPTH: 1
GIT_DEPTH: 1
stages: stages:
- build-image - build-image
- test - test
# Builds the image and pushes it to the registry # Builds the image and pushes it to the registry
# This image contains all the tooling necessary to run the compilation tools # This image contains all the tooling necessary to run the compilation tools
build-image: build-image:
stage: build-image stage: build-image
# Run image build only if packages changed # Run image build only if packages changed
only: only:
changes: changes:
- Dockerfile - Dockerfile
- packages.txt - packages.txt
- requirements.txt - requirements.txt
- .gitlab-ci.yml - .gitlab-ci.yml
- tools/* - tools/*
# Set up the docker daemon for building the image # Set up the docker daemon for building the image
image: docker:latest image: docker:latest
services: services:
- docker:dind - docker:dind
variables: variables:
DOCKER_DRIVER: overlay2 DOCKER_DRIVER: overlay2
# Fetch submodules script:
GIT_SUBMODULE_STRATEGY: recursive - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY # Login to the registry
# Only fetch the latest commit (shallow clone, faster) - docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME || true # Pull the image if it exists
GIT_SUBMODULE_DEPTH: 1 # Build the image and tag it with the branch name and latest
GIT_DEPTH: 1 - |
script: docker build \
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY # Login to the registry --build-arg BUILDKIT_INLINE_CACHE=1 \
- docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME || true # Pull the image if it exists --cache-from $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME \
# Build the image and tag it with the branch name and latest -t $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME \
- | -t $CI_REGISTRY_IMAGE:latest \
docker build \ .
--build-arg BUILDKIT_INLINE_CACHE=1 \ - docker push --all-tags $CI_REGISTRY_IMAGE # Push the image to the registry
--cache-from $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME \
-t $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME \
-t $CI_REGISTRY_IMAGE:latest \
.
- docker push --all-tags $CI_REGISTRY_IMAGE # Push the image to the registry
# Try to compile the code inside the image to make sure it works (run docker container) # Try to compile the code inside the image to make sure it works (run docker container)
build-test-us10: build-test-us10:
stage: test stage: test
image: image:
name: $CI_REGISTRY_IMAGE:latest name: $CI_REGISTRY_IMAGE:latest
entrypoint: [""] entrypoint: [""]
variables: before_script:
# Fetch submodules # Download the baserom from $BASEROM_<VER>_URL, decrypt with $BASEROM_<VER>_KEY and save as baserom.us.v10.z64, and check the sha1sum against $BASEROM_<VER>_SHA1
GIT_SUBMODULE_STRATEGY: recursive - curl -L "$BASEROM_US10_URL" -o baserom.us.v10.enc.z64
# Only fetch the latest commit (shallow clone, faster) - openssl enc -d -aes-256-cbc -in baserom.us.v10.enc.z64 -out baserom.us.v10.z64 -k "$BASEROM_US10_KEY"
GIT_SUBMODULE_DEPTH: 1 - FILE_SHA1=$(sha1sum baserom.us.v10.z64 | awk '{ print $1 }')
GIT_DEPTH: 1 - echo "Calculated SHA1 - $FILE_SHA1"
before_script: - echo "Expected SHA1 - $BASEROM_US10_SHA1"
# Download the baserom from $BASEROM_<VER>_URL, decrypt with $BASEROM_<VER>_KEY and save as baserom.us.v10.z64, and check the sha1sum against $BASEROM_<VER>_SHA1 - if [ "${FILE_SHA1}" != "${BASEROM_US10_SHA1}" ]; then echo "Checksum verification failed"; exit 1; else echo "Checksum verification passed"; fi
- curl -L "$BASEROM_US10_URL" -o baserom.us.v10.enc.z64 script:
- openssl enc -d -aes-256-cbc -in baserom.us.v10.enc.z64 -out baserom.us.v10.z64 -k "$BASEROM_US10_KEY" # Compile the code
- FILE_SHA1=$(sha1sum baserom.us.v10.z64 | awk '{ print $1 }') - make
- echo "Calculated SHA1 - $FILE_SHA1" # Check if the resulting ROM is the same as the expected one
- echo "Expected SHA1 - $BASEROM_US10_SHA1" - FILE_SHA1=$(sha1sum build/us.v10/banjo.us.v10.z64 | awk '{ print $1 }')
- if [ "${FILE_SHA1}" != "${BASEROM_US10_SHA1}" ]; then echo "Checksum verification failed"; exit 1; else echo "Checksum verification passed"; fi - echo "Calculated SHA1 - $FILE_SHA1"
script: - echo "Expected SHA1 - $BASEROM_US10_SHA1"
# Compile the code - if [ "${FILE_SHA1}" != "${BASEROM_US10_SHA1}" ]; then echo "Checksum verification failed"; exit 1; else echo "Checksum verification passed"; fi
- make
# Check if the resulting ROM is the same as the expected one # Try to compile the code inside the image to make sure it works (run docker container)
- FILE_SHA1=$(sha1sum build/us.v10/banjo.us.v10.z64 | awk '{ print $1 }') build-test-pal:
- echo "Calculated SHA1 - $FILE_SHA1" stage: test
- echo "Expected SHA1 - $BASEROM_US10_SHA1" image:
- if [ "${FILE_SHA1}" != "${BASEROM_US10_SHA1}" ]; then echo "Checksum verification failed"; exit 1; else echo "Checksum verification passed"; fi name: $CI_REGISTRY_IMAGE:latest
entrypoint: [""]
before_script:
- curl -L "$BASEROM_PAL_URL" -o baserom.pal.enc.z64
- openssl enc -d -aes-256-cbc -in baserom.pal.enc.z64 -out baserom.pal.z64 -k "$BASEROM_PAL_KEY"
- FILE_SHA1=$(sha1sum baserom.pal.z64 | awk '{ print $1 }')
- echo "Calculated SHA1 - $FILE_SHA1"
- echo "Expected SHA1 - $BASEROM_PAL_SHA1"
- if [ "${FILE_SHA1}" != "${BASEROM_PAL_SHA1}" ]; then echo "Checksum verification failed"; exit 1; else echo "Checksum verification passed"; fi
script:
# Compile the code
- make VERSION=pal
# Check if the resulting decompressed ROM is the same as the expected one
# ToDo: compare compressed ROMs once tooling is in place
- DECOMP_SHA1=$(sha1sum decompressed.pal.z64 | awk '{ print $1 }')
- FILE_SHA1=$(sha1sum build/pal/banjo.pal.prelim.z64 | awk '{ print $1 }')
- echo "Calculated SHA1 - $FILE_SHA1"
- echo "Expected SHA1 - $DECOMP_SHA1"
- if [ "${FILE_SHA1}" != "${DECOMP_SHA1}" ]; then echo "Checksum verification failed"; exit 1; else echo "Checksum verification passed"; fi