From 9eab4569637d39e17aa87c37cb8a3ad2408c4dc3 Mon Sep 17 00:00:00 2001 From: Baptiste Augrain Date: Sun, 25 Feb 2024 17:34:30 +0100 Subject: [PATCH] ci(linux): wip for aur and snap [skip ci] --- .github/workflows/insider-linux.yml | 67 +------------- .github/workflows/stable-linux.yml | 20 +++-- build.sh | 4 +- stores/snapcraft/check_version.sh | 41 +++++---- .../{ => snap/local/bin}/electron-launch | 0 stores/snapcraft/stable/snap/snapcraft.yaml | 88 +++++++++++++++++++ stores/snapcraft/stable/snapcraft.yaml | 81 ----------------- 7 files changed, 127 insertions(+), 174 deletions(-) rename stores/snapcraft/stable/{ => snap/local/bin}/electron-launch (100%) create mode 100644 stores/snapcraft/stable/snap/snapcraft.yaml delete mode 100644 stores/snapcraft/stable/snapcraft.yaml diff --git a/.github/workflows/insider-linux.yml b/.github/workflows/insider-linux.yml index dfe6026..ffeecc6 100644 --- a/.github/workflows/insider-linux.yml +++ b/.github/workflows/insider-linux.yml @@ -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' diff --git a/.github/workflows/stable-linux.yml b/.github/workflows/stable-linux.yml index 37f406f..e566ccc 100644 --- a/.github/workflows/stable-linux.yml +++ b/.github/workflows/stable-linux.yml @@ -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 diff --git a/build.sh b/build.sh index d549609..19dbdef 100755 --- a/build.sh +++ b/build.sh @@ -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" diff --git a/stores/snapcraft/check_version.sh b/stores/snapcraft/check_version.sh index 37dcbc2..b01761c 100755 --- a/stores/snapcraft/check_version.sh +++ b/stores/snapcraft/check_version.sh @@ -1,4 +1,5 @@ #!/usr/bin/env bash +# shellcheck disable=SC2129 set -e @@ -6,28 +7,32 @@ 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 [[ -z "${SNAP_URL}" ]]; then +if [[ "${GENERATE_ASSETS}" == "true" ]]; then export SHOULD_BUILD="yes" - export SHOULD_DEPLOY_TO_RELEASE="yes" -fi +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 [[ "${VSCODE_QUALITY}" == "stable" ]]; then - sudo snap install --channel stable --classic snapcraft - - echo "Architecture: ${ARCHITECTURE}" - - SNAP_VERSION=$( snapcraft list-revisions "${SNAP_NAME}" | grep -F "stable*" | grep "${ARCHITECTURE}" | tr -s ' ' | cut -d ' ' -f 4 ) - echo "Snap version: ${SNAP_VERSION}" - - if [[ "${SNAP_VERSION}" != "${RELEASE_VERSION}" ]]; then + if [[ -z "${SNAP_URL}" ]]; then export SHOULD_BUILD="yes" - export SHOULD_DEPLOY_TO_STORE="yes" + export SHOULD_DEPLOY_TO_RELEASE="yes" + fi - snap version - snap info "${SNAP_NAME}" || true + if [[ "${VSCODE_QUALITY}" == "stable" ]]; then + sudo snap install --channel stable --classic snapcraft + + echo "Architecture: ${ARCHITECTURE}" + + SNAP_VERSION=$( snapcraft list-revisions "${SNAP_NAME}" | grep -F "stable*" | grep "${ARCHITECTURE}" | tr -s ' ' | cut -d ' ' -f 4 ) + echo "Snap version: ${SNAP_VERSION}" + + if [[ "${SNAP_VERSION}" != "${RELEASE_VERSION}" ]]; then + export SHOULD_BUILD="yes" + export SHOULD_DEPLOY_TO_STORE="yes" + + snap version + snap info "${SNAP_NAME}" || true + fi fi fi diff --git a/stores/snapcraft/stable/electron-launch b/stores/snapcraft/stable/snap/local/bin/electron-launch similarity index 100% rename from stores/snapcraft/stable/electron-launch rename to stores/snapcraft/stable/snap/local/bin/electron-launch diff --git a/stores/snapcraft/stable/snap/snapcraft.yaml b/stores/snapcraft/stable/snap/snapcraft.yaml new file mode 100644 index 0000000..1443cd6 --- /dev/null +++ b/stores/snapcraft/stable/snap/snapcraft.yaml @@ -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 diff --git a/stores/snapcraft/stable/snapcraft.yaml b/stores/snapcraft/stable/snapcraft.yaml deleted file mode 100644 index dfd5de3..0000000 --- a/stores/snapcraft/stable/snapcraft.yaml +++ /dev/null @@ -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