ci(linux): wip for aur and snap [skip ci]

This commit is contained in:
Baptiste Augrain 2024-02-25 17:34:30 +01:00
parent 9c56656f21
commit 9eab456963
7 changed files with 127 additions and 174 deletions

View file

@ -99,6 +99,8 @@ jobs:
run: ./get_repo.sh
- name: Build
env:
SHOULD_BUILD_REH: 'no'
run: ./build.sh
- name: Compress vscode artifact
@ -289,7 +291,7 @@ jobs:
include:
- package_name: vscodium-insiders-bin
- package_name: vscodium-insiders
if: needs.check.outputs.SHOULD_DEPLOY == 'yes'
if: needs.check.outputs.SHOULD_DEPLOY == 'yes' && github.event.inputs.generate_assets != 'true'
steps:
- name: Get version
@ -305,66 +307,3 @@ jobs:
aur_private_key: ${{ secrets.AUR_PRIVATE_KEY }}
aur_username: ${{ secrets.AUR_USERNAME }}
aur_email: ${{ secrets.AUR_EMAIL }}
snap:
needs:
- check
- build
runs-on: ubuntu-latest
env:
RELEASE_VERSION: ${{ needs.check.outputs.RELEASE_VERSION }}
strategy:
fail-fast: false
matrix:
platform:
- amd64
- arm64
# if: needs.check.outputs.SHOULD_DEPLOY == 'yes'
if: false
steps:
- uses: actions/checkout@v3
with:
ref: ${{ env.GITHUB_BRANCH }}
- name: Check version
env:
ARCHITECTURE: ${{ matrix.platform }}
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAP_STORE_LOGIN }}
run: ./stores/snapcraft/check_version.sh
- uses: docker/setup-qemu-action@v3
if: env.SHOULD_BUILD == 'yes'
- name: Prepare snapcraft.yaml
env:
ARCHITECTURE: ${{ matrix.platform }}
run: ./stores/snapcraft/build.sh
if: env.SHOULD_BUILD == 'yes'
# - uses: diddlesnaps/snapcraft-multiarch-action@v1
# with:
# path: stores/snapcraft/build
# architecture: ${{ matrix.platform }}
# id: build
# if: env.SHOULD_BUILD == 'yes'
- uses: snapcore/action-build@v1
with:
path: stores/snapcraft/build
id: build
if: env.SHOULD_BUILD == 'yes'
# - uses: diddlesnaps/snapcraft-review-action@v1
# with:
# snap: ${{ steps.build.outputs.snap }}
# isClassic: 'true'
# if: env.SHOULD_BUILD == 'yes'
- uses: svenstaro/upload-release-action@v2
with:
repo_name: ${{ env.ASSETS_REPOSITORY }}
repo_token: ${{ secrets.STRONGER_GITHUB_TOKEN }}
file: ${{ steps.build.outputs.snap }}
tag: ${{ env.RELEASE_VERSION }}
if: env.SHOULD_DEPLOY_TO_RELEASE == 'yes'

View file

@ -103,6 +103,8 @@ jobs:
run: ./get_repo.sh
- name: Build
env:
SHOULD_BUILD_REH: 'no'
run: ./build.sh
- name: Compress vscode artifact
@ -320,8 +322,7 @@ jobs:
platform:
- amd64
- arm64
# if: needs.build.outputs.SHOULD_DEPLOY == 'yes'
if: false
if: needs.build.outputs.SHOULD_DEPLOY == 'yes' && github.event.inputs.generate_assets != 'true'
steps:
- uses: actions/checkout@v3
@ -329,16 +330,11 @@ jobs:
- name: Check version
env:
ARCHITECTURE: ${{ matrix.platform }}
GENERATE_ASSETS: ${{ github.event.inputs.generate_assets }}
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAP_STORE_LOGIN }}
run: ./stores/snapcraft/check_version.sh
- uses: docker/setup-qemu-action@v3
if: env.SHOULD_DEPLOY == 'yes'
- name: Prepare snapcraft.yaml
env:
ARCHITECTURE: ${{ matrix.platform }}
run: ./stores/snapcraft/build.sh
if: env.SHOULD_BUILD == 'yes'
- uses: diddlesnaps/snapcraft-multiarch-action@v1
@ -370,6 +366,14 @@ jobs:
release: stable
if: env.SHOULD_DEPLOY_TO_STORE == 'yes'
- name: Upload assets
uses: actions/upload-artifact@v3
with:
name: snap-${{ matrix.platform }}
path: ${{ steps.build.outputs.snap }}
retention-days: 3
if: github.event.inputs.generate_assets == 'true'
deb-rpm-repo-hook:
needs:
- check

