raise an error if the file does not exist when uploading an artifact #1
Workflow file for this run
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: Build Release | |
| on: | |
| push: | |
| tags: | |
| - "v*.*.*" | |
| jobs: | |
| build-linux-docker: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| image-tag: ${{ steps.meta.outputs.version }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Docker meta | |
| id: meta | |
| uses: docker/metadata-action@v5 | |
| with: | |
| images: | | |
| ${{ secrets.DOCKER_USERNAME }}/ezbookkeeping | |
| tags: | | |
| type=semver,pattern={{version}} | |
| type=semver,pattern={{major}}.{{minor}} | |
| type=raw,value=latest | |
| - name: Set up QEMU | |
| uses: docker/setup-qemu-action@v3 | |
| with: | |
| image: tonistiigi/binfmt:qemu-v8.1.5 | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Login to DockerHub | |
| uses: docker/login-action@v3 | |
| with: | |
| username: ${{ secrets.DOCKER_USERNAME }} | |
| password: ${{ secrets.DOCKER_PASSWORD }} | |
| - name: Build and push | |
| uses: docker/build-push-action@v6 | |
| with: | |
| file: Dockerfile | |
| context: . | |
| platforms: | | |
| linux/amd64 | |
| linux/arm64/v8 | |
| linux/arm/v7 | |
| linux/arm/v6 | |
| push: true | |
| build-args: | | |
| RELEASE_BUILD=1 | |
| BUILD_PIPELINE=1 | |
| CHECK_3RD_API=${{ vars.CHECK_3RD_API }} | |
| SKIP_TESTS=${{ vars.SKIP_TESTS }} | |
| tags: ${{ steps.meta.outputs.tags }} | |
| labels: ${{ steps.meta.outputs.labels }} | |
| upload-linux-artifact: | |
| needs: build-linux-docker | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| include: | |
| - arch: linux/amd64 | |
| arch_alias: linux-amd64 | |
| - arch: linux/arm64/v8 | |
| arch_alias: linux-arm64 | |
| - arch: linux/arm/v7 | |
| arch_alias: linux-armv7 | |
| - arch: linux/arm/v6 | |
| arch_alias: linux-armv6 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Login to DockerHub | |
| uses: docker/login-action@v3 | |
| with: | |
| username: ${{ secrets.DOCKER_USERNAME }} | |
| password: ${{ secrets.DOCKER_PASSWORD }} | |
| - name: Pull and save packaged files for ${{ matrix.arch }} | |
| run: | | |
| VERSION=${{ needs.build-linux-docker.outputs.image-tag }} | |
| IMAGE=${{ secrets.DOCKER_USERNAME }}/ezbookkeeping:${VERSION} | |
| docker pull --platform ${{ matrix.arch }} ${IMAGE} | |
| cid=$(docker create "${IMAGE}") | |
| docker cp ${cid}:/ezbookkeeping ./ezbookkeeping | |
| docker rm ${cid} | |
| cd ezbookkeeping | |
| tar -czf ../ezbookkeeping-v${VERSION}-${{ matrix.arch_alias }}.tar.gz * | |
| cd .. | |
| rm -rf ezbookkeeping | |
| - name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ezbookkeeping-${{ github.ref_name }}-${{ matrix.arch_alias }} | |
| path: ezbookkeeping-${{ github.ref_name }}-${{ matrix.arch_alias }}.tar.gz | |
| if-no-files-found: error | |
| build-and-upload-windows-package: | |
| needs: upload-linux-artifact | |
| runs-on: windows-latest | |
| env: | |
| GO_VERSION: "1.25.1" | |
| MINGW_VERSION: "14.2.0" | |
| MINGW_REVISION: "v12-rev2" | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Download linux-amd64 packaged files | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: ezbookkeeping-${{ github.ref_name }}-linux-amd64 | |
| path: artifacts | |
| - name: Extract frontend files from linux-amd64 package | |
| run: | | |
| New-Item -ItemType Directory -Path package | |
| tar -xzf (Get-ChildItem artifacts\ezbookkeeping-${{ github.ref_name }}-linux-amd64.tar.gz) -C package | |
| - name: Set up Go | |
| uses: actions/setup-go@v6 | |
| with: | |
| go-version: ${{ env.GO_VERSION }} | |
| - name: Install MinGW | |
| run: | | |
| $mingwVersion = "${{ env.MINGW_VERSION }}" | |
| $mingwRevision = "${{ env.MINGW_REVISION }}" | |
| $url = "https://github.com/niXman/mingw-builds-binaries/releases/download/${mingwVersion}-rt_${mingwRevision}/x86_64-${mingwVersion}-release-posix-seh-ucrt-rt_${mingwRevision}.7z" | |
| $archive = "C:\mingw.7z" | |
| $mingwDir = "C:\mingw64" | |
| Write-Host "Downloading MinGW from ${url}" | |
| Invoke-WebRequest -Uri ${url} -OutFile ${archive} | |
| Remove-Item -Recurse -Force ${mingwDir} | |
| New-Item -ItemType Directory -Path ${mingwDir} | |
| Write-Host "Extracting MinGW to ${mingwDir}" | |
| 7z x ${archive} -oC:\ | |
| "${mingwDir}\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | |
| - name: Build backend for windows-x64 | |
| env: | |
| RELEASE_BUILD: "1" | |
| BUILD_PIPELINE: "1" | |
| CHECK_3RD_API: ${{ vars.CHECK_3RD_API }} | |
| SKIP_TESTS: ${{ vars.SKIP_TESTS }} | |
| run: | | |
| .\build.ps1 backend | |
| - name: Package Windows build | |
| run: | | |
| New-Item -ItemType Directory -Path "ezbookkeeping" | |
| New-Item -ItemType Directory -Path "ezbookkeeping\data" | |
| New-Item -ItemType Directory -Path "ezbookkeeping\storage" | |
| New-Item -ItemType Directory -Path "ezbookkeeping\log" | |
| Copy-Item ezbookkeeping.exe -Destination ezbookkeeping\ | |
| Copy-Item -Recurse -Force package\public -Destination ezbookkeeping\public | |
| Copy-Item -Recurse -Force conf -Destination ezbookkeeping\conf | |
| Copy-Item -Recurse -Force templates -Destination ezbookkeeping\templates | |
| Copy-Item .\LICENSE -Destination ezbookkeeping\ | |
| Push-Location ezbookkeeping | |
| 7z a -r -tzip -mx9 ..\ezbookkeeping-${{ github.ref_name }}-windows-x64.zip * | |
| Pop-Location | |
| Remove-Item -Recurse -Force ezbookkeeping | |
| - name: Upload Windows artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ezbookkeeping-${{ github.ref_name }}-windows-x64 | |
| path: ezbookkeeping-${{ github.ref_name }}-windows-x64.zip | |
| if-no-files-found: error | |
| publish-release: | |
| runs-on: ubuntu-latest | |
| needs: | |
| - upload-linux-artifact | |
| - build-and-upload-windows-package | |
| steps: | |
| - name: Download linux-amd64 packaged files | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: ezbookkeeping-${{ github.ref_name }}-linux-amd64 | |
| path: ./release-files | |
| - name: Download linux-arm64 packaged files | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: ezbookkeeping-${{ github.ref_name }}-linux-arm64 | |
| path: ./release-files | |
| - name: Download linux-armv6 packaged files | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: ezbookkeeping-${{ github.ref_name }}-linux-armv6 | |
| path: ./release-files | |
| - name: Download linux-armv7 packaged files | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: ezbookkeeping-${{ github.ref_name }}-linux-armv7 | |
| path: ./release-files | |
| - name: Download windows-x64 packaged files | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: ezbookkeeping-${{ github.ref_name }}-windows-x64 | |
| path: ./release-files | |
| - name: Publish Release ${{ github.ref_name }} | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| name: ${{ github.ref_name }} | |
| tag_name: ${{ github.ref_name }} | |
| files: ./release-files/* | |
| draft: true |