name: Release on: push: tags: - v[0-9]+.* workflow_dispatch: inputs: version: description: Release Version default: v2.1.4 required: true jobs: release: name: Create Release runs-on: ubuntu-latest permissions: contents: write outputs: upload_url: ${{ steps.create_release.outputs.upload_url }} version: ${{ steps.tag.outputs.version }} steps: - name: Checkout code uses: actions/checkout@v3 with: fetch-depth: 0 - name: Fetch Version id: tag run: | if [[ "${{ github.event.inputs.version }}" != "" ]]; then echo ::set-output name=version::${{ github.event.inputs.version }} else echo ::set-output name=version::${GITHUB_REF/refs\/tags\//} fi - name: Update Tag uses: richardsimko/update-tag@v1 with: tag_name: ${{ steps.tag.outputs.version }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Generate Release Notes run: bash scripts/generate-release-notes.sh --version ${{ steps.tag.outputs.version }} - name: Create Release id: create_release uses: softprops/action-gh-release@v1 with: tag_name: ${{ steps.tag.outputs.version }} name: Lite XL ${{ steps.tag.outputs.version }} draft: true body_path: release-notes.md build_linux: name: Linux needs: release runs-on: ubuntu-latest container: ghcr.io/lite-xl/lite-xl-build-box:latest env: CC: gcc CXX: g++ steps: - name: Set Environment Variables run: | echo "$HOME/.local/bin" >> "$GITHUB_PATH" echo "INSTALL_REF=${{ needs.release.outputs.version }}" >> "$GITHUB_ENV" - uses: actions/checkout@v3 # disabled because this will break our own Python install - name: Python Setup if: false uses: actions/setup-python@v4 with: python-version: 3.9 # disabled because the container has up-to-date packages - name: Update Packages if: false run: sudo apt-get update # disabled as the dependencies are already installed - name: Install Dependencies if: false run: | bash scripts/install-dependencies.sh --debug sudo apt-get install -y ccache - name: Build Portable run: | bash --version bash scripts/build.sh --debug --forcefallback --portable --release - name: Package Portables run: | bash scripts/package.sh --version ${INSTALL_REF} --debug --binary --release bash scripts/package.sh --version ${INSTALL_REF} --debug --addons --binary --release - name: Build AppImages run: | bash scripts/appimage.sh --debug --static --version ${INSTALL_REF} --release bash scripts/appimage.sh --debug --nobuild --addons --version ${INSTALL_REF} - name: Upload Files uses: softprops/action-gh-release@v1 with: tag_name: ${{ needs.release.outputs.version }} draft: true files: | lite-xl-${{ env.INSTALL_REF }}-linux-x86_64-portable.tar.gz lite-xl-${{ env.INSTALL_REF }}-addons-linux-x86_64-portable.tar.gz LiteXL-${{ env.INSTALL_REF }}-x86_64.AppImage LiteXL-${{ env.INSTALL_REF }}-addons-x86_64.AppImage build_macos: name: macOS needs: release runs-on: macos-11 strategy: matrix: arch: [x86_64, arm64] env: CC: clang CXX: clang++ steps: - name: System Information run: | system_profiler SPSoftwareDataType bash --version gcc -v xcodebuild -version - name: Set Environment Variables run: | echo "$HOME/.local/bin" >> "$GITHUB_PATH" echo "INSTALL_REF=${{ needs.release.outputs.version }}" >> "$GITHUB_ENV" echo "INSTALL_NAME=lite-xl-${{ needs.release.outputs.version }}-macos-${{ matrix.arch }}" >> "$GITHUB_ENV" echo "INSTALL_NAME_ADDONS=lite-xl-${{ needs.release.outputs.version }}-addons-macos-${{ matrix.arch }}" >> "$GITHUB_ENV" if [[ $(uname -m) != ${{ matrix.arch }} ]]; then echo "ARCH=--cross-arch ${{ matrix.arch }}" >> "$GITHUB_ENV"; fi - uses: actions/checkout@v3 - name: Python Setup uses: actions/setup-python@v4 with: python-version: 3.9 - name: Install Dependencies run: bash scripts/install-dependencies.sh --debug - name: Build run: | bash --version bash scripts/build.sh --bundle --debug --forcefallback --release $ARCH - name: Create DMG Image run: | bash scripts/package.sh --version ${INSTALL_REF} $ARCH --debug --dmg --release bash scripts/package.sh --version ${INSTALL_REF} $ARCH --debug --addons --dmg --release - name: Upload Artifacts uses: actions/upload-artifact@v3 with: name: macOS DMG Images path: | ${{ env.INSTALL_NAME }}.dmg ${{ env.INSTALL_NAME_ADDONS }}.dmg - name: Upload Files uses: softprops/action-gh-release@v1 with: tag_name: ${{ needs.release.outputs.version }} draft: true files: | ${{ env.INSTALL_NAME }}.dmg ${{ env.INSTALL_NAME_ADDONS }}.dmg build_macos_universal: name: macOS (Universal) needs: [release, build_macos] runs-on: macos-11 steps: - name: System Information run: | system_profiler SPSoftwareDataType bash --version gcc -v xcodebuild -version - name: Set Environment Variables run: | echo "$HOME/.local/bin" >> "$GITHUB_PATH" echo "INSTALL_BASE=lite-xl-${{ needs.release.outputs.version }}-macos" >> "$GITHUB_ENV" echo "INSTALL_BASE_ADDONS=lite-xl-${{ needs.release.outputs.version }}-addons-macos" >> "$GITHUB_ENV" - uses: actions/checkout@v2 - name: Download Artifacts uses: actions/download-artifact@v3 id: download with: name: macOS DMG Images path: dmgs-original - name: Python Setup uses: actions/setup-python@v2 with: python-version: 3.9 - name: Install dmgbuild run: pip install dmgbuild - name: Prepare DMG Images run: | mkdir -p dmgs-addons dmgs-normal mv -v "${{ steps.download.outputs.download-path }}/$INSTALL_BASE-"{x86_64,arm64}.dmg dmgs-normal mv -v "${{ steps.download.outputs.download-path }}/$INSTALL_BASE_ADDONS-"{x86_64,arm64}.dmg dmgs-addons - name: Create Universal DMGs run: | bash --version bash scripts/make-universal-binaries.sh dmgs-normal "$INSTALL_BASE-universal" bash scripts/make-universal-binaries.sh dmgs-addons "$INSTALL_BASE_ADDONS-universal" - name: Upload Files uses: softprops/action-gh-release@v1 with: tag_name: ${{ needs.release.outputs.version }} draft: true files: | ${{ env.INSTALL_BASE }}-universal.dmg ${{ env.INSTALL_BASE_ADDONS }}-universal.dmg build_windows_msys2: name: Windows needs: release runs-on: windows-2019 strategy: matrix: msystem: [MINGW32, MINGW64] defaults: run: shell: msys2 {0} steps: - uses: actions/checkout@v3 - uses: msys2/setup-msys2@v2 with: msystem: ${{ matrix.msystem }} update: true install: >- base-devel git zip - name: Set Environment Variables run: | echo "$HOME/.local/bin" >> "$GITHUB_PATH" echo "INSTALL_REF=${{ needs.release.outputs.version }}" >> "$GITHUB_ENV" if [[ "${MSYSTEM}" == "MINGW64" ]]; then echo "BUILD_ARCH=x86_64" >> "$GITHUB_ENV" echo "INSTALL_NAME=lite-xl-${{ needs.release.outputs.version }}-windows-x86_64" >> "$GITHUB_ENV" echo "INSTALL_NAME_ADDONS=lite-xl-${{ needs.release.outputs.version }}-addons-windows-x86_64" >> "$GITHUB_ENV" else echo "BUILD_ARCH=i686" >> "$GITHUB_ENV" echo "INSTALL_NAME=lite-xl-${{ needs.release.outputs.version }}-windows-i686" >> "$GITHUB_ENV" echo "INSTALL_NAME_ADDONS=lite-xl-${{ needs.release.outputs.version }}-addons-windows-i686" >> "$GITHUB_ENV" fi - name: Install Dependencies run: bash scripts/install-dependencies.sh --debug - name: Build run: | bash --version bash scripts/build.sh -U --debug --forcefallback --release - name: Package run: bash scripts/package.sh --version ${INSTALL_REF} --debug --binary --release - name: Build Installer run: bash scripts/innosetup/innosetup.sh --debug --version ${INSTALL_REF} - name: Package With Addons run: bash scripts/package.sh --version ${INSTALL_REF} --debug --addons --binary --release - name: Build Installer With Addons run: bash scripts/innosetup/innosetup.sh --debug --version ${INSTALL_REF} --addons - name: Upload Files uses: softprops/action-gh-release@v1 with: tag_name: ${{ needs.release.outputs.version }} draft: true files: | ${{ env.INSTALL_NAME }}.zip ${{ env.INSTALL_NAME_ADDONS }}.zip LiteXL-${{ env.INSTALL_REF }}-${{ env.BUILD_ARCH }}-setup.exe LiteXL-${{ env.INSTALL_REF }}-addons-${{ env.BUILD_ARCH }}-setup.exe