name: stable-linux on: workflow_dispatch: inputs: new_release: type: boolean description: Force new Release force_version: type: boolean description: Force update version schedule: - cron: '0 18 * * *' push: branches: [ master ] paths-ignore: - '**/*.md' pull_request: branches: [ master ] paths-ignore: - '**/*.md' env: APP_NAME: VSCodium ASSETS_REPOSITORY: ${{ github.repository }} OS_NAME: linux VERSIONS_REPOSITORY: ${{ github.repository_owner }}/versions VSCODE_QUALITY: stable jobs: check: runs-on: ubuntu-latest container: image: vscodium/vscodium-linux-build-agent:bionic-x64 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@v3 with: ref: ${{ env.GITHUB_BRANCH }} - name: Clone VSCode repo run: ./get_repo.sh - name: Check PR or cron run: ./check_cron_or_pr.sh dependencies: needs: - check runs-on: ubuntu-latest env: MS_COMMIT: ${{ needs.check.outputs.MS_COMMIT }} MS_TAG: ${{ needs.check.outputs.MS_TAG }} RELEASE_VERSION: ${{ needs.check.outputs.RELEASE_VERSION }} strategy: fail-fast: false matrix: include: - vscode_arch: x64 image: vscodium/vscodium-linux-build-agent:centos7-devtoolset8-x64 # - vscode_arch: arm64 # image: vscodium/vscodium-linux-build-agent:bionic-x64 container: image: ${{ matrix.image }} if: needs.check.outputs.SHOULD_BUILD == 'yes' || needs.check.outputs.SHOULD_DEPLOY == 'yes' steps: - uses: actions/checkout@v3 with: ref: ${{ env.GITHUB_BRANCH }} - name: Clone VSCode repo run: ./get_repo.sh - uses: docker/setup-qemu-action@v2 if: matrix.vscode_arch == 'arm64' - name: Setup Node.js environment uses: actions/setup-node@v3 with: node-version: '16.20' - name: Install Yarn run: npm install -g yarn - name: Install remote dependencies (x64) env: npm_config_arch: x64 run: ./install_remote_dependencies.sh if: matrix.vscode_arch == 'x64' # - name: Install remote dependencies (arm64) # run: | # set -e # docker run -e VSCODE_QUALITY -e GITHUB_TOKEN -v $(pwd):/root/vscodium vscodium/vscodium-linux-build-agent:centos7-devtoolset8-arm64 /root/vscodium/install_remote_dependencies.sh # if: matrix.vscode_arch == 'arm64' - name: Save remote dependencies uses: actions/upload-artifact@v3 with: name: remote-dependencies-${{ matrix.vscode_arch }} path: ./remote-dependencies.tar retention-days: ${{ needs.check.outputs.SHOULD_DEPLOY == 'yes' && 30 || 1 }} build: needs: - check - dependencies runs-on: ubuntu-latest 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 }} SHOULD_DEPLOY: ${{ needs.check.outputs.SHOULD_DEPLOY }} 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:buster-arm64 - vscode_arch: armhf npm_arch: arm image: vscodium/vscodium-linux-build-agent:buster-armhf container: image: ${{ matrix.image }} env: 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' || needs.check.outputs.SHOULD_DEPLOY == 'yes' steps: - uses: actions/checkout@v3 - name: Clone VSCode repo run: ./get_repo.sh - name: Install GH run: ./install_gh.sh - name: Setup Node.js environment uses: actions/setup-node@v3 with: node-version: '16.20' - name: Install Yarn run: npm install -g yarn - name: Check existing VSCodium tags/releases env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} NEW_RELEASE: ${{ github.event.inputs.new_release }} run: ./check_tags.sh if: env.SHOULD_DEPLOY == 'yes' - name: Restore remote dependencies uses: actions/download-artifact@v3 with: name: remote-dependencies-${{ matrix.vscode_arch }} if: env.SHOULD_BUILD == 'yes' && matrix.vscode_arch == 'x64' - name: Build env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} npm_config_arch: ${{ matrix.npm_arch }} run: ./build.sh if: env.SHOULD_BUILD == 'yes' - name: Prepare assets run: ./prepare_assets.sh if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes' - name: Release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: ./release.sh if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes' - name: Update versions repo env: FORCE_UPDATE: ${{ github.event.inputs.force_version }} GITHUB_TOKEN: ${{ secrets.STRONGER_GITHUB_TOKEN }} GITHUB_USERNAME: ${{ github.repository_owner }} run: ./update_version.sh if: env.SHOULD_DEPLOY == 'yes' aur: needs: - build runs-on: ubuntu-latest strategy: fail-fast: false matrix: include: - package_name: vscodium package_type: stable - package_name: vscodium-git package_type: rolling if: needs.build.outputs.SHOULD_DEPLOY == 'yes' steps: - name: Publish ${{ matrix.package_name }} uses: zokugun/github-actions-aur-releaser@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: - build runs-on: ubuntu-latest env: APP_NAME: codium strategy: fail-fast: false matrix: platform: - amd64 - arm64 if: needs.build.outputs.SHOULD_DEPLOY == 'yes' steps: - uses: actions/checkout@v3 - 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@v2 if: env.SHOULD_DEPLOY == 'yes' - uses: diddlesnaps/snapcraft-multiarch-action@v1 with: path: stores/snapcraft/stable architecture: ${{ matrix.platform }} id: build if: env.SHOULD_DEPLOY == 'yes' - uses: diddlesnaps/snapcraft-review-action@v1 with: snap: ${{ steps.build.outputs.snap }} isClassic: 'true' if: env.SHOULD_DEPLOY == 'yes' - uses: snapcore/action-publish@master env: SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAP_STORE_LOGIN }} with: snap: ${{ steps.build.outputs.snap }} release: stable if: env.SHOULD_DEPLOY == 'yes' deb-rpm-repo-hook: needs: - build runs-on: ubuntu-latest if: needs.build.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