Skip to content

Fix CI

Fix CI #43

Workflow file for this run

name: 'CI / Linux'
on:
push:
branches:
- development
- linux
- 'linux-release-*'
tags:
- 'release-*.*.*-linux*'
- 'release-*.*.*-test*'
- 'v*.*.*'
pull_request:
branches:
- linux
- linux-vnext
- 'linux-release-*'
jobs:
arm64:
name: Ubuntu arm64
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
repository: ${{ inputs.repository || github.repository }}
ref: ${{ inputs.ref }}
submodules: recursive
- name: Package and test application in container
uses: shiftkey/desktop-ubuntu-arm64-packaging@9be09c4b945873e6509baaf690d457aae08cf901
- name: Upload output artifacts
uses: actions/upload-artifact@v4
with:
name: ubuntu-arm64-artifacts
path: |
dist/*.AppImage
dist/*.deb
dist/*.rpm
dist/*.sha256
retention-days: 5
if-no-files-found: error
arm:
name: Ubuntu arm
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
repository: ${{ inputs.repository || github.repository }}
ref: ${{ inputs.ref }}
submodules: recursive
- name: Package and test application in container
uses: shiftkey/desktop-ubuntu-arm-packaging@dd75ebc57f69fdb9319ab2b0fe11b253bb1ff2a4
- name: Upload output artifacts
uses: actions/upload-artifact@v4
with:
name: ubuntu-arm-artifacts
path: |
dist/*.AppImage
dist/*.deb
dist/*.rpm
dist/*.sha256
retention-days: 5
if-no-files-found: error
amd64:
name: Ubuntu x64
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
repository: ${{ inputs.repository || github.repository }}
ref: ${{ inputs.ref }}
submodules: recursive
- name: Package and test application in container
uses: shiftkey/desktop-ubuntu-amd64-packaging@ea7b7a6a940a6b907b160b946439c5c7a516f9f1
- name: Upload output artifacts
uses: actions/upload-artifact@v4
with:
name: ubuntu-amd64-artifacts
path: |
dist/*.AppImage
dist/*.deb
dist/*.rpm
dist/*.sha256
retention-days: 5
if-no-files-found: error
publish:
name: Create GitHub release
needs: [arm64, arm, amd64]
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- name: Use Node.js 20.17.0
uses: actions/setup-node@v4
with:
node-version: 20.17.0
cache: yarn
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: './artifacts'
- name: Display structure of downloaded files
run: ls -R
working-directory: './artifacts'
- name: Get tag name without prefix
run: |
RELEASE_TAG=${GITHUB_REF/refs\/tags\//}
echo "RELEASE_TAG=${RELEASE_TAG}" >> $GITHUB_ENV
if [[ "${RELEASE_TAG}" == release-* ]]; then
tagNameWithoutPrefix="${RELEASE_TAG:8}"
else
tagNameWithoutPrefix="${RELEASE_TAG}"
fi
echo "RELEASE_TAG_WITHOUT_PREFIX=${tagNameWithoutPrefix}" >> $GITHUB_ENV
# TODO: generate release notes
# - pull in default if version matches X.Y.Z-linux1
# - otherwise stub template
- name: Generate release notes
run: |
node -v
yarn
node -r ts-node/register script/generate-release-notes.ts "${{ github.workspace }}/artifacts" "${{ env.RELEASE_TAG_WITHOUT_PREFIX }}"
RELEASE_NOTES_FILE=script/release_notes.txt
if [[ ! -f "$RELEASE_NOTES_FILE" ]]; then
echo "$RELEASE_NOTES_FILE does not exist. Something might have gone wrong while generating the release notes."
exit 1
fi
echo "Release notes:"
echo "---"
cat ${RELEASE_NOTES_FILE}
echo "---"
# GitHubDesktop-linux-<arch>-<old_version>.<ext> -> GitHubDesktopPlus-<release_tag>-linux-<arch>.<ext>
# GitHubDesktop-linux-<arch>-<old_version>-beta1.<ext> -> GitHubDesktopPlus-<release_tag>-linux-<arch>.<ext>
- name: Rename artifacts
run: |
for file in $(find ./artifacts -type f -name "GitHubDesktop-linux-*"); do
new_name=$(echo "$file" | sed -E "s/GitHubDesktop-linux-(.*)-[0-9]+\\.[0-9]+\\.[0-9]+(-beta[0-9]+)?\\.(.*)/GitHubDesktopPlus-${{ env.RELEASE_TAG }}-linux-\\1.\\3/")
new_name=$(echo $new_name | sed -E "s/linux-amd64/linux-x86_64/")
new_name=$(echo $new_name | sed -E "s/linux-aarch64/linux-arm64/")
mv --verbose "$file" "$new_name"
done
- name: Create Release
uses: softprops/action-gh-release@v2
with:
name: GitHub Desktop Plus ${{ env.RELEASE_TAG_WITHOUT_PREFIX }}
files: |
artifacts/**/*.AppImage
artifacts/**/*.deb
artifacts/**/*.rpm
draft: false
fail_on_unmatched_files: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Prepare PKGBUILD
run: |
AUR_DIR=./aur
PKGBUILD_FILE=$AUR_DIR/PKGBUILD
echo "AUR_DIR=$AUR_DIR" >> $GITHUB_ENV
echo "PKGBUILD_FILE=$PKGBUILD_FILE" >> $GITHUB_ENV
if [[ ! -f "$PKGBUILD_FILE" ]]; then
echo "$PKGBUILD_FILE does not exist. Contents of current directory:"
ls -la
exit 1
fi
version_without_v=$(echo "${{ env.RELEASE_TAG_WITHOUT_PREFIX }}" | sed -E "s/v(.*)/\\1/")
sed -i "s/\[\[VERSION_WITHOUT_V\]\]/$version_without_v/" $PKGBUILD_FILE
desktop_file_sha256=$(sha256sum $AUR_DIR/github-desktop-plus.desktop | awk '{ print $1 }')
sed -i "s/\[\[DESKTOP_FILE_SHA256\]\]/$desktop_file_sha256/" $PKGBUILD_FILE
x86_64_sha256=$(sha256sum artifacts/**/*-x86_64.deb | awk '{ print $1 }')
sed -i "s/\[\[X86_64_SHA256\]\]/$x86_64_sha256/" $PKGBUILD_FILE
aarch64_sha256=$(sha256sum artifacts/**/*-arm64.deb | awk '{ print $1 }')
sed -i "s/\[\[AARCH64_SHA256\]\]/$aarch64_sha256/" $PKGBUILD_FILE
armv7h_sha256=$(sha256sum artifacts/**/*-armhf.deb | awk '{ print $1 }')
sed -i "s/\[\[ARMV7H_SHA256\]\]/$armv7h_sha256/" $PKGBUILD_FILE
- name: Upload PKGBUILD
uses: actions/upload-artifact@v4
with:
name: PKGBUILD
path: ${{ env.PKGBUILD_FILE }}
retention-days: 5
if-no-files-found: error
- name: Publish AUR package
uses: KSXGitHub/[email protected]
with:
pkgname: github-desktop-plus-bin
pkgbuild: ${{ env.PKGBUILD_FILE }}
assets: |
${{ env.AUR_DIR }}/.gitignore
${{ env.AUR_DIR }}/github-desktop-plus.desktop
commit_username: ${{ secrets.AUR_USERNAME }}
commit_email: ${{ secrets.AUR_EMAIL }}
ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
commit_message:
'Update AUR package to version ${{ env.RELEASE_TAG_WITHOUT_PREFIX }}'
ssh_keyscan_types: rsa,ecdsa,ed25519