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