name: Publish - Stable - Linux on: workflow_dispatch: {} repository_dispatch: types: - publish-stable env: ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true APP_NAME: VSCodium ASSETS_REPOSITORY: ${{ github.repository }} BINARY_NAME: codium DISABLE_UPDATE: yes GH_REPO_PATH: ${{ github.repository }} GITHUB_BRANCH: master ORG_NAME: ${{ github.repository_owner }} OS_NAME: linux VERSIONS_REPOSITORY: ${{ github.repository_owner }}/versions VSCODE_QUALITY: stable jobs: check: runs-on: ubuntu-latest permissions: {} env: SHOULD_BUILD: yes SHOULD_DEPLOY: yes outputs: MS_COMMIT: ${{ env.MS_COMMIT }} MS_TAG: ${{ env.MS_TAG }} RELEASE_VERSION: ${{ env.RELEASE_VERSION }} SHOULD_BUILD: ${{ env.SHOULD_BUILD }} SHOULD_DEPLOY: ${{ env.SHOULD_DEPLOY }} steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: ref: ${{ env.GITHUB_BRANCH }} persist-credentials: false - name: Clone VSCode repo run: ./get_repo.sh - name: Check existing VSCodium tags/releases env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} CHECK_ALL: yes FORCE_LINUX_SNAP: ${{ github.event.inputs.force_snap }} run: ./check_tags.sh compile: needs: - check runs-on: ubuntu-22.04 permissions: {} env: MS_COMMIT: ${{ needs.check.outputs.MS_COMMIT }} MS_TAG: ${{ needs.check.outputs.MS_TAG }} RELEASE_VERSION: ${{ needs.check.outputs.RELEASE_VERSION }} SHOULD_BUILD: ${{ needs.check.outputs.SHOULD_BUILD }} VSCODE_ARCH: x64 outputs: BUILD_SOURCEVERSION: ${{ env.BUILD_SOURCEVERSION }} steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: ref: ${{ env.GITHUB_BRANCH }} persist-credentials: false if: env.SHOULD_BUILD == 'yes' - name: Setup GCC uses: egor-tensin/setup-gcc@a2861a8b8538f49cf2850980acccf6b05a1b2ae4 # v2.0 with: version: 10 platform: x64 if: env.SHOULD_BUILD == 'yes' - name: Setup Node.js environment uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version-file: .nvmrc if: env.SHOULD_BUILD == 'yes' - name: Setup Python 3 uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: "3.11" if: env.SHOULD_BUILD == 'yes' - name: Install libkrb5-dev run: sudo apt-get update -y && sudo apt-get install -y libkrb5-dev if: env.SHOULD_BUILD == 'yes' - name: Clone VSCode repo run: ./get_repo.sh if: env.SHOULD_BUILD == 'yes' - name: Build env: SHOULD_BUILD_REH: no SHOULD_BUILD_REH_WEB: no run: ./build.sh if: env.SHOULD_BUILD == 'yes' - name: Compress vscode artifact run: | find vscode -type f -not -path "*/node_modules/*" -not -path "vscode/.build/node/*" -not -path "vscode/.git/*" > vscode.txt echo "vscode/.build/extensions/node_modules" >> vscode.txt echo "vscode/.git" >> vscode.txt tar -czf vscode.tar.gz -T vscode.txt if: env.SHOULD_BUILD == 'yes' - name: Upload vscode artifact uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: vscode path: ./vscode.tar.gz retention-days: ${{ needs.check.outputs.SHOULD_DEPLOY == 'yes' && 30 || 1 }} if: env.SHOULD_BUILD == 'yes' build: needs: - check - compile runs-on: ubuntu-latest environment: publish permissions: contents: write strategy: fail-fast: false matrix: include: - slug: X64 vscode_arch: x64 npm_arch: x64 image: vscodium/vscodium-linux-build-agent:focal-x64 - slug: ARM64 vscode_arch: arm64 npm_arch: arm64 image: vscodium/vscodium-linux-build-agent:focal-arm64 - slug: ARM32 vscode_arch: armhf npm_arch: arm image: vscodium/vscodium-linux-build-agent:focal-armhf - slug: RISCV64 vscode_arch: riscv64 npm_arch: riscv64 image: vscodium/vscodium-linux-build-agent:focal-riscv64 - slug: LOONG64 vscode_arch: loong64 npm_arch: loong64 image: vscodium/vscodium-linux-build-agent:crimson-loong64 - slug: PPC64 vscode_arch: ppc64le npm_arch: ppc64 image: vscodium/vscodium-linux-build-agent:focal-ppc64le container: image: ${{ matrix.image }} env: BUILD_SOURCEVERSION: ${{ needs.compile.outputs.BUILD_SOURCEVERSION }} DISABLED: ${{ vars[format('DISABLE_STABLE_LINUX_APP_{0}', matrix.slug)] }} MS_COMMIT: ${{ needs.check.outputs.MS_COMMIT }} MS_TAG: ${{ needs.check.outputs.MS_TAG }} RELEASE_VERSION: ${{ needs.check.outputs.RELEASE_VERSION }} SHOULD_BUILD: ${{ needs.check.outputs.SHOULD_BUILD }} SHOULD_DEPLOY: ${{ needs.check.outputs.SHOULD_DEPLOY }} VSCODE_ARCH: ${{ matrix.vscode_arch }} outputs: RELEASE_VERSION: ${{ env.RELEASE_VERSION }} SHOULD_BUILD: ${{ env.SHOULD_BUILD }} SHOULD_DEPLOY: ${{ env.SHOULD_DEPLOY }} steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: ref: ${{ env.GITHUB_BRANCH }} persist-credentials: false if: env.DISABLED != 'yes' && env.SHOULD_BUILD == 'yes' - name: Install GH run: ./build/linux/install_gh.sh if: env.DISABLED != 'yes' && env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes' - name: Check existing VSCodium tags/releases env: CHECK_REH: 'no' DISABLE_APPIMAGE: ${{ vars.DISABLE_STABLE_APPIMAGE }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: ./check_tags.sh if: env.DISABLED != 'yes' && env.SHOULD_BUILD == 'yes' - name: Install dependencies run: ./build/linux/deps.sh if: env.DISABLED != 'yes' && env.SHOULD_BUILD == 'yes' - uses: actions-rust-lang/setup-rust-toolchain@2b1f5e9b395427c92ee4e3331786ca3c37afe2d7 # v1.16.0 if: env.DISABLED != 'yes' && env.SHOULD_BUILD == 'yes' - name: Download vscode artifact uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: name: vscode if: env.DISABLED != 'yes' && env.SHOULD_BUILD == 'yes' - name: Build id: build env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} npm_config_arch: ${{ matrix.npm_arch }} run: ./build/linux/package_bin.sh if: env.DISABLED != 'yes' && env.SHOULD_BUILD == 'yes' - name: Prepare assets env: SHOULD_BUILD_REH: 'no' SHOULD_BUILD_REH_WEB: 'no' VSCODE_SYSROOT_REPOSITORY: ${{ steps.build.outputs.VSCODE_SYSROOT_REPOSITORY }} VSCODE_SYSROOT_VERSION: ${{ steps.build.outputs.VSCODE_SYSROOT_VERSION }} VSCODE_SYSROOT_PREFIX: ${{ steps.build.outputs.VSCODE_SYSROOT_PREFIX }} run: ./prepare_assets.sh if: env.DISABLED != 'yes' && env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes' - name: Release env: GITHUB_TOKEN: ${{ secrets.STRONGER_GITHUB_TOKEN }} GITHUB_USERNAME: ${{ github.repository_owner }} run: ./release.sh if: env.DISABLED != 'yes' && env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes' - name: Update versions repo env: GITHUB_TOKEN: ${{ secrets.STRONGER_GITHUB_TOKEN }} GITHUB_USERNAME: ${{ github.repository_owner }} run: ./update_version.sh if: env.DISABLED != 'yes' && env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes' reh_linux: needs: - check - compile runs-on: ubuntu-22.04 environment: publish permissions: contents: write strategy: fail-fast: false matrix: include: - slug: X64 vscode_arch: x64 npm_arch: x64 - slug: ARM64 vscode_arch: arm64 npm_arch: arm64 - slug: ARM32 vscode_arch: armhf npm_arch: arm - slug: PPC64 vscode_arch: ppc64le npm_arch: ppc64 - slug: RISCV64 vscode_arch: riscv64 npm_arch: riscv64 - slug: LOONG64 vscode_arch: loong64 npm_arch: loong64 - slug: S390X vscode_arch: s390x npm_arch: s390x env: BUILD_SOURCEVERSION: ${{ needs.compile.outputs.BUILD_SOURCEVERSION }} DISABLED: ${{ vars[format('DISABLE_STABLE_LINUX_REH_{0}', matrix.slug)] }} MS_COMMIT: ${{ needs.check.outputs.MS_COMMIT }} MS_TAG: ${{ needs.check.outputs.MS_TAG }} RELEASE_VERSION: ${{ needs.check.outputs.RELEASE_VERSION }} SHOULD_BUILD: ${{ needs.check.outputs.SHOULD_BUILD }} SHOULD_DEPLOY: ${{ needs.check.outputs.SHOULD_DEPLOY }} VSCODE_ARCH: ${{ matrix.vscode_arch }} if: needs.check.outputs.SHOULD_BUILD == 'yes' steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: ref: ${{ env.GITHUB_BRANCH }} persist-credentials: false if: env.DISABLED != 'yes' - name: Setup GCC uses: egor-tensin/setup-gcc@a2861a8b8538f49cf2850980acccf6b05a1b2ae4 # v2.0 with: version: 10 platform: x64 if: env.DISABLED != 'yes' - name: Setup Node.js environment uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version-file: '.nvmrc' if: env.DISABLED != 'yes' - name: Setup Python 3 uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: '3.11' if: env.DISABLED != 'yes' - name: Install libkrb5-dev run: sudo apt-get update -y && sudo apt-get install -y libkrb5-dev if: env.DISABLED != 'yes' - name: Install GH run: ./build/linux/install_gh.sh if: env.DISABLED != 'yes' && env.SHOULD_DEPLOY == 'yes' - name: Check existing VSCodium tags/releases env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} CHECK_ONLY_REH: 'yes' run: ./check_tags.sh if: env.DISABLED != 'yes' - name: Download vscode artifact uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: name: vscode if: env.DISABLED != 'yes' && (env.SHOULD_BUILD_REH != 'no' || env.SHOULD_BUILD_REH_WEB != 'no') - name: Build env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} npm_config_arch: ${{ matrix.npm_arch }} run: ./build/linux/package_reh.sh if: env.DISABLED != 'yes' && (env.SHOULD_BUILD_REH != 'no' || env.SHOULD_BUILD_REH_WEB != 'no') - name: Release env: GITHUB_TOKEN: ${{ secrets.STRONGER_GITHUB_TOKEN }} GITHUB_USERNAME: ${{ github.repository_owner }} run: ./release.sh if: env.DISABLED != 'yes' && env.SHOULD_DEPLOY == 'yes' && (env.SHOULD_BUILD_REH != 'no' || env.SHOULD_BUILD_REH_WEB != 'no') reh_alpine: needs: - check - compile runs-on: ubuntu-22.04 environment: publish permissions: contents: write strategy: fail-fast: false matrix: include: - slug: X64 vscode_arch: x64 npm_arch: x64 - slug: ARM64 vscode_arch: arm64 npm_arch: arm64 env: BUILD_SOURCEVERSION: ${{ needs.compile.outputs.BUILD_SOURCEVERSION }} DISABLED: ${{ vars[format('DISABLE_STABLE_ALPINE_REH_{0}', matrix.slug)] }} MS_COMMIT: ${{ needs.check.outputs.MS_COMMIT }} MS_TAG: ${{ needs.check.outputs.MS_TAG }} OS_NAME: alpine RELEASE_VERSION: ${{ needs.check.outputs.RELEASE_VERSION }} SHOULD_BUILD: ${{ needs.check.outputs.SHOULD_BUILD }} SHOULD_DEPLOY: ${{ needs.check.outputs.SHOULD_DEPLOY }} VSCODE_ARCH: ${{ matrix.vscode_arch }} if: needs.check.outputs.SHOULD_BUILD == 'yes' steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: ref: ${{ env.GITHUB_BRANCH }} persist-credentials: false - name: Setup GCC uses: egor-tensin/setup-gcc@a2861a8b8538f49cf2850980acccf6b05a1b2ae4 # v2.0 with: version: 10 platform: x64 - name: Setup Node.js environment uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version-file: '.nvmrc' - name: Install GH run: ./build/linux/install_gh.sh if: env.SHOULD_DEPLOY == 'yes' - name: Check existing VSCodium tags/releases env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} CHECK_ONLY_REH: 'yes' run: ./check_tags.sh - name: Install libkrb5-dev run: sudo apt-get update -y && sudo apt-get install -y libkrb5-dev if: env.SHOULD_BUILD == 'yes' - name: Download vscode artifact uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: name: vscode if: env.DISABLED != 'yes' && (env.SHOULD_BUILD_REH != 'no' || env.SHOULD_BUILD_REH_WEB != 'no') - name: Build env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} npm_config_arch: ${{ matrix.npm_arch }} run: ./build/alpine/package_reh.sh if: env.DISABLED != 'yes' && (env.SHOULD_BUILD_REH != 'no' || env.SHOULD_BUILD_REH_WEB != 'no') - name: Release env: GITHUB_TOKEN: ${{ secrets.STRONGER_GITHUB_TOKEN }} GITHUB_USERNAME: ${{ github.repository_owner }} run: ./release.sh if: env.DISABLED != 'yes' && env.SHOULD_DEPLOY == 'yes' && (env.SHOULD_BUILD_REH != 'no' || env.SHOULD_BUILD_REH_WEB != 'no') aur: needs: - check - build runs-on: ubuntu-latest environment: publish permissions: {} strategy: fail-fast: false matrix: include: - package_name: vscodium package_type: stable if: needs.check.outputs.SHOULD_DEPLOY == 'yes' steps: - name: Publish ${{ matrix.package_name }} uses: zokugun/github-actions-aur-releaser@4348c8a4124434a85d0a5e7457d0ef4079dab490 # v1 with: package_name: ${{ matrix.package_name }} package_type: ${{ matrix.package_type }} 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 environment: publish permissions: {} env: RELEASE_VERSION: ${{ needs.check.outputs.RELEASE_VERSION }} SNAP_NAME: codium SNAP_PUBLISHER: vscodium strategy: fail-fast: false matrix: platform: - amd64 - arm64 if: needs.check.outputs.SHOULD_DEPLOY == 'yes' && needs.check.outputs.SHOULD_BUILD_SNAP != 'no' && vars.DISABLE_STABLE_SNAP != 'yes' steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: ref: ${{ env.GITHUB_BRANCH }} persist-credentials: false - name: Check version env: ARCHITECTURE: ${{ matrix.platform }} GENERATE_ASSETS: ${{ github.event.inputs.generate_assets }} SNAPCRAFT_STORE_CHANNEL: ${{ vars.SNAP_STORE_CHANNEL }} SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAP_STORE_LOGIN }} run: ./stores/snapcraft/check_version.sh - uses: docker/setup-qemu-action@ce360397dd3f832beb865e1373c09c0e9f86d70a # v4.0.0 if: env.SHOULD_BUILD == 'yes' - uses: diddlesnaps/snapcraft-multiarch-action@cfd7a246fad6bea65bb92f69a1c8d07898c231e5 # v1.9.0 with: path: stores/snapcraft/stable architecture: ${{ matrix.platform }} id: build if: env.SHOULD_BUILD == 'yes' - uses: diddlesnaps/snapcraft-review-action@40554b42331cf84dab19ef98c382620427f13482 # v1.3.1 with: snap: ${{ steps.build.outputs.snap }} isClassic: 'true' if: env.SHOULD_DEPLOY_TO_RELEASE == 'yes' || env.SHOULD_DEPLOY_TO_STORE == 'yes' - uses: svenstaro/upload-release-action@29e53e917877a24fad85510ded594ab3c9ca12de # latest 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' - uses: snapcore/action-publish@214b86e5ca036ead1668c79afb81e550e6c54d40 env: SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAP_STORE_LOGIN }} with: snap: ${{ steps.build.outputs.snap }} release: ${{ vars.SNAP_STORE_CHANNEL }} if: env.SHOULD_DEPLOY_TO_STORE == 'yes' deploy-repo-rudy: needs: - check - build runs-on: ubuntu-latest environment: publish permissions: {} if: needs.check.outputs.SHOULD_DEPLOY == 'yes' steps: - name: Trigger repository rebuild env: GL_PAGES_TOKEN: ${{ secrets.GL_PAGES_TOKEN }} run: curl -X POST --fail -F token="${GL_PAGES_TOKEN}" -F ref=master https://gitlab.com/api/v4/projects/8762263/trigger/pipeline deploy-repo-dev: needs: - check - build runs-on: ubuntu-latest environment: publish permissions: {} if: needs.check.outputs.SHOULD_DEPLOY == 'yes' steps: - name: Trigger repository rebuild uses: peter-evans/repository-dispatch@28959ce8df70de7be546dd1250a005dd32156697 # v4.0.1 with: token: ${{ secrets.STRONGER_GITHUB_TOKEN }} repository: VSCodium/repositories-linux event-type: deploy