Przeglądaj źródła

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

Baptiste Augrain 1 rok temu
rodzic
commit
9eab456963

+ 3 - 64
.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'

+ 12 - 8
.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

+ 1 - 3
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"

+ 21 - 16
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 [[ -z "${SNAP_URL}" ]]; then
+    export SHOULD_BUILD="yes"
+    export SHOULD_DEPLOY_TO_RELEASE="yes"
+  fi
 
-if [[ "${VSCODE_QUALITY}" == "stable" ]]; then
-  sudo snap install --channel stable --classic snapcraft
+  if [[ "${VSCODE_QUALITY}" == "stable" ]]; then
+    sudo snap install --channel stable --classic snapcraft
 
-  echo "Architecture: ${ARCHITECTURE}"
+    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}"
+    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"
+    if [[ "${SNAP_VERSION}" != "${RELEASE_VERSION}" ]]; then
+      export SHOULD_BUILD="yes"
+      export SHOULD_DEPLOY_TO_STORE="yes"
 
-    snap version
-    snap info "${SNAP_NAME}" || true
+      snap version
+      snap info "${SNAP_NAME}" || true
+    fi
   fi
 fi
 

+ 0 - 0
stores/snapcraft/stable/electron-launch → stores/snapcraft/stable/snap/local/bin/electron-launch


+ 88 - 0
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

+ 0 - 81
stores/snapcraft/stable/snapcraft.yaml

@@ -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