stages: - compile - release # Compile Job (runs on every commit) compile: stage: compile image: ubuntu:latest before_script: # Install Node.js v21.7.3 manually - apt-get update && apt-get install -y curl - 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 - npm install --global gulp-cli - gulp --version # Verify Gulp is installed script: - npm install - gulp compile only: - branches # Release Job (manually triggered with version) release: stage: release image: ubuntu:latest before_script: # Install Node.js v21.7.3 manually - apt-get update && apt-get install -y curl jq git openssh-client - 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 - npm install --global gulp-cli - gulp --version # Verify Gulp is installed # Set Git configuration - git config --global user.name "GitLab CI" - git config --global user.email "ci@gitlab.com" # Use the PAT for authentication - git remote set-url --push origin "https://$CI_COMMITTER_USER_AND_TOKEN@gitlab.com/wintermyst/kidsonbrooms.git" - git fetch --unshallow # Ensure we fetch all history for the branch (not a shallow clone) - git checkout master # Switch to the master branch - git branch --set-upstream-to=origin/master master # Set the upstream to the master branch script: # Check if VERSION is provided - | if [ -z "$VERSION" ]; then echo "Error: VERSION variable is required." && exit 1; fi - npm install # Run Gulp release task (includes zipping) - gulp release # Create a release on GitLab - > curl --request POST \ --header "PRIVATE-TOKEN: ${GITLAB_PAT}" \ --header "Content-Type: application/json" \ --data "{ \"name\": \"Release v$VERSION\", \"tag_name\": \"v$VERSION\", \"description\": \"Release v$VERSION\", \"ref\": \"master\", \"assets\": { \"links\": [ { \"name\": \"Download kidsonbrooms.zip\", \"url\": \"https://gitlab.com/wintermyst/kidsonbrooms/-/jobs/$CI_JOB_ID/artifacts/download\" } ] } }" "https://gitlab.com/api/v4/projects/$CI_PROJECT_ID/releases" # Update system.json - export RELEASE_URL=$(echo $RELEASE_RESPONSE | jq -r '.assets.links[0].url') # Update the system.json file with the release URL - | sed -i "s|\"download\":.*|\"download\": \"$RELEASE_URL\",|" system.json - git add system.json - git commit -m "Update system.json with release URL" - git push origin master # Publish the release to the Foundry API - | curl -X POST https://api.foundryvtt.com/_api/packages/release_version/ \ -H "Authorization: $FOUNDRY_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "id": "Your-Package-ID", "release": { "version": "'$VERSION'", "manifest": "https://gitlab.com/wintermyst/kids-nbrooms/-/raw/master/system.json", "notes": "https://gitlab.com/wintermyst/kidsonbrooms/releases/tag/v'$VERSION'", "compatibility": { "minimum": "12.331", "verified": "12.331", "maximum": "" } } }' only: - master when: manual allow_failure: false artifacts: paths: - kidsonbrooms.zip expire_in: never