diff options
author | Alexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com> | 2022-12-04 17:37:33 +0300 |
---|---|---|
committer | Alexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com> | 2022-12-04 17:37:33 +0300 |
commit | 7a4bf75be6b71fe73d5675c77230a392656ef437 (patch) | |
tree | d71aca74fd96d9eec3505b9e4093f793b9827bff | |
parent | 1b9b24a52ba3e41ddbe661d5c84e9508716bb55b (diff) |
Pipeline
-rw-r--r-- | .github/workflows/build.yaml | 6 | ||||
-rw-r--r-- | .github/workflows/release.yaml | 309 |
2 files changed, 312 insertions, 3 deletions
diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 03b0449..bc57c39 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -32,7 +32,7 @@ jobs: - name: Copy main files run: >- mkdir -p ${{ env.OUTPUT_DIR }} && - cp -fR *.asm Makefile LICENSE README.md configs spec demos games images footer.* output + cp -fR *.asm Makefile LICENSE README.md configs spec demos games images footer.* ${{ env.OUTPUT_DIR }} - name: Build CoolgirlCombiner for Linux-x64 env: SC_OPS: ${{ matrix.sc == 'self-contained' && '--self-contained true' || '--no-self-contained' }} @@ -120,7 +120,7 @@ jobs: - name: Copy main files run: >- mkdir -p ${{ env.OUTPUT_DIR }} && - cp -fR *.asm Makefile LICENSE README.md configs spec demos games images footer.* output + cp -fR *.asm Makefile LICENSE README.md configs spec demos games images footer.* ${{ env.OUTPUT_DIR }} - name: Build CoolgirlCombiner for MacOS-x64 env: SC_OPS: ${{ matrix.sc == 'self-contained' && '--self-contained true' || '--no-self-contained' }} @@ -174,7 +174,7 @@ jobs: shell: msys2 {0} run: >- mkdir -p ${{ env.OUTPUT_DIR }} && - cp -fR *.asm Makefile LICENSE README.md configs spec demos games images footer.* *.bat output + cp -fR *.asm Makefile LICENSE README.md configs spec demos games images footer.* *.bat ${{ env.OUTPUT_DIR }} - name: Build CoolgirlCombiner for Win-x64 env: SC_OPS: ${{ matrix.sc == 'self-contained' && '--self-contained true' || '--no-self-contained' }} diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 0000000..3d7a077 --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,309 @@ +name: Release + +on: + workflow_dispatch: + +jobs: + create-release: + runs-on: ubuntu-latest + steps: + - name: Create Release + id: create_release + uses: ncipollo/release-action@v1 + with: + token: ${{ secrets.GITHUB_TOKEN }} + tag: ${{ github.event.repository.updated_at }} + commit: ${{ github.head_ref || github.ref_name }} + name: Release ${{ github.event.repository.updated_at }} + draft: true + - name: Output Release URL File + run: echo "${{ steps.create_release.outputs.upload_url }}" > release_url.txt + - name: Save Release URL File for publish + uses: actions/upload-artifact@v3 + with: + name: release_url + path: release_url.txt + + build-linux: + needs: create-release + strategy: + matrix: + sc: [no-self-contained, self-contained] + runs-on: ubuntu-latest + env: + APP_NAME: coolgirl-multirom-builder + OUTPUT_DIR: coolgirl-multirom-builder + TOOLS_DIR: coolgirl-multirom-builder/tools + OUTPUT_FILE_X64: coolgirl-multirom-builder-linux-x64${{ matrix.sc == 'self-contained' && '-self-contained' || '' }}.tar.gz + OUTPUT_FILE_ARM32: coolgirl-multirom-builder-linux-arm32${{ matrix.sc == 'self-contained' && '-self-contained' || '' }}.tar.gz + OUTPUT_FILE_ARM64: coolgirl-multirom-builder-linux-arm64${{ matrix.sc == 'self-contained' && '-self-contained' || '' }}.tar.gz + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + submodules: true + - name: Setup .NET + uses: actions/setup-dotnet@v2 + with: + dotnet-version: 6.0.x + - name: Get ARM toolchain + run: sudo apt-get install gcc-arm-linux-gnueabihf gcc-aarch64-linux-gnu + - name: Copy main files + run: >- + mkdir -p ${{ env.OUTPUT_DIR }} && + cp -fR *.asm Makefile LICENSE README.md configs spec demos games images footer.* ${{ env.OUTPUT_DIR }} + - name: Load Release URL File from release job + uses: actions/download-artifact@v1 + with: + name: release_url + - name: Get Release File Name & Upload URL + id: get_release_info + env: + TAG_REF_NAME: ${{ github.event.repository.updated_at }} + REPOSITORY_NAME: ${{ github.repository }} + run: | + value=`cat release_url/release_url.txt` + echo upload_url=$value >> $GITHUB_OUTPUT + - name: Build CoolgirlCombiner for Linux-x64 + env: + SC_OPS: ${{ matrix.sc == 'self-contained' && '--self-contained true' || '--no-self-contained' }} + run: dotnet publish tools_sources/CoolgirlCombiner -c Release -r linux-x64 -o ${{ env.TOOLS_DIR }} ${{ env.SC_OPS }} + - name: Build NesTiler for Linux-x64 + env: + SC_OPS: ${{ matrix.sc == 'self-contained' && '--self-contained true' || '--no-self-contained' }} + run: dotnet publish tools_sources/NesTiler/NesTiler -c Release -r linux-x64 -o ${{ env.TOOLS_DIR }} ${{ env.SC_OPS }} + - name: Build nesasm for Linux-x64 + run: make -C tools_sources/nesasm/source EXEDIR=../../../${{ env.TOOLS_DIR }} + - name: Remove unnecessary files + run: rm -f ${{ env.TOOLS_DIR }}/*.md + - name: Test build + run: make -C ${{ env.OUTPUT_DIR }} all + - name: Clean + run: make -C ${{ env.OUTPUT_DIR }} clean + - name: Archive + env: + CMD: tar -czvf + run: | + ${{ env.CMD }} ${{ env.OUTPUT_FILE_X64 }} ${{ env.OUTPUT_DIR }} + - name: Upload + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.get_release_info.outputs.upload_url }} + asset_path: ${{ env.OUTPUT_FILE_X64 }} + asset_name: ${{ env.OUTPUT_FILE_X64 }} + asset_content_type: tar.gz + - name: Clean + run: >- + rm -f ${{ env.TOOLS_DIR }}/* && + make -C tools_sources/nesasm/source clean + - name: Build CoolgirlCombiner for Linux-ARM32 + env: + SC_OPS: ${{ matrix.sc == 'self-contained' && '--self-contained true' || '--no-self-contained' }} + run: dotnet publish tools_sources/CoolgirlCombiner -c Release -r linux-arm -o ${{ env.TOOLS_DIR }} ${{ env.SC_OPS }} + - name: Build NesTiler for Linux-ARM32 + env: + SC_OPS: ${{ matrix.sc == 'self-contained' && '--self-contained true' || '--no-self-contained' }} + run: dotnet publish tools_sources/NesTiler/NesTiler -c Release -r linux-arm -o ${{ env.TOOLS_DIR }} ${{ env.SC_OPS }} + - name: Build nesasm for Linux-ARM32 + run: make -C tools_sources/nesasm/source EXEDIR=../../../${{ env.TOOLS_DIR }} CC=arm-linux-gnueabihf-gcc + - name: Remove unnecessary files + run: rm -f ${{ env.TOOLS_DIR }}/*.md + - name: Archive + env: + CMD: tar -czvf + run: | + ${{ env.CMD }} ${{ env.OUTPUT_FILE_ARM32 }} ${{ env.OUTPUT_DIR }} + - name: Upload + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.get_release_info.outputs.upload_url }} + asset_path: ${{ env.OUTPUT_FILE_ARM32 }} + asset_name: ${{ env.OUTPUT_FILE_ARM32 }} + asset_content_type: tar.gz + - name: Clean + run: >- + rm -f ${{ env.TOOLS_DIR }}/* && + make -C tools_sources/nesasm/source clean + - name: Build CoolgirlCombiner for Linux-ARM64 + env: + SC_OPS: ${{ matrix.sc == 'self-contained' && '--self-contained true' || '--no-self-contained' }} + run: dotnet publish tools_sources/CoolgirlCombiner -c Release -r linux-arm64 -o ${{ env.TOOLS_DIR }} ${{ env.SC_OPS }} + - name: Build NesTiler for Linux-ARM64 + env: + SC_OPS: ${{ matrix.sc == 'self-contained' && '--self-contained true' || '--no-self-contained' }} + run: dotnet publish tools_sources/NesTiler/NesTiler -c Release -r linux-arm64 -o ${{ env.TOOLS_DIR }} ${{ env.SC_OPS }} + - name: Build nesasm for Linux-ARM64 + run: make -C tools_sources/nesasm/source EXEDIR=../../../${{ env.TOOLS_DIR }} CC=aarch64-linux-gnu-gcc + - name: Remove unnecessary files + run: rm -f ${{ env.TOOLS_DIR }}/*.md + - name: Archive + env: + CMD: tar -czvf + run: | + ${{ env.CMD }} ${{ env.OUTPUT_FILE_ARM64 }} ${{ env.OUTPUT_DIR }} + - name: Upload + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.get_release_info.outputs.upload_url }} + asset_path: ${{ env.OUTPUT_FILE_ARM64 }} + asset_name: ${{ env.OUTPUT_FILE_ARM64 }} + asset_content_type: tar.gz + + build-macos: + needs: create-release + strategy: + matrix: + sc: [no-self-contained, self-contained] + runs-on: macos-latest + env: + APP_NAME: coolgirl-multirom-builder + OUTPUT_DIR: coolgirl-multirom-builder + TOOLS_DIR: coolgirl-multirom-builder/tools + OUTPUT_FILE: coolgirl-multirom-builder-osx-x64${{ matrix.sc == 'self-contained' && '-self-contained' || '' }}.tar.gz + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + submodules: true + - name: Setup .NET + uses: actions/setup-dotnet@v2 + with: + dotnet-version: 6.0.x + - name: Setup argp + run: brew install argp-standalone + - name: Copy main files + run: >- + mkdir -p ${{ env.OUTPUT_DIR }} && + cp -fR *.asm Makefile LICENSE README.md configs spec demos games images footer.* ${{ env.OUTPUT_DIR }} + - name: Build CoolgirlCombiner for MacOS-x64 + env: + SC_OPS: ${{ matrix.sc == 'self-contained' && '--self-contained true' || '--no-self-contained' }} + run: dotnet publish tools_sources/CoolgirlCombiner -c Release -r osx-x64 -o ${{ env.TOOLS_DIR }} ${{ env.SC_OPS }} + - name: Build NesTiler for MacOS-x64 + env: + SC_OPS: ${{ matrix.sc == 'self-contained' && '--self-contained true' || '--no-self-contained' }} + run: dotnet publish tools_sources/NesTiler/NesTiler -c Release -r osx-x64 -o ${{ env.TOOLS_DIR }} ${{ env.SC_OPS }} + - name: Build nesasm for MacOS-x64 + run: make -C tools_sources/nesasm/source EXEDIR=../../../${{ env.TOOLS_DIR }} + - name: Remove unnecessary files + run: rm -f ${{ env.TOOLS_DIR }}/*.md + - name: Test build + run: make -C ${{ env.OUTPUT_DIR }} all + - name: Clean + run: make -C ${{ env.OUTPUT_DIR }} clean + - name: Archive + env: + CMD: tar -czvf + run: | + ${{ env.CMD }} ${{ env.OUTPUT_FILE }} ${{ env.OUTPUT_DIR }} + - name: Load Release URL File from release job + uses: actions/download-artifact@v1 + with: + name: release_url + - name: Get Release File Name & Upload URL + id: get_release_info + env: + TAG_REF_NAME: ${{ github.event.repository.updated_at }} + REPOSITORY_NAME: ${{ github.repository }} + run: | + value=`cat release_url/release_url.txt` + echo upload_url=$value >> $GITHUB_OUTPUT + - name: Upload + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.get_release_info.outputs.upload_url }} + asset_path: ${{ env.OUTPUT_FILE }} + asset_name: ${{ env.OUTPUT_FILE }} + asset_content_type: tar.gz + + build-windows: + needs: create-release + strategy: + matrix: + sc: [no-self-contained, self-contained] + runs-on: windows-latest + env: + APP_NAME: coolgirl-multirom-builder + OUTPUT_DIR: coolgirl-multirom-builder + TOOLS_DIR: coolgirl-multirom-builder/tools + OUTPUT_FILE: coolgirl-multirom-builder-win-x64${{ matrix.sc == 'self-contained' && '-self-contained' || '' }}.zip + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + submodules: true + - name: Setup .NET + uses: actions/setup-dotnet@v2 + with: + dotnet-version: 6.0.x + - name: Setup msys + uses: msys2/setup-msys2@v2 + with: + update: true + install: >- + base-devel + gcc + git + libargp-devel + zip + - name: Copy main files + shell: msys2 {0} + run: >- + mkdir -p ${{ env.OUTPUT_DIR }} && + cp -fR *.asm Makefile LICENSE README.md configs spec demos games images footer.* *.bat ${{ env.OUTPUT_DIR }} + - name: Build CoolgirlCombiner for Win-x64 + env: + SC_OPS: ${{ matrix.sc == 'self-contained' && '--self-contained true' || '--no-self-contained' }} + run: dotnet publish tools_sources/CoolgirlCombiner -c Release -r win-x64 -o ${{ env.TOOLS_DIR }} ${{ env.SC_OPS }} + - name: Build NesTiler for Win-x64 + env: + SC_OPS: ${{ matrix.sc == 'self-contained' && '--self-contained true' || '--no-self-contained' }} + run: dotnet publish tools_sources/NesTiler/NesTiler -c Release -r win-x64 -o ${{ env.TOOLS_DIR }} ${{ env.SC_OPS }} + - name: Remove unnecessary files + shell: msys2 {0} + run: rm -f ${{ env.TOOLS_DIR }}/*.md + - name: Build nesasm for Win-x64 + shell: msys2 {0} + run: make -C tools_sources/nesasm/source EXEDIR=../../../${{ env.TOOLS_DIR }} + - name: Test build + shell: msys2 {0} + run: make -C ${{ env.OUTPUT_DIR }} all + - name: Clean + shell: msys2 {0} + run: make -C ${{ env.OUTPUT_DIR }} clean + - name: Archive + env: + CMD: zip -r9 + shell: msys2 {0} + run: | + ${{ env.CMD }} ${{ env.OUTPUT_FILE }} ${{ env.OUTPUT_DIR }} + - name: Load Release URL File from release job + uses: actions/download-artifact@v1 + with: + name: release_url + - name: Get Release File Name & Upload URL + id: get_release_info + env: + TAG_REF_NAME: ${{ github.event.repository.updated_at }} + REPOSITORY_NAME: ${{ github.repository }} + shell: msys2 {0} + run: | + value=`cat release_url/release_url.txt` + echo upload_url=$value >> $GITHUB_OUTPUT + - name: Upload + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.get_release_info.outputs.upload_url }} + asset_path: ${{ env.OUTPUT_FILE }} + asset_name: ${{ env.OUTPUT_FILE }} + asset_content_type: zip |