This repository was archived by the owner on Sep 24, 2025. It is now read-only.
Make Release #1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Make Release | |
| on: | |
| # push: | |
| # tags: | |
| # - '[0-9]+\.[0-9]+\.[0-9]+' # any tag that looks like a release version, ex. 3.6.0 | |
| workflow_dispatch: | |
| concurrency: | |
| group: Release Build | |
| cancel-in-progress: true | |
| jobs: | |
| create_release: | |
| name: Create Draft Release | |
| runs-on: ubuntu-latest | |
| outputs: | |
| upload_url: ${{ steps.create_release.outputs.upload_url }} | |
| release_id: ${{ steps.create_release.outputs.release_id }} | |
| steps: | |
| - name: Create Release | |
| id: create_release | |
| uses: actions/github-script@v7 | |
| env: | |
| TAG_NAME: ${{ github.ref }} | |
| RELEASE_NAME: ${{ github.ref }} | |
| with: | |
| github-token: ${{secrets.GITHUB_TOKEN}} | |
| retries: 3 | |
| script: | | |
| const { TAG_NAME, RELEASE_NAME } = process.env; | |
| const createReleaseResponse = await github.rest.repos.createRelease({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| tag_name: TAG_NAME.replace('refs/tags/', ''), | |
| name: RELEASE_NAME.replace('refs/tags/', ''), | |
| draft: true, | |
| prerelease: false, | |
| target_commitish: context.sha | |
| }); | |
| core.setOutput('release_id', createReleaseResponse.data.id); | |
| core.setOutput('upload_url', createReleaseResponse.data.upload_url); | |
| build_tarball: | |
| name: Build Tarball | |
| needs: create_release | |
| runs-on: ubuntu-latest | |
| steps: | |
| - shell: bash | |
| run: git config --global core.autocrlf input | |
| - name: Checkout Source | |
| uses: actions/checkout@v4 | |
| - name: Install Dependencies | |
| shell: bash | |
| run: | | |
| sudo apt update | |
| sudo apt-get -y install autoconf automake build-essential byacc flex xa65 dos2unix libpcap-dev libcurl4-openssl-dev libglib2.0-dev | |
| - name: Build | |
| id: build | |
| shell: bash | |
| run: | | |
| cd vice | |
| ./src/buildtools/genvicedate_h.sh | |
| ./autogen.sh | |
| ./configure --with-resid --disable-pdf-docs --enable-headlessui --without-pulse --without-alsa --without-png | |
| make dist | |
| TARBALL=$(ls vice-*.tar.gz) | |
| echo "tarball_path=$(pwd)/${TARBALL}" >> $GITHUB_OUTPUT | |
| echo "tarball_name=${TARBALL}" >> $GITHUB_OUTPUT | |
| - name: Upload Artifact Tarball | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: vice-tarball | |
| path: ${{ steps.build.outputs.tarball_path }} | |
| retention-days: 1 | |
| - name: Upload Release Tarball | |
| id: upload | |
| uses: actions/github-script@v7 | |
| env: | |
| UPLOAD_URL: ${{ needs.create_release.outputs.upload_url }} | |
| ASSET_PATH: ${{ steps.build.outputs.tarball_path }} | |
| ASSET_NAME: ${{ steps.build.outputs.tarball_name }} | |
| ASSET_CONTENT_TYPE: application/gzip | |
| with: | |
| github-token: ${{secrets.GITHUB_TOKEN}} | |
| retries: 3 | |
| script: | | |
| const fs = require('fs'); | |
| const { UPLOAD_URL, ASSET_PATH, ASSET_NAME, ASSET_CONTENT_TYPE } = process.env; | |
| const uploadAssetResponse = await github.rest.repos.uploadReleaseAsset({ | |
| url: UPLOAD_URL, | |
| headers: { | |
| 'content-type': ASSET_CONTENT_TYPE, | |
| 'content-length': fs.statSync(ASSET_PATH).size | |
| }, | |
| name: ASSET_NAME, | |
| data: fs.readFileSync(ASSET_PATH) | |
| }); | |
| build_doc: | |
| name: Build Headless, Upload Documentation | |
| needs: build_tarball | |
| runs-on: ubuntu-latest | |
| steps: | |
| - shell: bash | |
| run: git config --global core.autocrlf input | |
| - name: Download Tarball | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: vice-tarball | |
| - name: Unpack Source | |
| shell: bash | |
| run: | | |
| tar xzvf vice-*.tar.gz | |
| rm vice-*.tar.gz | |
| - name: Install Dependencies | |
| shell: bash | |
| run: | | |
| sudo apt update | |
| sudo apt-get -y install autoconf \ | |
| automake \ | |
| build-essential \ | |
| byacc \ | |
| dos2unix \ | |
| flex \ | |
| libcurl4-openssl-dev \ | |
| libpcap-dev \ | |
| texinfo \ | |
| texlive-fonts-recommended \ | |
| texlive-latex-extra \ | |
| xa65 | |
| - name: Build | |
| id: build | |
| shell: bash | |
| run: | | |
| cd vice-*/ | |
| ./src/buildtools/genvicedate_h.sh | |
| ./autogen.sh | |
| ./configure --enable-option-checking=fatal \ | |
| --enable-headlessui \ | |
| --enable-html-docs \ | |
| --enable-pdf-docs \ | |
| --without-alsa \ | |
| --without-png \ | |
| --without-pulse | |
| make -j2 | |
| echo "pdf_path=$(echo $(pwd)/doc/vice.pdf)" >> $GITHUB_OUTPUT | |
| - name: Upload | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: vice-pdf | |
| path: ${{ steps.build.outputs.pdf_path }} | |
| retention-days: 1 | |
| build: | |
| name: Build | |
| needs: [create_release, build_doc] | |
| runs-on: windows-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| arch: | |
| - { msystem: MINGW64, arch: x86_64, prefix: mingw64 } | |
| # - { msystem: MINGW32, arch: i686, prefix: mingw32 } | |
| ui: [ GTK3, SDL2 ] | |
| steps: | |
| - run: git config --global core.autocrlf input | |
| shell: bash | |
| - name: Checkout Source | |
| uses: actions/checkout@v4 | |
| - name: Extract Github Actions Build Script | |
| shell: bash | |
| run: | | |
| mv vice/build/github-actions/build-msys2.sh . | |
| mv vice/build/github-actions/build-shared.sh . | |
| ls -A1 | grep -v 'build-.*\.sh' | xargs rm -rf | |
| - name: Download Documentation | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: vice-pdf | |
| - name: Download Tarball | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: vice-tarball | |
| - name: Unpack Tarball Source | |
| shell: bash | |
| run: | | |
| tar xzvf vice-*.tar.gz | |
| rm vice-*.tar.gz | |
| mv vice-* vice | |
| mv vice.pdf vice/doc/ | |
| mkdir -p vice/build/github-actions/ | |
| mv build-msys2.sh vice/build/github-actions/ | |
| mv build-shared.sh vice/build/github-actions/ | |
| - name: Install GTK3 Dependencies if Applicable | |
| if: ${{ matrix.ui == 'GTK3' }} | |
| uses: msys2/setup-msys2@v2 | |
| with: | |
| msystem: ${{ matrix.arch.msystem }} | |
| update: true | |
| # CAUTION: use same packages as in build-main-on-push.yml | |
| install: >- | |
| autotools | |
| base-devel | |
| git | |
| mingw-w64-${{ matrix.arch.arch }}-curl | |
| mingw-w64-${{ matrix.arch.arch }}-docbook-xml | |
| mingw-w64-${{ matrix.arch.arch }}-docbook-xsl | |
| mingw-w64-${{ matrix.arch.arch }}-flac | |
| mingw-w64-${{ matrix.arch.arch }}-giflib | |
| mingw-w64-${{ matrix.arch.arch }}-glew | |
| mingw-w64-${{ matrix.arch.arch }}-gtk3 | |
| mingw-w64-${{ matrix.arch.arch }}-icoutils | |
| mingw-w64-${{ matrix.arch.arch }}-lame | |
| mingw-w64-${{ matrix.arch.arch }}-libpcap | |
| mingw-w64-${{ matrix.arch.arch }}-libvorbis | |
| mingw-w64-${{ matrix.arch.arch }}-mpg123 | |
| mingw-w64-${{ matrix.arch.arch }}-ntldd | |
| mingw-w64-${{ matrix.arch.arch }}-pkg-config | |
| mingw-w64-${{ matrix.arch.arch }}-portaudio | |
| mingw-w64-${{ matrix.arch.arch }}-toolchain | |
| mingw-w64-${{ matrix.arch.arch }}-xa65 | |
| p7zip | |
| subversion | |
| unzip | |
| xmlto | |
| zip | |
| - name: Install SDL2 Dependencies if Applicable | |
| if: ${{ matrix.ui == 'SDL2' }} | |
| uses: msys2/setup-msys2@v2 | |
| with: | |
| msystem: ${{ matrix.arch.msystem }} | |
| update: true | |
| # CAUTION: use same packages as in build-main-on-push.yml | |
| install: >- | |
| autotools | |
| base-devel | |
| git | |
| mingw-w64-${{ matrix.arch.arch }}-SDL2 | |
| mingw-w64-${{ matrix.arch.arch }}-SDL2_image | |
| mingw-w64-${{ matrix.arch.arch }}-curl | |
| mingw-w64-${{ matrix.arch.arch }}-docbook-xml | |
| mingw-w64-${{ matrix.arch.arch }}-docbook-xsl | |
| mingw-w64-${{ matrix.arch.arch }}-flac | |
| mingw-w64-${{ matrix.arch.arch }}-giflib | |
| mingw-w64-${{ matrix.arch.arch }}-glew | |
| mingw-w64-${{ matrix.arch.arch }}-icoutils | |
| mingw-w64-${{ matrix.arch.arch }}-lame | |
| mingw-w64-${{ matrix.arch.arch }}-libpcap | |
| mingw-w64-${{ matrix.arch.arch }}-libvorbis | |
| mingw-w64-${{ matrix.arch.arch }}-mpg123 | |
| mingw-w64-${{ matrix.arch.arch }}-ntldd | |
| mingw-w64-${{ matrix.arch.arch }}-pkg-config | |
| mingw-w64-${{ matrix.arch.arch }}-portaudio | |
| mingw-w64-${{ matrix.arch.arch }}-toolchain | |
| mingw-w64-${{ matrix.arch.arch }}-xa65 | |
| p7zip | |
| subversion | |
| unzip | |
| xmlto | |
| zip | |
| - name: Build and install libieee1284 | |
| id: build_libieee1284 | |
| shell: msys2 {0} | |
| run: | | |
| OLDDIR=$(pwd) | |
| mkdir ~/work/ | |
| cd ~/work | |
| git clone https://github.com/twaugh/libieee1284 | |
| cd libieee1284 | |
| export XML_CATALOG_FILES="/${{ matrix.arch.prefix }}/etc/xml/catalog" | |
| ./bootstrap | |
| ./configure --without-python | |
| make CFLAGS="-Wno-incompatible-pointer-types" | |
| make install | |
| cd "$OLDDIR" | |
| - name: Build | |
| id: build | |
| shell: msys2 {0} | |
| run: | | |
| MINGW_INSTALLS=${{ matrix.arch.msystem }} ./vice/build/github-actions/build-msys2.sh ${{ matrix.ui }} "release" | |
| echo "zip_path=$(cygpath -w -a vice/*.zip)" >> $GITHUB_OUTPUT | |
| echo "zip_name=$(basename vice/*.zip)" >> $GITHUB_OUTPUT | |
| echo "seven_zip_path=$(cygpath -w -a vice/*.7z)" >> $GITHUB_OUTPUT | |
| echo "seven_zip_name=$(basename vice/*.7z)" >> $GITHUB_OUTPUT | |
| - name: Upload Zip | |
| id: upload-zip | |
| uses: actions/github-script@v7 | |
| env: | |
| UPLOAD_URL: ${{ needs.create_release.outputs.upload_url }} | |
| ASSET_PATH: ${{ steps.build.outputs.zip_path }} | |
| ASSET_NAME: ${{ steps.build.outputs.zip_name }} | |
| ASSET_CONTENT_TYPE: application/zip | |
| with: | |
| github-token: ${{secrets.GITHUB_TOKEN}} | |
| retries: 3 | |
| script: | | |
| const fs = require('fs'); | |
| const { UPLOAD_URL, ASSET_PATH, ASSET_NAME, ASSET_CONTENT_TYPE } = process.env; | |
| const uploadAssetResponse = await github.rest.repos.uploadReleaseAsset({ | |
| url: UPLOAD_URL, | |
| headers: { | |
| 'content-type': ASSET_CONTENT_TYPE, | |
| 'content-length': fs.statSync(ASSET_PATH).size | |
| }, | |
| name: ASSET_NAME, | |
| data: fs.readFileSync(ASSET_PATH) | |
| }); | |
| - name: Upload 7Zip | |
| id: upload-7zip | |
| uses: actions/github-script@v7 | |
| env: | |
| UPLOAD_URL: ${{ needs.create_release.outputs.upload_url }} | |
| ASSET_PATH: ${{ steps.build.outputs.seven_zip_path }} | |
| ASSET_NAME: ${{ steps.build.outputs.seven_zip_name }} | |
| ASSET_CONTENT_TYPE: application/x-7z-compressed | |
| with: | |
| github-token: ${{secrets.GITHUB_TOKEN}} | |
| retries: 3 | |
| script: | | |
| const fs = require('fs'); | |
| const { UPLOAD_URL, ASSET_PATH, ASSET_NAME, ASSET_CONTENT_TYPE } = process.env; | |
| const uploadAssetResponse = await github.rest.repos.uploadReleaseAsset({ | |
| url: UPLOAD_URL, | |
| headers: { | |
| 'content-type': ASSET_CONTENT_TYPE, | |
| 'content-length': fs.statSync(ASSET_PATH).size | |
| }, | |
| name: ASSET_NAME, | |
| data: fs.readFileSync(ASSET_PATH) | |
| }); | |
| build_deb: | |
| name: Build Debian Package | |
| needs: [create_release, build_doc] | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| # CAUTION: use same config/deps as in build-main-on-push.yml | |
| ui: [ { name: 'GTK3', | |
| conf: '--enable-gtk3ui --with-pulse', | |
| deps: 'libevdev-dev libglew-dev libgtk-3-dev libpulse-dev' }, | |
| { name: 'SDL2', | |
| conf: '--enable-sdl2ui --with-sdlsound --without-pulse', | |
| deps: 'libsdl2-dev libsdl2-image-dev' }, | |
| { name: 'SDL1', | |
| conf: '--enable-sdl1ui --with-sdlsound --without-pulse', | |
| deps: 'libsdl1.2-dev libsdl-image1.2-dev' }, | |
| { name: 'Headless', | |
| conf: '--enable-headlessui --with-pulse', | |
| deps: 'libpulse-dev' } ] | |
| steps: | |
| - shell: bash | |
| run: git config --global core.autocrlf input | |
| - name: Checkout Source | |
| uses: actions/checkout@v4 | |
| - name: Download Documentation | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: vice-pdf | |
| path: vice/doc/ | |
| - name: Install Dependencies | |
| shell: bash | |
| # CAUTION: use same packages as in build-main-on-push.yml | |
| run: | | |
| sudo apt update | |
| sudo apt install -y autoconf \ | |
| automake \ | |
| build-essential \ | |
| byacc \ | |
| devscripts \ | |
| dos2unix \ | |
| fakeroot \ | |
| flex \ | |
| libasound-dev \ | |
| libcap-dev \ | |
| libcurl4-openssl-dev \ | |
| libflac-dev \ | |
| libgif-dev \ | |
| libieee1284-3-dev \ | |
| libmp3lame-dev \ | |
| libmpg123-dev \ | |
| libpcap-dev \ | |
| libpng-dev \ | |
| libvorbis-dev \ | |
| portaudio19-dev \ | |
| texinfo \ | |
| texlive-fonts-recommended \ | |
| texlive-latex-extra \ | |
| xa65 | |
| sudo apt install -y ${{ matrix.ui.deps }} | |
| - name: Build | |
| shell: bash | |
| run: | | |
| mkdir -p build/usr | |
| cd vice | |
| ./src/buildtools/genvicedate_h.sh | |
| ./autogen.sh | |
| # ALSA is required for SDL2 as well for midi support | |
| ./configure --enable-option-checking=fatal \ | |
| --prefix=/usr \ | |
| ${{ matrix.ui.conf }} \ | |
| --disable-arch \ | |
| --disable-html-docs \ | |
| --enable-catweasel \ | |
| --enable-cpuhistory \ | |
| --enable-ethernet \ | |
| --enable-midi \ | |
| --enable-parsid \ | |
| --enable-pdf-docs \ | |
| --with-alsa \ | |
| --with-fastsid \ | |
| --with-flac \ | |
| --with-gif \ | |
| --with-lame \ | |
| --with-libcurl \ | |
| --with-libieee1284 \ | |
| --with-mpg123 \ | |
| --with-png \ | |
| --with-portaudio \ | |
| --with-resid \ | |
| --with-vorbis | |
| make -j2 -s --no-print-directory | |
| # Use install-strip, we want stripped binaries for point releases | |
| make DESTDIR=$HOME/build install-strip | |
| - name: Make Deb | |
| id: make_deb | |
| shell: bash | |
| run: ./vice/build/github-actions/build-deb.sh ${{ matrix.ui.name }} release | |
| - name: Upload Deb | |
| id: upload_deb | |
| uses: actions/github-script@v7 | |
| env: | |
| UPLOAD_URL: ${{ needs.create_release.outputs.upload_url }} | |
| ASSET_PATH: ${{ steps.make_deb.outputs.deb_path }} | |
| ASSET_NAME: ${{ steps.make_deb.outputs.deb_name }} | |
| ASSET_CONTENT_TYPE: application/vnd.debian.binary-package | |
| with: | |
| github-token: ${{secrets.GITHUB_TOKEN}} | |
| retries: 3 | |
| script: | | |
| const fs = require('fs'); | |
| const { UPLOAD_URL, ASSET_PATH, ASSET_NAME, ASSET_CONTENT_TYPE } = process.env; | |
| const uploadAssetResponse = await github.rest.repos.uploadReleaseAsset({ | |
| url: UPLOAD_URL, | |
| headers: { | |
| 'content-type': ASSET_CONTENT_TYPE, | |
| 'content-length': fs.statSync(ASSET_PATH).size | |
| }, | |
| name: ASSET_NAME, | |
| data: fs.readFileSync(ASSET_PATH) | |
| }); | |
| publish_release: | |
| name: Publish Release | |
| needs: [create_release, build] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/github-script@v7 | |
| with: | |
| github-token: ${{secrets.GITHUB_TOKEN}} | |
| retries: 3 | |
| script: | | |
| await github.rest.repos.updateRelease( | |
| { | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| release_id: ${{ needs.create_release.outputs.release_id }}, | |
| draft: false | |
| }); |