130 lines
3.7 KiB
YAML
130 lines
3.7 KiB
YAML
check_templates_pr:
|
|
image:
|
|
name: $CI_REGISTRY_IMAGE:latest
|
|
entrypoint: [""]
|
|
stage: build
|
|
only:
|
|
refs:
|
|
- merge_requests
|
|
script:
|
|
- git fetch origin main
|
|
- files="$(git diff-tree --no-commit-id --name-only -r HEAD origin/$CI_DEFAULT_BRANCH)"
|
|
- files="$(echo """$files""" | grep 'simulation/templates/' | grep '.xml' || true)"
|
|
- files="$(echo """$files""" | awk '{ gsub("community-mod/","", $0); print $0 }')"
|
|
- |
|
|
if [ -z "$files" ]
|
|
then
|
|
echo "Nothing to check"
|
|
else
|
|
python3 -m scripts.entvalidate -p "$files"
|
|
fi
|
|
|
|
|
|
check_templates_all:
|
|
image:
|
|
name: $CI_REGISTRY_IMAGE:latest
|
|
entrypoint: [""]
|
|
stage: build
|
|
only:
|
|
refs:
|
|
- main
|
|
changes:
|
|
- community-mod/**/*
|
|
script:
|
|
- python3 -m scripts.entvalidate
|
|
|
|
check_version_increment:
|
|
stage: deploy
|
|
when: manual
|
|
allow_failure: false
|
|
rules:
|
|
- if: $CI_COMMIT_BRANCH == "main"
|
|
- if: $CI_COMMIT_BRANCH == "signed"
|
|
script:
|
|
- VERSION=$(python3 -m scripts.get_version)
|
|
- git tag -l
|
|
- git tag -l $VERSION
|
|
- "[ -z $(git tag -l $VERSION) ] || exit 1 "
|
|
|
|
package_mod_job:
|
|
image:
|
|
name: "$CI_REGISTRY/0ad/0ad-community-mod-a26/pyrogenesis:0.25.0"
|
|
stage: deploy
|
|
rules:
|
|
- if: $CI_COMMIT_BRANCH == "main"
|
|
- if: $CI_COMMIT_BRANCH == "signed"
|
|
needs:
|
|
- job: check_version_increment
|
|
artifacts:
|
|
paths:
|
|
- community-mod.zip
|
|
reports:
|
|
dotenv: build.env
|
|
script:
|
|
- VERSION=$(python3 -m scripts.get_version)
|
|
- echo "VERSION=${VERSION}" >> build.env
|
|
- /usr/games/0ad -archivebuild=community-mod -archivebuild-output=community-mod.zip
|
|
|
|
store_mod:
|
|
rules:
|
|
- if: $CI_COMMIT_BRANCH == "main"
|
|
- if: $CI_COMMIT_BRANCH == "signed"
|
|
image: curlimages/curl:latest
|
|
stage: deploy
|
|
needs:
|
|
- job: package_mod_job
|
|
artifacts: true
|
|
script:
|
|
- 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file community-mod.zip "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/community-mod/${VERSION}/community-mod.zip"'
|
|
|
|
release_job:
|
|
stage: deploy
|
|
image: registry.gitlab.com/gitlab-org/release-cli:latest
|
|
needs:
|
|
- job: store_mod
|
|
- job: package_mod_job
|
|
artifacts: true
|
|
rules:
|
|
- if: $CI_COMMIT_BRANCH == "main"
|
|
- if: $CI_COMMIT_BRANCH == "signed"
|
|
script:
|
|
- echo "running release_job for $TAG"
|
|
release:
|
|
name: 'Community Mod $VERSION'
|
|
description: 'Version $VERSION of the 0 A.D. community mod for A26'
|
|
tag_name: '$VERSION'
|
|
ref: '$CI_COMMIT_SHA'
|
|
assets:
|
|
links:
|
|
- name: 'community-mod.zip'
|
|
url: '${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/community-mod/${VERSION}/community-mod.zip'
|
|
|
|
sign_and_upload_to_modio:
|
|
stage: deploy
|
|
image:
|
|
name: $CI_REGISTRY_IMAGE:latest
|
|
entrypoint: [""]
|
|
rules:
|
|
- if: $CI_COMMIT_BRANCH == "signed"
|
|
when: manual
|
|
script:
|
|
- ls
|
|
- VERSION=$(python3 -m scripts.get_version)
|
|
- wget "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/community-mod/${VERSION}/community-mod.zip" -O "0ad-community-mod-${VERSION}.zip"
|
|
- echo $MINISIGN_KEY_PW | minisign -S -s $MINISIGN_KEY -m "0ad-community-mod-${VERSION}.zip" -x signature.minisign
|
|
- MOD_FILE_PATH="0ad-community-mod-${VERSION}.zip" MOD_VERSION="$VERSION" python3 -m scripts.modio
|
|
|
|
build_docker_image:
|
|
image: docker:19.03.12
|
|
rules:
|
|
- if: $CI_COMMIT_BRANCH == "signed"
|
|
when: manual
|
|
stage: build
|
|
services:
|
|
- docker:19.03.12-dind
|
|
script:
|
|
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
|
|
- docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG -t $CI_REGISTRY_IMAGE:latest .
|
|
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
|
|
- docker push $CI_REGISTRY_IMAGE:latest
|