View file

@ -38,12 +38,10 @@ if [[ "${SHOULD_BUILD}" == "yes" ]]; then
VSCODE_PLATFORM="win32"
else # linux
# in CI, packaging will be done by a different job
if [[ "${CI_BUILD}" != "no" ]]; then
if [[ "${CI_BUILD}" == "no" ]]; then
yarn gulp "vscode-linux-${VSCODE_ARCH}-min-ci"
find "../VSCode-linux-${VSCODE_ARCH}" -print0 | xargs -0 touch -c
SHOULD_BUILD_REH="no"
fi
VSCODE_PLATFORM="linux"

View file

@ -1,4 +1,5 @@
#!/usr/bin/env bash
# shellcheck disable=SC2129
set -e
@ -6,15 +7,18 @@ export SHOULD_BUILD="no"
export SHOULD_DEPLOY_TO_RELEASE="no"
export SHOULD_DEPLOY_TO_STORE="no"
wget --quiet "https://api.github.com/repos/${ASSETS_REPOSITORY}/releases" -O gh_latest.json
SNAP_URL=$( jq -r 'map(select(.tag_name == "'"${RELEASE_VERSION}"'"))|first.assets[].browser_download_url|select(endswith("'"_${ARCHITECTURE}.snap"'"))' gh_latest.json )
if [[ "${GENERATE_ASSETS}" == "true" ]]; then
export SHOULD_BUILD="yes"
else
wget --quiet "https://api.github.com/repos/${ASSETS_REPOSITORY}/releases" -O gh_latest.json
SNAP_URL=$( jq -r 'map(select(.tag_name == "'"${RELEASE_VERSION}"'"))|first.assets[].browser_download_url|select(endswith("'"_${ARCHITECTURE}.snap"'"))' gh_latest.json )
if [[ -z "${SNAP_URL}" ]]; then
if [[ -z "${SNAP_URL}" ]]; then
export SHOULD_BUILD="yes"
export SHOULD_DEPLOY_TO_RELEASE="yes"
fi
fi
if [[ "${VSCODE_QUALITY}" == "stable" ]]; then
if [[ "${VSCODE_QUALITY}" == "stable" ]]; then
sudo snap install --channel stable --classic snapcraft
echo "Architecture: ${ARCHITECTURE}"
@ -29,6 +33,7 @@ if [[ "${VSCODE_QUALITY}" == "stable" ]]; then
snap version
snap info "${SNAP_NAME}" || true
fi
fi
fi
if [[ "${GITHUB_ENV}" ]]; then

View file

