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 run: echo "NODE_VERSION=$(cat .nvmrc)" >> $GITHUB_OUTPUT id: nvm - 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 run: | pnpm install pnpm build-release - 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/Signal-${{ steps.get_tag.outputs.LATEST_TAG }}.AppImage asset_name: Signal-${{ steps.get_tag.outputs.LATEST_TAG }}.AppImage