name: insider-linux on: workflow_dispatch: inputs: release_version: type: string description: Forced release version generate_assets: type: boolean description: Generate assets repository_dispatch: types: [insider] push: branches: [ insider ] paths-ignore: - '**/*.md' pull_request: branches: [ insider ] paths-ignore: - '**/*.md' env: APP_NAME: VSCodium ASSETS_REPOSITORY: ${{ github.repository }}-insiders BINARY_NAME: codium-insiders DISABLE_UPDATE: 'yes' GITHUB_BRANCH: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || 'insider' }} OS_NAME: linux VERSIONS_REPOSITORY: ${{ github.repository_owner }}/versions VSCODE_QUALITY: insider jobs: check: runs-on: ubuntu-latest 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@v4 with: ref: ${{ env.GITHUB_BRANCH }} - name: Clone VSCode repo env: PULL_REQUEST_ID: ${{ github.event.inputs.checkout_pr }} run: ./get_repo.sh - name: Check PR or cron env: GENERATE_ASSETS: ${{ github.event.inputs.generate_assets }} run: ./check_cron_or_pr.sh - name: Check existing VSCodium tags/releases env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: ./check_tags.sh compile: needs: - check runs-on: ubuntu-20.04 env: MS_COMMIT: ${{ needs.check.outputs.MS_COMMIT }} MS_TAG: ${{ needs.check.outputs.MS_TAG }} RELEASE_VERSION: ${{ needs.check.outputs.RELEASE_VERSION }} SHOULD_BUILD: 'yes' VSCODE_ARCH: 'x64' outputs: BUILD_SOURCEVERSION: ${{ env.BUILD_SOURCEVERSION }} if: needs.check.outputs.SHOULD_BUILD == 'yes' || github.event.inputs.generate_assets == 'true' steps: - uses: actions/checkout@v4 with: ref: ${{ env.GITHUB_BRANCH }} - name: Setup Node.js environment uses: actions/setup-node@v4 with: node-version: '18.17' - name: Install Yarn run: npm install -g yarn - name: Setup Python 3 uses: actions/setup-python@v5 with: python-version: '3.11' - name: Install libkrb5-dev run: sudo apt-get install -y libkrb5-dev - name: Clone VSCode repo run: ./get_repo.sh - name: Build run: ./build.sh - name: Compress vscode artifact run: | tar -cz --exclude='.build/node' --exclude='**/node_modules' -f vscode.tar.gz vscode - name: Upload vscode artifact uses: actions/upload-artifact@v3 with: name: vscode path: ./vscode.tar.gz retention-days: ${{ needs.check.outputs.SHOULD_DEPLOY == 'yes' && 30 || 1 }} build: needs: - check - compile runs-on: ubuntu-latest strategy: fail-fast: false matrix: include: - vscode_arch: x64 npm_arch: x64 image: vscodium/vscodium-linux-build-agent:bionic-x64 - vscode_arch: arm64 npm_arch: arm64 image: vscodium/vscodium-linux-build-agent:bionic-arm64 - vscode_arch: armhf npm_arch: arm image: vscodium/vscodium-linux-build-agent:bionic-armhf container: image: ${{ matrix.image }} env: BUILD_SOURCEVERSION: ${{ needs.compile.outputs.BUILD_SOURCEVERSION }} 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 }} if: needs.check.outputs.SHOULD_BUILD == 'yes' || github.event.inputs.generate_assets == 'true' steps: - uses: actions/checkout@v3 with: ref: ${{ env.GITHUB_BRANCH }} - name: Install GH run: ./install_gh.sh if: env.SHOULD_DEPLOY == 'yes' - name: Check existing VSCodium tags/releases env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} CHECK_REH: 'no' run: ./check_tags.sh - name: Install libkrb5-dev run: sudo apt-get install -y libkrb5-dev if: env.SHOULD_BUILD == 'yes' || github.event.inputs.generate_assets == 'true' - name: Download vscode artifact uses: actions/download-artifact@v3 with: name: vscode if: env.SHOULD_BUILD == 'yes' || github.event.inputs.generate_assets == 'true' - name: Build env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} npm_config_arch: ${{ matrix.npm_arch }} run: ./package_linux_bin.sh if: env.SHOULD_BUILD == 'yes' || github.event.inputs.generate_assets == 'true' - name: Prepare assets env: SHOULD_BUILD_REH: 'no' run: ./prepare_assets.sh if: (env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes') || github.event.inputs.generate_assets == 'true' - name: Release env: GITHUB_TOKEN: ${{ secrets.STRONGER_GITHUB_TOKEN }} GITHUB_USERNAME: ${{ github.repository_owner }} run: ./release.sh if: 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.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes' - name: Upload assets uses: actions/upload-artifact@v3 with: name: bin-${{ matrix.vscode_arch }} path: assets/ retention-days: 3 if: env.SHOULD_DEPLOY == 'no' && github.event.inputs.generate_assets == 'true' reh: needs: - check - compile runs-on: ubuntu-20.04 strategy: fail-fast: false matrix: include: - vscode_arch: x64 npm_arch: x64 - vscode_arch: arm64 npm_arch: arm64 - vscode_arch: armhf npm_arch: arm # - vscode_arch: ppc64le # npm_arch: ppc64 env: BUILD_SOURCEVERSION: ${{ needs.compile.outputs.BUILD_SOURCEVERSION }} 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' || github.event.inputs.generate_assets == 'true' steps: - uses: actions/checkout@v3 with: ref: ${{ env.GITHUB_BRANCH }} - name: Install GH run: ./install_gh.sh - name: Check existing VSCodium tags/releases env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} CHECK_ONLY_REH: 'yes' run: ./check_tags.sh - name: Download vscode artifact uses: actions/download-artifact@v3 with: name: vscode if: env.SHOULD_BUILD_REH != 'no' || github.event.inputs.generate_assets == 'true' - name: Build env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} npm_config_arch: ${{ matrix.npm_arch }} run: ./package_linux_reh.sh if: env.SHOULD_BUILD_REH != 'no' || github.event.inputs.generate_assets == 'true' - name: Release env: GITHUB_TOKEN: ${{ secrets.STRONGER_GITHUB_TOKEN }} GITHUB_USERNAME: ${{ github.repository_owner }} run: ./release.sh if: env.SHOULD_BUILD_REH != 'no' && env.SHOULD_DEPLOY == 'yes' - name: Upload assets uses: actions/upload-artifact@v3 with: name: reh-${{ matrix.vscode_arch }} path: assets/ retention-days: 3 if: env.SHOULD_DEPLOY == 'no' && github.event.inputs.generate_assets == 'true' aur: needs: - check - build runs-on: ubuntu-latest strategy: fail-fast: false matrix: include: - package_name: vscodium-insiders-bin - package_name: vscodium-insiders if: needs.check.outputs.SHOULD_DEPLOY == 'yes' steps: - name: Get version env: RELEASE_VERSION: ${{ needs.check.outputs.RELEASE_VERSION }} run: echo "PACKAGE_VERSION=${RELEASE_VERSION/-*/}" >> "${GITHUB_ENV}" - name: Publish ${{ matrix.package_name }} uses: zokugun/github-actions-aur-releaser@v1 with: package_name: ${{ matrix.package_name }} package_version: ${{ env.PACKAGE_VERSION }} 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'