@ -0,0 +1,88 @@
name: codium
adopt-info: codium
summary: Code editing. Redefined.
description: |
Binary releases of Code without branding/telemetry/licensing
base: core20
grade: stable
confinement: classic
compression: lzo
parts:
codium:
plugin: nil
override-build: |
set -eu
ARCHITECTURE=$(dpkg --print-architecture)
# Get GitHub releases
wget --quiet https://api.github.com/repos/VSCodium/vscodium/releases -O latest.json
VERSION=$(jq -r 'sort_by(.tag_name)|last.tag_name' latest.json)
DEB_URL=$(jq -r 'map(select(.tag_name == "'"$VERSION"'"))|first.assets[].browser_download_url|select(endswith("'"_$ARCHITECTURE.deb"'"))' latest.json)
DEB=$(basename "${DEB_URL}")
# Downloading .deb"
wget "${DEB_URL}" -O "${SNAPCRAFT_PART_INSTALL}/${DEB}"
# Unpacking .deb"
dpkg -x "${SNAPCRAFT_PART_INSTALL}/${DEB}" ${SNAPCRAFT_PART_INSTALL}
rm -f latest.json
rm -f "${SNAPCRAFT_PART_INSTALL}/${DEB}"
# Set version
snapcraftctl set-version "$VERSION"
# Correct path to icon.
sed -i 's|Icon=vscodium|Icon=${SNAP}/usr/share/pixmaps/vscodium.png|g' ${SNAPCRAFT_PART_INSTALL}/usr/share/applications/codium.desktop
sed -i 's|Exec=/usr/share/codium/codium|Exec=codium|g' ${SNAPCRAFT_PART_INSTALL}/usr/share/applications/codium.desktop
sed -i 's|Icon=vscodium|Icon=/usr/share/pixmaps/vscodium.png|g' ${SNAPCRAFT_PART_INSTALL}/usr/share/applications/codium-url-handler.desktop
build-packages:
- wget
- jq
stage-packages:
- ca-certificates
- libasound2
- libatk-bridge2.0-0
- libatk1.0-0
- libatspi2.0-0
- libcairo2
- libcanberra-gtk3-module
- libcurl3-gnutls
- libcurl3-nss
- libcurl4
- libdrm2
- libgbm1
- libgl1
- libglib2.0-0
- libgtk-3-0
- libibus-1.0-5
- libnss3
- libpango-1.0-0
- libsecret-1-0
- libxcomposite1
- libxdamage1
- libxfixes3
- libxkbcommon0
- libxkbfile1
- libxrandr2
- libxss1
- locales-all
- packagekit-gtk3-module
- xdg-utils
prime:
- -usr/share/doc
- -usr/share/fonts
- -usr/share/icons
- -usr/share/lintian
- -usr/share/man
- -usr/share/codium/chrome-sandbox
electron-launch:
after:
- codium
plugin: dump
source: snap/local
apps:
codium:
command: electron-launch $SNAP/snap/usr/share/codium/bin/codium --no-sandbox
common-id: codium.desktop
url-handler:
command: electron-launch $SNAP/snap/usr/share/codium/bin/codium --open-url --no-sandbox

View file

@ -1,81 +0,0 @@
name: @@SNAP_NAME@@
version: '@@SNAP_VERSION@@'
summary: Code editing. Redefined.
description: |
Binary releases of Visual Studio Code without branding/telemetry/licensing
base: core20
grade: stable
confinement: classic
compression: lzo
parts:
@@SNAP_NAME@@:
plugin: dump
source: .
stage-packages:
- ca-certificates
- libasound2
- libatk-bridge2.0-0
- libatk1.0-0
- libatspi2.0-0
- libcairo2
- libcanberra-gtk3-module
- libcurl3-gnutls
- libcurl3-nss
- libcurl4
- libdrm2
- libgbm1
- libgl1
- libglib2.0-0
- libgtk-3-0
- libibus-1.0-5
- libnss3
- libpango-1.0-0
- libsecret-1-0
- libxcomposite1
- libxdamage1
- libxfixes3
- libxkbcommon0
- libxkbfile1
- libxrandr2
- libxss1
- locales-all
- packagekit-gtk3-module
- xdg-utils
prime:
- -usr/share/doc
- -usr/share/fonts
- -usr/share/icons
- -usr/share/lintian
- -usr/share/man
build-attributes:
- enable-patchelf
build-packages:
- patchelf
override-build: |
snapcraftctl build
patchelf --force-rpath --set-rpath '$ORIGIN/../../lib/x86_64-linux-gnu:$ORIGIN:/snap/core20/current/lib/x86_64-linux-gnu' $SNAPCRAFT_PART_INSTALL/snap/usr/share/@@SNAP_NAME@@/chrome_crashpad_handler
cleanup:
after:
- @@SNAP_NAME@@
plugin: nil
build-snaps:
- core20
build-packages:
- patchelf
override-prime: |
set -eux
for snap in "core20"; do
cd "/snap/$snap/current" && find . -type f,l -exec rm -f "$SNAPCRAFT_PRIME/{}" \;
done
patchelf --print-rpath $SNAPCRAFT_PRIME/snap/usr/share/@@SNAP_NAME@@/chrome_crashpad_handler
apps:
@@SNAP_NAME@@:
command: electron-launch $SNAP/snap/usr/share/@@SNAP_NAME@@/bin/@@SNAP_NAME@@ --no-sandbox
common-id: @@SNAP_NAME@@.desktop
url-handler:
command: electron-launch $SNAP/snap/usr/share/@@SNAP_NAME@@/bin/@@SNAP_NAME@@ --open-url --no-sandbox