fvtt-never-stop-blowing-up/.gitlab-ci.yml

110 lines
3.6 KiB
YAML
Raw Normal View History

2024-09-22 01:45:32 +02:00
stages:
- compile
- release
# Compile Job (runs on every commit)
compile:
stage: compile
2024-09-22 01:54:53 +02:00
image: ubuntu:latest
before_script:
# Install Node.js v21.7.3 manually
2024-09-22 01:55:02 +02:00
- apt-get update && apt-get install -y curl
2024-09-22 01:54:53 +02:00
- curl -fsSL https://deb.nodesource.com/setup_21.x | bash -
- apt-get install -y nodejs
- node -v # Verify the correct Node.js version
# Install Gulp globally
2024-09-22 01:45:32 +02:00
- npm install --global gulp-cli
2024-09-22 01:54:53 +02:00
- gulp --version # Verify Gulp is installed
script:
2024-09-22 01:45:32 +02:00
- npm install
- gulp compile
only:
- branches
# Release Job (manually triggered with version)
release:
stage: release
2024-09-22 01:54:53 +02:00
image: ubuntu:latest # Or any other basic image
2024-09-22 01:45:32 +02:00
before_script:
2024-09-22 01:54:53 +02:00
# Install Node.js v21.7.3 manually
2024-09-22 01:55:02 +02:00
- apt-get update && apt-get install -y curl
2024-09-22 01:54:53 +02:00
- curl -fsSL https://deb.nodesource.com/setup_21.x | bash -
- apt-get install -y nodejs
- node -v # Verify the correct Node.js version
# Install Gulp globally
2024-09-22 01:45:32 +02:00
- npm install --global gulp-cli
2024-09-22 01:54:53 +02:00
- gulp --version # Verify Gulp is installed
2024-09-22 01:45:32 +02:00
# Set up SSH agent and add private key for pushing to protected branch
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
2024-09-22 16:05:15 +02:00
- echo "$SSH_PRIVATE_KEY_ENCODED" | base64 --decode > ~/.ssh/id_rsa
- chmod 600 ~/.ssh/id_rsa
2024-09-22 01:45:32 +02:00
- eval $(ssh-agent -s)
2024-09-22 16:05:15 +02:00
- ssh-add ~/.ssh/id_rsa
2024-09-22 01:45:32 +02:00
- mkdir -p ~/.ssh
- ssh-keyscan gitlab.com >> ~/.ssh/known_hosts
script:
# Check if VERSION is provided
2024-09-22 01:48:59 +02:00
- |
if [ -z "$VERSION" ]; then echo "Error: VERSION variable is required." && exit 1; fi
2024-09-22 01:45:32 +02:00
# Run Gulp release task (includes zipping)
- gulp release
# Create a release on GitLab
2024-09-22 01:48:59 +02:00
- |
export RELEASE_RESPONSE=$(curl --request POST \
2024-09-22 01:45:32 +02:00
--header "PRIVATE-TOKEN: $GITLAB_TOKEN" \
--header "Content-Type: application/json" \
--data '{
"name": "Release v'$VERSION'",
"tag_name": "v'$VERSION'",
"description": "Release v'$VERSION'",
"ref": "master",
"assets": {
"links": [
{
2024-09-22 15:57:37 +02:00
"name": "Download kidsonbrooms.zip",
2024-09-22 01:45:32 +02:00
"url": "https://gitlab.com/YOUR_NAMESPACE/YOUR_PROJECT/-/jobs/$CI_JOB_ID/artifacts/download"
}
]
}
}' "https://gitlab.com/api/v4/projects/$CI_PROJECT_ID/releases")
# Get the release URL from the response
- export RELEASE_URL=$(echo $RELEASE_RESPONSE | jq -r '.assets.links[0].url')
# Update the system.json file with the release URL
2024-09-22 01:48:59 +02:00
- |
sed -i "s|\"download\":.*|\"download\": \"$RELEASE_URL\",|" system.json
2024-09-22 01:45:32 +02:00
# Commit the updated system.json and push it to master
- git config --global user.name "GitLab CI"
- git config --global user.email "ci@gitlab.com"
- git add system.json
- git commit -m "Update system.json with release URL"
- git push origin master
# Publish the release to the Foundry API
2024-09-22 01:48:59 +02:00
- |
curl -X POST https://api.foundryvtt.com/_api/packages/release_version/ \
2024-09-22 01:45:32 +02:00
-H "Authorization: $FOUNDRY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"id": "Your-Package-ID",
"release": {
"version": "'$VERSION'",
2024-09-22 15:57:37 +02:00
"manifest": "https://gitlab.com/wintermyst/kids-nbrooms/-/raw/master/system.json",
"notes": "https://gitlab.com/wintermyst/kidsonbrooms/releases/tag/v'$VERSION'",
2024-09-22 01:45:32 +02:00
"compatibility": {
"minimum": "12.331",
"verified": "12.331",
"maximum": ""
}
}
}'
when: manual
allow_failure: false
artifacts:
paths:
2024-09-22 15:57:37 +02:00
- kidsonbrooms.zip
2024-09-22 01:45:32 +02:00
expire_in: never