Update pipeline for Gitea
This commit is contained in:
parent
4f03102e34
commit
4486930873
@ -1,129 +1,92 @@
|
||||
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
|
||||
---
|
||||
name: CI Pipeline
|
||||
|
||||
on:
|
||||
- push
|
||||
- pull_request
|
||||
jobs:
|
||||
check_templates_pr:
|
||||
name: Check Templates (PR)
|
||||
runs-on: ubuntu-latest
|
||||
if: github.event_name == 'pull_request'
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-python@v5
|
||||
- run: apt-get update && apt-get install libxml2-utils -qqy
|
||||
- name: Fetch main branch
|
||||
run: git fetch origin main
|
||||
- name: Get changed files
|
||||
id: files
|
||||
run: |
|
||||
files=$(git diff-tree --no-commit-id --name-only -r HEAD origin/${{ github.event.pull_request.base.ref }})
|
||||
files=$(echo "$files" | grep 'simulation/templates/' | grep '.xml' || true)
|
||||
files=$(echo "$files" | awk '{ gsub("community-mod/","", $0); print $0 }')
|
||||
echo "::set-output name=files::$files"
|
||||
- name: Validate templates
|
||||
run: |
|
||||
if [ -z "${{ steps.files.outputs.files }}" ]; then
|
||||
echo "Nothing to check"
|
||||
else
|
||||
python3 -m scripts.entvalidate -p "$files"
|
||||
python3 -m scripts.entvalidate -p "${{ steps.files.outputs.files }}"
|
||||
fi
|
||||
check_templates_all:
|
||||
name: Check Templates (All)
|
||||
runs-on: ubuntu-latest
|
||||
if: github.ref == 'refs/heads/main'
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-python@v5
|
||||
- run: apt-get update && apt-get install libxml2-utils -qqy
|
||||
- name: Validate all templates
|
||||
run: python3 -m scripts.entvalidate
|
||||
|
||||
|
||||
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
|
||||
package_mod_job:
|
||||
name: "Package and Sign Mod"
|
||||
runs-on: ubuntu-latest
|
||||
needs: check_version_increment
|
||||
env:
|
||||
MOD_NAME: 0ad-community-mod
|
||||
if: github.ref == 'refs/heads/signed'
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-python@v5
|
||||
- run: pip3 install requests
|
||||
- name: Install minisign
|
||||
run: |
|
||||
wget https://github.com/jedisct1/minisign/releases/download/0.11/minisign-0.11-linux.tar.gz
|
||||
tar -xvf minisign-0.11-linux.tar.gz
|
||||
cp minisign-linux/x86_64/minisign /usr/local/bin/minisign
|
||||
rm -rf minisign-linux
|
||||
rm minisign-0.11-linux.tar.gz
|
||||
minisign -v
|
||||
- name: Set env secrets
|
||||
run: |
|
||||
echo "MODIO_API_KEY=${{ secrets.MODIO_API_KEY }}" >> $GITHUB_ENV
|
||||
echo "MODIO_OAUTH2_TOKEN=${{ secrets.MODIO_OAUTH2_TOKEN }}" >> $GITHUB_ENV
|
||||
echo "MOD_VERSION=$(python3 -m scripts.get_version)" >> $GITHUB_ENV
|
||||
echo "${{ secrets.MINISIGN_KEY }}" > signature-file.pem
|
||||
- name: Check Version Increment
|
||||
run: |
|
||||
git fetch --tags
|
||||
if git tag -l | grep -q "^${{ env.VERSION }}$"; then
|
||||
echo "Tag ${{ env.VERSION }} already exists"
|
||||
exit 1
|
||||
fi
|
||||
- uses: https://gitea.wildfiregames.com/Stan/gitea-action-build-pyromod@main
|
||||
with:
|
||||
name: ${{ env.MOD_NAME }}
|
||||
version: ${{ env.MOD_VERSION }}
|
||||
- name: Create sha256sum
|
||||
run: |
|
||||
OUTPUT_FILE="${{ env.MOD_NAME }}-${{ env.MOD_VERSION }}.pyromod"
|
||||
cd output
|
||||
sha256sum $OUTPUT_FILE > $OUTPUT_FILE.sha256sum
|
||||
cat $OUTPUT_FILE.sha256sum
|
||||
cp -v $OUTPUT_FILE.sha256sum ../
|
||||
cp -v ${{ env.MOD_NAME }}-${{ env.MOD_VERSION }}.pyromod ../${{ env.MOD_NAME }}-${{ env.MOD_VERSION }}.zip
|
||||
- name: Sign
|
||||
run: |
|
||||
echo ${{ secrets.MINISIGN_KEY_PW }} | minisign -S -s signature-file.pem -m "${{ env.MOD_NAME }}-${{ env.MOD_VERSION }}.zip" -x signature.minisign
|
||||
- name: Upload to Modio
|
||||
run: |
|
||||
MOD_FILE_PATH="${{ env.MOD_NAME }}-${{ env.MOD_VERSION }}.zip" MOD_VERSION="${{ env.MOD_VERSION }}" python3 -m scripts.modio
|
||||
|
Loading…
Reference in New Issue
Block a user