From 795314d803bcaedd7de196649bf595e4976b0a09 Mon Sep 17 00:00:00 2001 From: Daniel Thamdrup Date: Thu, 8 Feb 2024 07:34:15 +0100 Subject: [PATCH] CircleCI to GHA (#6947) --- .circleci/config.yml | 59 --------------------- .github/workflows/3ds.yml | 90 ++++++++++++++++++++++++++++++++ .github/workflows/amiga-m68k.yml | 64 +++++++++++++++++++++++ .github/workflows/switch.yml | 65 +++++++++++++++++++++++ .github/workflows/vita.yml | 67 ++++++++++++++++++++++++ 5 files changed, 286 insertions(+), 59 deletions(-) delete mode 100644 .circleci/config.yml create mode 100644 .github/workflows/3ds.yml create mode 100644 .github/workflows/amiga-m68k.yml create mode 100644 .github/workflows/switch.yml create mode 100644 .github/workflows/vita.yml diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index 7fd42ef8981..00000000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,59 +0,0 @@ -version: 2 -jobs: - switch: - docker: - - image: devkitpro/devkita64:latest - working_directory: ~/repo - steps: - - checkout - - run: apt-get update -y - - run: apt-get install -y gettext - - run: /opt/devkitpro/portlibs/switch/bin/aarch64-none-elf-cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=RelWithDebInfo - - run: cmake --build build -j 2 - - store_artifacts: {path: ./build/devilutionx.nro, destination: devilutionx.nro} - 3ds: - docker: - - image: devkitpro/devkitarm:latest - working_directory: ~/repo - steps: - - checkout - - run: apt-get update -y - - run: apt-get install -y ffmpeg gettext - - run: wget https://github.com/diasurgical/bannertool/releases/download/1.2.0/bannertool.zip - - run: unzip -j "bannertool.zip" "linux-x86_64/bannertool" -d "/opt/devkitpro/tools/bin" - - run: wget https://github.com/3DSGuy/Project_CTR/releases/download/makerom-v0.18/makerom-v0.18-ubuntu_x86_64.zip - - run: unzip "makerom-v0.18-ubuntu_x86_64.zip" "makerom" -d "/opt/devkitpro/tools/bin" - - run: sudo chmod +rx /opt/devkitpro/tools/bin/makerom - - run: cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/3DS.cmake - - run: cmake --build build -j 2 - - store_artifacts: {path: ./build/devilutionx.3dsx, destination: devilutionx.3dsx} - - store_artifacts: {path: ./build/devilutionx.cia, destination: devilutionx.cia} - amigaos-m68k: - docker: - - image: amigadev/crosstools:m68k-amigaos-gcc10 - working_directory: ~/repo - steps: - - checkout - - run: Packaging/amiga/prep.sh - - run: cmake -S. -Bbuild -DM68K_CPU=68040 -DM68K_FPU=hard -DM68K_COMMON="-s -fbbb=- -ffast-math -O2" - - run: cd build && make -j2 - - store_artifacts: {path: ./build/devilutionx, destination: devilutionx_m68k} - vita: - docker: - - image: vitasdk/vitasdk - working_directory: ~/repo - steps: - - checkout - - run: apk --no-cache add git cmake ninja bash pkgconfig gettext - - run: cmake -S. -Bbuild -GNinja -DCMAKE_TOOLCHAIN_FILE=${VITASDK}/share/vita.toolchain.cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo - - run: cmake --build build -j 2 - - store_artifacts: {path: ./build/devilutionx.vpk, destination: devilutionx.vpk} - -workflows: - version: 2 - testflow: - jobs: - - switch - - 3ds - - amigaos-m68k - - vita diff --git a/.github/workflows/3ds.yml b/.github/workflows/3ds.yml new file mode 100644 index 00000000000..8cdcfefa230 --- /dev/null +++ b/.github/workflows/3ds.yml @@ -0,0 +1,90 @@ +--- +name: Nintendo 3DS + +on: # yamllint disable-line rule:truthy + push: + branches: + - master + paths-ignore: + - '*.md' + - 'docs/**' + pull_request: + types: [opened, synchronize] + paths-ignore: + - '*.md' + - 'docs/**' + release: + types: [published] + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + runs-on: ubuntu-latest + container: devkitpro/devkitarm:latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Install dependencies + run: | + apt-get update + apt-get install -y \ + ffmpeg \ + gettext + + - name: Get external dependencies + run: | + wget https://github.com/diasurgical/bannertool/releases/download/1.2.0/bannertool.zip + unzip -j "bannertool.zip" "linux-x86_64/bannertool" -d "/opt/devkitpro/tools/bin" + wget https://github.com/3DSGuy/Project_CTR/releases/download/makerom-v0.18/makerom-v0.18-ubuntu_x86_64.zip + unzip "makerom-v0.18-ubuntu_x86_64.zip" "makerom" -d "/opt/devkitpro/tools/bin" + chmod a+x /opt/devkitpro/tools/bin/makerom + + - name: Configure CMake + run: | + cmake \ + -S . \ + -B build \ + -G Ninja \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/3DS.cmake + + - name: Build DevilutionX + run: cmake --build build + + - name: Upload 3dsx Package + if: ${{ !env.ACT }} + uses: actions/upload-artifact@v4 + with: + name: devilutionx.3dsx + path: ./build/devilutionx.3dsx + + - name: Upload cia Package + if: ${{ !env.ACT }} + uses: actions/upload-artifact@v4 + with: + name: devilutionx.cia + path: ./build/devilutionx.cia + + - name: Update Release 3dsx + if: ${{ github.event_name == 'release' && !env.ACT }} + uses: svenstaro/upload-release-action@v2 + with: + asset_name: devilutionx-3ds.3dsx + file: ./build/devilutionx.3dsx + overwrite: true + + - name: Update Release cia + if: ${{ github.event_name == 'release' && !env.ACT }} + uses: svenstaro/upload-release-action@v2 + with: + asset_name: devilutionx-3ds.cia + file: ./build/devilutionx.cia + overwrite: true +... diff --git a/.github/workflows/amiga-m68k.yml b/.github/workflows/amiga-m68k.yml new file mode 100644 index 00000000000..98157176987 --- /dev/null +++ b/.github/workflows/amiga-m68k.yml @@ -0,0 +1,64 @@ +--- +name: Amiga M68K + +on: # yamllint disable-line rule:truthy + push: + branches: + - master + paths-ignore: + - '*.md' + - 'docs/**' + pull_request: + types: [opened, synchronize] + paths-ignore: + - '*.md' + - 'docs/**' + release: + types: [published] + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + runs-on: ubuntu-latest + container: amigadev/crosstools:m68k-amigaos-gcc10 + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Run prep.sh script + run: ./Packaging/amiga/prep.sh + + - name: Configure CMake + run: | + cmake \ + -S . \ + -B build \ + -G Ninja \ + -D M68K_COMMON="-s -fbbb=- -ffast-math -O2" \ + -D M68K_CPU=68040 \ + -D M68K_FPU=hard + + - name: Build DevilutionX + run: cmake --build build + + - name: Upload Package + if: ${{ !env.ACT }} + uses: actions/upload-artifact@v4 + with: + name: devilutionx_m68k + path: ./build/devilutionx + + - name: Update Release + if: ${{ github.event_name == 'release' && !env.ACT }} + uses: svenstaro/upload-release-action@v2 + with: + asset_name: devilutionx-amiga-m68k + file: ./build/devilutionx + overwrite: true +... diff --git a/.github/workflows/switch.yml b/.github/workflows/switch.yml new file mode 100644 index 00000000000..c2293300c7d --- /dev/null +++ b/.github/workflows/switch.yml @@ -0,0 +1,65 @@ +--- +name: Nintendo Switch + +on: # yamllint disable-line rule:truthy + push: + branches: + - master + paths-ignore: + - '*.md' + - 'docs/**' + pull_request: + types: [opened, synchronize] + paths-ignore: + - '*.md' + - 'docs/**' + release: + types: [published] + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + runs-on: ubuntu-latest + container: devkitpro/devkita64:latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Install dependencies + run: | + apt-get update && \ + apt-get install -y --no-install-recommends --no-install-suggests \ + gettext + + - name: Configure CMake + run: | + cmake \ + -S . \ + -B build \ + -D CMAKE_BUILD_TYPE=RelWithDebInfo \ + -D CMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/Switch.cmake + + - name: Build DevilutionX + run: cmake --build build -j$(nproc) + + - name: Upload Package + if: ${{ !env.ACT }} + uses: actions/upload-artifact@v4 + with: + name: devilutionx.nro + path: ./build/devilutionx.nro + + - name: Update Release + if: ${{ github.event_name == 'release' && !env.ACT }} + uses: svenstaro/upload-release-action@v2 + with: + asset_name: devilutionx-switch.nro + file: ./build/devilutionx.nro + overwrite: true +... diff --git a/.github/workflows/vita.yml b/.github/workflows/vita.yml new file mode 100644 index 00000000000..33d0e9a43c6 --- /dev/null +++ b/.github/workflows/vita.yml @@ -0,0 +1,67 @@ +--- +name: Sony PlayStation Vita + +on: # yamllint disable-line rule:truthy + push: + branches: + - master + paths-ignore: + - '*.md' + - 'docs/**' + pull_request: + types: [opened, synchronize] + paths-ignore: + - '*.md' + - 'docs/**' + release: + types: [published] + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + runs-on: ubuntu-latest + container: vitasdk/vitasdk:latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Install dependencies + run: | + apk add \ + gettext \ + git \ + samurai + + - name: Configure CMake + run: | + cmake \ + -S . \ + -B build \ + -G Ninja \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DCMAKE_TOOLCHAIN_FILE=${VITASDK}/share/vita.toolchain.cmake + + - name: Build DevilutionX + run: cmake --build build + + - name: Upload Package + if: ${{ !env.ACT }} + uses: actions/upload-artifact@v4 + with: + name: devilutionx.vpk + path: ./build/devilutionx.vpk + + - name: Update Release + if: ${{ github.event_name == 'release' && !env.ACT }} + uses: svenstaro/upload-release-action@v2 + with: + asset_name: devilutionx-vita.vpk + file: ./build/devilutionx.vpk + overwrite: true +...