mirror of
https://github.com/ajayyy/SponsorBlock.git
synced 2025-12-06 03:27:03 +03:00
261 lines
9.8 KiB
YAML
261 lines
9.8 KiB
YAML
name: Upload Release Build
|
|
|
|
on:
|
|
release:
|
|
types: [published]
|
|
|
|
jobs:
|
|
|
|
build:
|
|
name: Upload Release
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
# Initialization
|
|
- name: Checkout release branch w/submodules
|
|
uses: actions/checkout@v5
|
|
with:
|
|
submodules: recursive
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: '18'
|
|
- name: Copy configuration
|
|
run: cp config.json.example config.json
|
|
|
|
# Create source artifact with submodule
|
|
- name: Create directory
|
|
run: cd ..; mkdir ./builds
|
|
- name: Zip Source code
|
|
run: zip -r ../builds/SourceCodeUseThisOne.zip *
|
|
- name: Upload Source to release
|
|
uses: Shopify/upload-to-release@07611424e04f1475ddf550e1c0dd650b867d5467
|
|
with:
|
|
args: ../builds/SourceCodeUseThisOne.zip
|
|
name: SourceCodeUseThisOne.zip
|
|
path: ../builds/SourceCodeUseThisOne.zip
|
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Checkout source maps branch
|
|
uses: actions/checkout@v5
|
|
with:
|
|
path: source-maps
|
|
ref: source-maps
|
|
- name: Set up committer info
|
|
run: |
|
|
git config --global user.name "github-actions[bot]"
|
|
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
|
- run: npm ci
|
|
|
|
# Create Firefox artifacts
|
|
- name: Create Firefox artifacts
|
|
run: npm run build:firefox -- --env ghpSourceMaps
|
|
- run: mkdir ./builds
|
|
- name: Move Firefox source maps to source map repo
|
|
run: |
|
|
VERSION=`jq -r '.version' ./dist/manifest.json`
|
|
mkdir -p "./source-maps/firefox/$VERSION/"
|
|
mv -v ./dist/**/*.js.map "./source-maps/firefox/$VERSION/"
|
|
cp -v ./dist/**/*.js.LICENSE.txt "./source-maps/firefox/$VERSION/"
|
|
- name: Zip Artifacts
|
|
run: cd ./dist ; zip -r ../builds/FirefoxExtension.zip *
|
|
- name: Upload FirefoxExtension to release
|
|
uses: Shopify/upload-to-release@07611424e04f1475ddf550e1c0dd650b867d5467
|
|
with:
|
|
args: builds/FirefoxExtension.zip
|
|
name: FirefoxExtension.zip
|
|
path: ./builds/FirefoxExtension.zip
|
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
# Create Chrome artifacts
|
|
- name: Create Chrome artifacts
|
|
run: npm run build:chrome -- --env ghpSourceMaps
|
|
- name: Move Chrome source maps to source map repo
|
|
run: |
|
|
VERSION=`jq -r '.version' ./dist/manifest.json`
|
|
mkdir -p "./source-maps/chrome/$VERSION/"
|
|
mv -v ./dist/**/*.js.map "./source-maps/chrome/$VERSION/"
|
|
cp -v ./dist/**/*.js.LICENSE.txt "./source-maps/chrome/$VERSION/"
|
|
- name: Zip Artifacts
|
|
run: cd ./dist ; zip -r ../builds/ChromeExtension.zip *
|
|
- name: Upload ChromeExtension to release
|
|
uses: Shopify/upload-to-release@07611424e04f1475ddf550e1c0dd650b867d5467
|
|
with:
|
|
args: builds/ChromeExtension.zip
|
|
name: ChromeExtension.zip
|
|
path: ./builds/ChromeExtension.zip
|
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
# Create Edge artifacts
|
|
- name: Clear dist for Edge
|
|
run: rm -rf ./dist
|
|
- name: Create Edge artifacts
|
|
run: npm run build:edge -- --env ghpSourceMaps
|
|
- name: Move Edge source maps to source map repo
|
|
run: |
|
|
VERSION=`jq -r '.version' ./dist/manifest.json`
|
|
mkdir -p "./source-maps/edge/$VERSION/"
|
|
mv -v ./dist/**/*.js.map "./source-maps/edge/$VERSION/"
|
|
cp -v ./dist/**/*.js.LICENSE.txt "./source-maps/edge/$VERSION/"
|
|
- name: Zip Artifacts
|
|
run: cd ./dist ; zip -r ../builds/EdgeExtension.zip *
|
|
- name: Upload EdgeExtension to release
|
|
uses: Shopify/upload-to-release@07611424e04f1475ddf550e1c0dd650b867d5467
|
|
with:
|
|
args: builds/EdgeExtension.zip
|
|
name: EdgeExtension.zip
|
|
path: ./builds/EdgeExtension.zip
|
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
# Create Safari artifacts
|
|
- name: Create Safari artifacts
|
|
run: npm run build:safari -- --env ghpSourceMaps
|
|
- name: Move Safari source maps to source map repo
|
|
run: |
|
|
VERSION=`jq -r '.version' ./dist/manifest.json`
|
|
mkdir -p "./source-maps/safari/$VERSION/"
|
|
mv -v ./dist/**/*.js.map "./source-maps/safari/$VERSION/"
|
|
cp -v ./dist/**/*.js.LICENSE.txt "./source-maps/safari/$VERSION/"
|
|
- name: Zip Artifacts
|
|
run: cd ./dist ; zip -r ../builds/SafariExtension.zip *
|
|
- name: Upload SafariExtension to release
|
|
uses: Shopify/upload-to-release@07611424e04f1475ddf550e1c0dd650b867d5467
|
|
with:
|
|
args: builds/SafariExtension.zip
|
|
name: SafariExtension.zip
|
|
path: ./builds/SafariExtension.zip
|
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
# Create Beta artifacts (Builds with the name changed to beta)
|
|
- name: Create Chrome Beta artifacts
|
|
run: npm run build:chrome -- --env stream=beta --env ghpSourceMaps
|
|
- name: Move Chrome Beta source maps to source map repo
|
|
run: |
|
|
VERSION=`jq -r '.version' ./dist/manifest.json`
|
|
mkdir -p "./source-maps/chrome-beta/$VERSION/"
|
|
mv -v ./dist/**/*.js.map "./source-maps/chrome-beta/$VERSION/"
|
|
cp -v ./dist/**/*.js.LICENSE.txt "./source-maps/chrome-beta/$VERSION/"
|
|
- name: Zip Artifacts
|
|
run: cd ./dist ; zip -r ../builds/ChromeExtensionBeta.zip *
|
|
- name: Upload ChromeExtensionBeta to release
|
|
uses: Shopify/upload-to-release@07611424e04f1475ddf550e1c0dd650b867d5467
|
|
with:
|
|
args: builds/ChromeExtensionBeta.zip
|
|
name: ChromeExtensionBeta.zip
|
|
path: ./builds/ChromeExtensionBeta.zip
|
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
# Firefox Beta
|
|
- name: Create Firefox Beta artifacts
|
|
run: npm run build:firefox -- --env stream=beta --env autoupdate --env ghpSourceMaps
|
|
- uses: actions/upload-artifact@v4
|
|
with:
|
|
name: FirefoxExtensionBeta
|
|
path: dist
|
|
- name: Move Firefox Beta source maps to source map repo
|
|
run: |
|
|
VERSION=`jq -r '.version' ./dist/manifest.json`
|
|
mkdir -p "./source-maps/firefox-beta/$VERSION/"
|
|
mv -v ./dist/**/*.js.map "./source-maps/firefox-beta/$VERSION/"
|
|
cp -v ./dist/**/*.js.LICENSE.txt "./source-maps/firefox-beta/$VERSION/"
|
|
- name: Zip Artifacts
|
|
run: cd ./dist ; zip -r ../builds/FirefoxExtensionBeta.zip *
|
|
|
|
# Create Firefox Signed Beta version
|
|
- name: Create Firefox Signed Beta artifacts
|
|
run: npm run web-sign
|
|
env:
|
|
WEB_EXT_API_KEY: ${{ secrets.WEB_EXT_API_KEY }}
|
|
WEB_EXT_API_SECRET: ${{ secrets.WEB_EXT_API_SECRET }}
|
|
- name: Rename signed file
|
|
run: mv ./web-ext-artifacts/* ./web-ext-artifacts/FirefoxSignedInstaller.xpi
|
|
- uses: actions/upload-artifact@v4
|
|
with:
|
|
name: FirefoxExtensionSigned.xpi
|
|
path: ./web-ext-artifacts/FirefoxSignedInstaller.xpi
|
|
|
|
- name: Upload FirefoxSignedInstaller.xpi to release
|
|
uses: Shopify/upload-to-release@07611424e04f1475ddf550e1c0dd650b867d5467
|
|
with:
|
|
args: web-ext-artifacts/FirefoxSignedInstaller.xpi
|
|
name: FirefoxSignedInstaller.xpi
|
|
path: ./web-ext-artifacts/FirefoxSignedInstaller.xpi
|
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Commit & push new source maps
|
|
if: always()
|
|
run: |
|
|
VERSION=`jq -r '.version' ./dist/manifest.json`
|
|
cd ./source-maps
|
|
git add .
|
|
git commit -m "Publish source maps for version $VERSION"
|
|
git push
|
|
|
|
- name: Prepare new github pages deployment
|
|
shell: python
|
|
run: |
|
|
from pathlib import Path
|
|
import json
|
|
import shutil
|
|
import os
|
|
|
|
# config stuff
|
|
installer_name = "FirefoxSignedInstaller.xpi"
|
|
owner, repo_name = os.environ["GITHUB_REPOSITORY"].split("/")
|
|
owner = owner.lower()
|
|
|
|
# create the github paged dir
|
|
ghp_dir = Path("./github-pages")
|
|
ghp_dir.mkdir(parents=True, exist_ok=True)
|
|
|
|
# move in the installer
|
|
Path("./web-ext-artifacts", installer_name).rename(ghp_dir / installer_name)
|
|
|
|
# read manifest.json and extract parameters
|
|
with open("./dist/manifest.json") as f:
|
|
manifest = json.load(f)
|
|
current_version = manifest["version"]
|
|
ext_id = manifest["browser_specific_settings"]["gecko"]["id"]
|
|
|
|
# generate updates file
|
|
updates = {
|
|
"addons": {
|
|
ext_id: {
|
|
"updates": [
|
|
{
|
|
"version": current_version,
|
|
# param doesn't actually matter, it's just a cachebuster
|
|
"update_link": f"https://{owner}.github.io/{repo_name}/{installer_name}?v={current_version}",
|
|
},
|
|
],
|
|
},
|
|
},
|
|
}
|
|
(ghp_dir / "updates.json").write_text(json.dumps(updates))
|
|
|
|
# copy in source maps
|
|
def only_sourcemaps(cur, ls):
|
|
if '/' in cur:
|
|
return []
|
|
return set(ls) - {"chrome", "chrome-beta", "edge", "firefox", "firefox-beta", "safari"}
|
|
shutil.copytree("source-maps", ghp_dir, ignore=only_sourcemaps, dirs_exist_ok=True)
|
|
|
|
- name: Upload new github pages deployment
|
|
uses: actions/upload-pages-artifact@v3
|
|
with:
|
|
path: ./github-pages
|
|
|
|
deploy-ghp:
|
|
name: Deploy to github pages
|
|
needs: build
|
|
permissions:
|
|
id-token: write
|
|
pages: write
|
|
environment:
|
|
name: github-pages
|
|
url: ${{ steps.deployment.outputs.page_url }}
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Deploy
|
|
id: deployment
|
|
uses: actions/deploy-pages@v4
|