Files
Signal-Desktop-AppImage/.github/workflows/build.yml
2025-05-19 14:53:46 +09:00

87 lines
2.5 KiB
YAML

name: Build
on:
push:
repository_dispatch:
types: [external_build_trigger]
workflow_dispatch:
schedule:
- cron: "0 0 * * *"
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Get Release
id: get_tag
run: |
LATEST_TAG=$(curl -s https://api.github.com/repos/signalapp/Signal-Desktop/releases/latest | jq -r '.tag_name')
echo "LATEST_TAG=$LATEST_TAG" >> $GITHUB_OUTPUT
- name: Skip if exists
run: |
LATEST_TAG="${{ steps.get_tag.outputs.LATEST_TAG }}"
MY_RELEASE=$(curl -s https://api.github.com/repos/${{ github.repository }}/releases/latest | jq -r '.tag_name')
if [[ "$LATEST_TAG" == "$MY_RELEASE" ]]; then
exit 78
fi
- uses: actions/checkout@v4
with:
repository: signalapp/Signal-Desktop
ref: ${{ steps.get_tag.outputs.LATEST_TAG }}
fetch-depth: 1
- name: Install jq
run: |
sudo apt update
sudo apt install -y jq python3
- name: Modify package.json
run: |
cp package.json package.json.0
cat package.json.0 | jq '.build.linux.target = ["AppImage"]' > package.json.1
cat package.json.1 | jq '.scripts."build:electron" += " --publish=never"' > package.json
- name: Read .nvmrc
id: nvm
run: echo "NODE_VERSION=$(cat .nvmrc)" >> $GITHUB_OUTPUT
- name: Use Node.js ${{ steps.nvm.outputs.NODE_VERSION }}
uses: actions/setup-node@v2
with:
node-version: ${{ steps.nvm.outputs.NODE_VERSION }}
- name: Setup pnpm
uses: pnpm/action-setup@v4.1.0
- name: Build
id: build
run: |
pnpm install
pnpm build-release
echo "FILE=\$(basename \$(ls release/*.AppImage | tail -n 1)" >> $GITHUB_OUTPUT
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
draft: false
prerelease: false
release_name: ${{ steps.get_tag.outputs.LATEST_TAG }}
tag_name: ${{ steps.get_tag.outputs.LATEST_TAG }}
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: release/${{ steps.build.outputs.FILE }}
asset_name: ${{ steps.build.outputs.FILE }}
asset_content_type: application/zip