From 6996d41e24d66d990ded3ecf95770e812deb4351 Mon Sep 17 00:00:00 2001 From: Peter Csajtai Date: Tue, 7 Jul 2026 13:50:00 +0200 Subject: [PATCH] Fix snap build --- .github/workflows/ci.yml | 308 ++++++++++---------- .github/workflows/publish.yml | 510 +++++++++++++++++----------------- 2 files changed, 421 insertions(+), 397 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f94e813..eee38bc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,58 +2,68 @@ name: ConfigCat CLI CI on: schedule: - - cron: '0 8 * * 1' + - cron: "0 8 * * 1" push: - branches: [ '*' ] + branches: ["*"] paths-ignore: - - '**.md' - - '**.gif' + - "**.md" + - "**.gif" pull_request: - branches: [ main ] + branches: [main] paths-ignore: - - '**.md' - - '**.gif' + - "**.md" + - "**.gif" workflow_dispatch: - + jobs: unit-tests: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v7 - - name: Setup dotnet - uses: actions/setup-dotnet@v5 - with: - dotnet-version: '8.0.x' - - name: Unit tests - run: dotnet test test/ConfigCat.Cli.Tests/ConfigCat.Cli.Tests.csproj -c Release + - uses: actions/checkout@v7 + - name: Setup dotnet + uses: actions/setup-dotnet@v5 + with: + dotnet-version: "8.0.x" + - name: Unit tests + run: dotnet test test/ConfigCat.Cli.Tests/ConfigCat.Cli.Tests.csproj -c Release produce-executables: runs-on: ubuntu-latest needs: unit-tests strategy: matrix: - arch: [win-x64, win-x86, win-arm64, linux-x64, linux-musl-x64, linux-musl-arm64, linux-arm, linux-arm64] + arch: + [ + win-x64, + win-x86, + win-arm64, + linux-x64, + linux-musl-x64, + linux-musl-arm64, + linux-arm, + linux-arm64, + ] steps: - - uses: actions/checkout@v7 - - name: Setup dotnet - uses: actions/setup-dotnet@v5 - with: - dotnet-version: '8.0.x' - - - name: Publish ${{ matrix.arch }} - run: | - dotnet publish src/ConfigCat.Cli/ConfigCat.Cli.csproj -c Release -r ${{ matrix.arch }} --self-contained true -p:PublishSingleFile=true -o publish/${{ matrix.arch }} - cp LICENSE publish/${{ matrix.arch }}/LICENSE - cp README.md publish/${{ matrix.arch }}/README.md - - - name: Archive executables - uses: actions/upload-artifact@v7 - with: - name: executables-${{ strategy.job-index }} - path: publish + - uses: actions/checkout@v7 + - name: Setup dotnet + uses: actions/setup-dotnet@v5 + with: + dotnet-version: "8.0.x" + + - name: Publish ${{ matrix.arch }} + run: | + dotnet publish src/ConfigCat.Cli/ConfigCat.Cli.csproj -c Release -r ${{ matrix.arch }} --self-contained true -p:PublishSingleFile=true -o publish/${{ matrix.arch }} + cp LICENSE publish/${{ matrix.arch }}/LICENSE + cp README.md publish/${{ matrix.arch }}/README.md + + - name: Archive executables + uses: actions/upload-artifact@v7 + with: + name: executables-${{ strategy.job-index }} + path: publish produce-osx-executable: runs-on: macos-latest @@ -63,144 +73,146 @@ jobs: arch: [osx-x64, osx-arm64] steps: - - uses: actions/checkout@v7 - - name: Setup dotnet - uses: actions/setup-dotnet@v5 - with: - dotnet-version: '8.0.x' - - - name: Publish ${{ matrix.arch }} - run: | - dotnet publish src/ConfigCat.Cli/ConfigCat.Cli.csproj -c Release -r ${{ matrix.arch }} --self-contained true -p:PublishSingleFile=true -o publish/${{ matrix.arch }} - cp LICENSE publish/${{ matrix.arch }}/LICENSE - cp README.md publish/${{ matrix.arch }}/README.md - - - name: Archive executables - uses: actions/upload-artifact@v7 - with: - name: executables-osx-${{ strategy.job-index }} - path: publish - + - uses: actions/checkout@v7 + - name: Setup dotnet + uses: actions/setup-dotnet@v5 + with: + dotnet-version: "8.0.x" + + - name: Publish ${{ matrix.arch }} + run: | + dotnet publish src/ConfigCat.Cli/ConfigCat.Cli.csproj -c Release -r ${{ matrix.arch }} --self-contained true -p:PublishSingleFile=true -o publish/${{ matrix.arch }} + cp LICENSE publish/${{ matrix.arch }}/LICENSE + cp README.md publish/${{ matrix.arch }}/README.md + + - name: Archive executables + uses: actions/upload-artifact@v7 + with: + name: executables-osx-${{ strategy.job-index }} + path: publish + linux-snap-tests: needs: [produce-executables, produce-osx-executable] runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v7 - - - name: Download executables - uses: actions/download-artifact@v8 - with: - pattern: executables-* - merge-multiple: true - - - name: Update version in snapcraft - run: sed -i 's/#VERSION_PLACEHOLDER#/0.0.1/g' snap/snapcraft.yaml - - - name: Build snap - uses: snapcore/action-build@v1 - id: build - - name: Install snap - run: sudo snap install --dangerous ${{ steps.build.outputs.snap }} - - - name: Execute tests - shell: pwsh - run: ./test/integ.ps1 configcat ./test - env: - CONFIGCAT_API_HOST: ${{ secrets.CONFIGCAT_API_HOST }} - CONFIGCAT_API_USER: ${{ secrets.CONFIGCAT_API_USER }} - CONFIGCAT_API_PASS: ${{ secrets.CONFIGCAT_API_PASS }} + steps: + - uses: actions/checkout@v7 + + - name: Download executables + uses: actions/download-artifact@v8 + with: + pattern: executables-* + merge-multiple: true + + - name: Update version in snapcraft + run: sed -i 's/#VERSION_PLACEHOLDER#/0.0.1/g' snap/snapcraft.yaml + + - name: Build snap + uses: snapcore/action-build@v1 + id: build + with: + snapcraft-channel: 8.x/stable + + - name: Install snap + run: sudo snap install --dangerous ${{ steps.build.outputs.snap }} + + - name: Execute tests + shell: pwsh + run: ./test/integ.ps1 configcat ./test + env: + CONFIGCAT_API_HOST: ${{ secrets.CONFIGCAT_API_HOST }} + CONFIGCAT_API_USER: ${{ secrets.CONFIGCAT_API_USER }} + CONFIGCAT_API_PASS: ${{ secrets.CONFIGCAT_API_PASS }} win-choco-tests: needs: [produce-executables, produce-osx-executable] runs-on: windows-latest - + steps: - - uses: actions/checkout@v7 + - uses: actions/checkout@v7 - - name: Download executables - uses: actions/download-artifact@v8 - with: - pattern: executables-* - merge-multiple: true + - name: Download executables + uses: actions/download-artifact@v8 + with: + pattern: executables-* + merge-multiple: true - - name: Update version in nuspec - run: ((Get-Content -path choco\configcat.nuspec -Raw) -replace '#VERSION_PLACEHOLDER#','0.0.1') | Set-Content -Path choco\configcat.nuspec - shell: powershell + - name: Update version in nuspec + run: ((Get-Content -path choco\configcat.nuspec -Raw) -replace '#VERSION_PLACEHOLDER#','0.0.1') | Set-Content -Path choco\configcat.nuspec + shell: powershell - - name: Update version in VERIFICATION.txt - run: ((Get-Content -path choco\VERIFICATION.txt -Raw) -replace '#VERSION_PLACEHOLDER#','${{ env.VERSION }}') | Set-Content -Path choco\VERIFICATION.txt - shell: powershell + - name: Update version in VERIFICATION.txt + run: ((Get-Content -path choco\VERIFICATION.txt -Raw) -replace '#VERSION_PLACEHOLDER#','${{ env.VERSION }}') | Set-Content -Path choco\VERIFICATION.txt + shell: powershell - - name: Copy LICENSE to choco folder - run: Copy-Item LICENSE -destination choco\LICENSE.txt - shell: powershell + - name: Copy LICENSE to choco folder + run: Copy-Item LICENSE -destination choco\LICENSE.txt + shell: powershell - - name: Pack - run: choco pack choco\configcat.nuspec --out .\choco + - name: Pack + run: choco pack choco\configcat.nuspec --out .\choco - - name: Install local choco package - run: choco install configcat --source .\choco + - name: Install local choco package + run: choco install configcat --source .\choco - - name: Execute tests - shell: pwsh - run: ./test/integ.ps1 configcat ./test - env: - CONFIGCAT_API_HOST: ${{ secrets.CONFIGCAT_API_HOST }} - CONFIGCAT_API_USER: ${{ secrets.CONFIGCAT_API_USER }} - CONFIGCAT_API_PASS: ${{ secrets.CONFIGCAT_API_PASS }} + - name: Execute tests + shell: pwsh + run: ./test/integ.ps1 configcat ./test + env: + CONFIGCAT_API_HOST: ${{ secrets.CONFIGCAT_API_HOST }} + CONFIGCAT_API_USER: ${{ secrets.CONFIGCAT_API_USER }} + CONFIGCAT_API_PASS: ${{ secrets.CONFIGCAT_API_PASS }} mac-tests: needs: [produce-executables, produce-osx-executable] runs-on: macos-latest - + steps: - - uses: actions/checkout@v7 - - - name: Download executables - uses: actions/download-artifact@v8 - with: - pattern: executables-* - merge-multiple: true - - - name: Execute tests - shell: pwsh - run: | - chmod +x ./osx-x64/configcat - ./test/integ.ps1 ./osx-x64/configcat ./test - env: - CONFIGCAT_API_HOST: ${{ secrets.CONFIGCAT_API_HOST }} - CONFIGCAT_API_USER: ${{ secrets.CONFIGCAT_API_USER }} - CONFIGCAT_API_PASS: ${{ secrets.CONFIGCAT_API_PASS }} + - uses: actions/checkout@v7 + + - name: Download executables + uses: actions/download-artifact@v8 + with: + pattern: executables-* + merge-multiple: true + + - name: Execute tests + shell: pwsh + run: | + chmod +x ./osx-x64/configcat + ./test/integ.ps1 ./osx-x64/configcat ./test + env: + CONFIGCAT_API_HOST: ${{ secrets.CONFIGCAT_API_HOST }} + CONFIGCAT_API_USER: ${{ secrets.CONFIGCAT_API_USER }} + CONFIGCAT_API_PASS: ${{ secrets.CONFIGCAT_API_PASS }} docker-tests: needs: [produce-executables, produce-osx-executable] runs-on: ubuntu-latest - + steps: - - uses: actions/checkout@v7 - - - name: Download executables - uses: actions/download-artifact@v8 - with: - pattern: executables-* - merge-multiple: true - - - name: Set permissions - run: chmod +x ./linux-musl-x64/configcat - - - name: Build and push - uses: docker/build-push-action@v7 - with: - context: . - push: false - tags: configcat/cli:dev - - - name: Execute tests - shell: pwsh - run: ./test/integ.ps1 'docker run --rm --env CONFIGCAT_API_HOST=${{ env.CONFIGCAT_API_HOST }} --env CONFIGCAT_API_USER=${{ env.CONFIGCAT_API_USER }} --env CONFIGCAT_API_PASS=${{ env.CONFIGCAT_API_PASS }} -v $(pwd):/repo configcat/cli:dev' /repo/test - env: - CONFIGCAT_API_HOST: ${{ secrets.CONFIGCAT_API_HOST }} - CONFIGCAT_API_USER: ${{ secrets.CONFIGCAT_API_USER }} - CONFIGCAT_API_PASS: ${{ secrets.CONFIGCAT_API_PASS }} \ No newline at end of file + - uses: actions/checkout@v7 + + - name: Download executables + uses: actions/download-artifact@v8 + with: + pattern: executables-* + merge-multiple: true + + - name: Set permissions + run: chmod +x ./linux-musl-x64/configcat + + - name: Build and push + uses: docker/build-push-action@v7 + with: + context: . + push: false + tags: configcat/cli:dev + + - name: Execute tests + shell: pwsh + run: ./test/integ.ps1 'docker run --rm --env CONFIGCAT_API_HOST=${{ env.CONFIGCAT_API_HOST }} --env CONFIGCAT_API_USER=${{ env.CONFIGCAT_API_USER }} --env CONFIGCAT_API_PASS=${{ env.CONFIGCAT_API_PASS }} -v $(pwd):/repo configcat/cli:dev' /repo/test + env: + CONFIGCAT_API_HOST: ${{ secrets.CONFIGCAT_API_HOST }} + CONFIGCAT_API_USER: ${{ secrets.CONFIGCAT_API_USER }} + CONFIGCAT_API_PASS: ${{ secrets.CONFIGCAT_API_PASS }} diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index c3a714a..2444161 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -2,7 +2,7 @@ name: ConfigCat CLI Publish on: push: - tags: ['v[0-9]+.[0-9]+.[0-9]+'] + tags: ["v[0-9]+.[0-9]+.[0-9]+"] workflow_dispatch: @@ -11,28 +11,38 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - arch: [win-x64, win-x86, win-arm64, linux-x64, linux-musl-x64, linux-musl-arm64, linux-arm, linux-arm64] + arch: + [ + win-x64, + win-x86, + win-arm64, + linux-x64, + linux-musl-x64, + linux-musl-arm64, + linux-arm, + linux-arm64, + ] steps: - - uses: actions/checkout@v7 - - name: Setup dotnet - uses: actions/setup-dotnet@v5 - with: - dotnet-version: '8.0.x' - - - name: Get version from tag - run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV - - - name: Publish ${{ matrix.arch }} - run: | - dotnet publish src/ConfigCat.Cli/ConfigCat.Cli.csproj -c Release -r ${{ matrix.arch }} --self-contained true -p:PublishSingleFile=true -p:Version=${{ env.VERSION }} -o publish/${{ matrix.arch }} - cp LICENSE publish/${{ matrix.arch }}/LICENSE - cp README.md publish/${{ matrix.arch }}/README.md - - - name: Archive executables - uses: actions/upload-artifact@v7 - with: - name: executables-${{ strategy.job-index }} - path: publish + - uses: actions/checkout@v7 + - name: Setup dotnet + uses: actions/setup-dotnet@v5 + with: + dotnet-version: "8.0.x" + + - name: Get version from tag + run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV + + - name: Publish ${{ matrix.arch }} + run: | + dotnet publish src/ConfigCat.Cli/ConfigCat.Cli.csproj -c Release -r ${{ matrix.arch }} --self-contained true -p:PublishSingleFile=true -p:Version=${{ env.VERSION }} -o publish/${{ matrix.arch }} + cp LICENSE publish/${{ matrix.arch }}/LICENSE + cp README.md publish/${{ matrix.arch }}/README.md + + - name: Archive executables + uses: actions/upload-artifact@v7 + with: + name: executables-${{ strategy.job-index }} + path: publish produce-osx-executables: runs-on: macos-latest @@ -40,283 +50,285 @@ jobs: matrix: arch: [osx-x64, osx-arm64] steps: - - uses: actions/checkout@v7 - - name: Setup dotnet - uses: actions/setup-dotnet@v5 - with: - dotnet-version: '8.0.x' - - - name: Get version from tag - run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV - - - name: Publish ${{ matrix.arch }} - run: | - dotnet publish src/ConfigCat.Cli/ConfigCat.Cli.csproj -c Release -r ${{ matrix.arch }} --self-contained true -p:PublishSingleFile=true -p:Version=${{ env.VERSION }} -o publish/${{ matrix.arch }} - cp LICENSE publish/${{ matrix.arch }}/LICENSE - cp README.md publish/${{ matrix.arch }}/README.md - - - name: Archive executables - uses: actions/upload-artifact@v7 - with: - name: executables-osx-${{ strategy.job-index }} - path: publish + - uses: actions/checkout@v7 + - name: Setup dotnet + uses: actions/setup-dotnet@v5 + with: + dotnet-version: "8.0.x" + + - name: Get version from tag + run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV + + - name: Publish ${{ matrix.arch }} + run: | + dotnet publish src/ConfigCat.Cli/ConfigCat.Cli.csproj -c Release -r ${{ matrix.arch }} --self-contained true -p:PublishSingleFile=true -p:Version=${{ env.VERSION }} -o publish/${{ matrix.arch }} + cp LICENSE publish/${{ matrix.arch }}/LICENSE + cp README.md publish/${{ matrix.arch }}/README.md + + - name: Archive executables + uses: actions/upload-artifact@v7 + with: + name: executables-osx-${{ strategy.job-index }} + path: publish snap: runs-on: ubuntu-latest needs: [produce-executables, produce-osx-executables] steps: - - uses: actions/checkout@v7 - - - name: Download executables - uses: actions/download-artifact@v8 - with: - pattern: executables-* - merge-multiple: true - - - name: Get version from tag - run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV - - - name: Update version in snapcraft - run: sed -i 's/#VERSION_PLACEHOLDER#/${{ env.VERSION }}/g' snap/snapcraft.yaml - - - name: Build snap - uses: snapcore/action-build@v1 - id: build - - - name: Archive snap - uses: actions/upload-artifact@v7 - with: - name: snap-pack - path: configcat_*.snap - - - name: 🚀Publish - uses: snapcore/action-publish@v1 - env: - SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.STORE_LOGIN }} - with: - snap: ${{ steps.build.outputs.snap }} - release: stable + - uses: actions/checkout@v7 + + - name: Download executables + uses: actions/download-artifact@v8 + with: + pattern: executables-* + merge-multiple: true + + - name: Get version from tag + run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV + + - name: Update version in snapcraft + run: sed -i 's/#VERSION_PLACEHOLDER#/${{ env.VERSION }}/g' snap/snapcraft.yaml + + - name: Build snap + uses: snapcore/action-build@v1 + id: build + with: + snapcraft-channel: 8.x/stable + + - name: Archive snap + uses: actions/upload-artifact@v7 + with: + name: snap-pack + path: configcat_*.snap + + - name: 🚀Publish + uses: snapcore/action-publish@v1 + env: + SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.STORE_LOGIN }} + with: + snap: ${{ steps.build.outputs.snap }} + release: stable chocolatey: runs-on: windows-latest needs: [produce-executables, produce-osx-executables] steps: - - uses: actions/checkout@v7 + - uses: actions/checkout@v7 - - name: Download executables - uses: actions/download-artifact@v8 - with: - pattern: executables-* - merge-multiple: true + - name: Download executables + uses: actions/download-artifact@v8 + with: + pattern: executables-* + merge-multiple: true - - name: Get version from tag - run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV - shell: bash + - name: Get version from tag + run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV + shell: bash - - name: Update version in nuspec - run: ((Get-Content -path choco\configcat.nuspec -Raw) -replace '#VERSION_PLACEHOLDER#','${{ env.VERSION }}') | Set-Content -Path choco\configcat.nuspec - shell: powershell + - name: Update version in nuspec + run: ((Get-Content -path choco\configcat.nuspec -Raw) -replace '#VERSION_PLACEHOLDER#','${{ env.VERSION }}') | Set-Content -Path choco\configcat.nuspec + shell: powershell - - name: Update version in VERIFICATION.txt - run: ((Get-Content -path choco\VERIFICATION.txt -Raw) -replace '#VERSION_PLACEHOLDER#','${{ env.VERSION }}') | Set-Content -Path choco\VERIFICATION.txt - shell: powershell + - name: Update version in VERIFICATION.txt + run: ((Get-Content -path choco\VERIFICATION.txt -Raw) -replace '#VERSION_PLACEHOLDER#','${{ env.VERSION }}') | Set-Content -Path choco\VERIFICATION.txt + shell: powershell - - name: Copy LICENSE to choco folder - run: Copy-Item LICENSE -destination choco\LICENSE.txt - shell: powershell + - name: Copy LICENSE to choco folder + run: Copy-Item LICENSE -destination choco\LICENSE.txt + shell: powershell - - name: Pack - run: choco pack choco\configcat.nuspec + - name: Pack + run: choco pack choco\configcat.nuspec - - name: Archive choco package - uses: actions/upload-artifact@v7 - with: - name: choco-pack - path: configcat.*.nupkg + - name: Archive choco package + uses: actions/upload-artifact@v7 + with: + name: choco-pack + path: configcat.*.nupkg - - name: 🚀Publish - run: | - choco apikey --key ${{ secrets.CHOCO_API_KEY }} --source https://push.chocolatey.org/ - choco push configcat.${{ env.VERSION }}.nupkg --source https://push.chocolatey.org/ + - name: 🚀Publish + run: | + choco apikey --key ${{ secrets.CHOCO_API_KEY }} --source https://push.chocolatey.org/ + choco push configcat.${{ env.VERSION }}.nupkg --source https://push.chocolatey.org/ docker: runs-on: ubuntu-latest needs: [produce-executables, produce-osx-executables] steps: - - uses: actions/checkout@v7 - - - name: Download executables - uses: actions/download-artifact@v8 - with: - pattern: executables-* - merge-multiple: true - - - name: Get version from tag - run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV - - - name: Set permissions - run: chmod +x ./linux-musl-x64/configcat - - - name: Login to DockerHub - uses: docker/login-action@v4 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Build and push - uses: docker/build-push-action@v7 - with: - context: . - push: true - tags: | - configcat/cli:latest - configcat/cli:${{ env.VERSION }} + - uses: actions/checkout@v7 + + - name: Download executables + uses: actions/download-artifact@v8 + with: + pattern: executables-* + merge-multiple: true + + - name: Get version from tag + run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV + + - name: Set permissions + run: chmod +x ./linux-musl-x64/configcat + + - name: Login to DockerHub + uses: docker/login-action@v4 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Build and push + uses: docker/build-push-action@v7 + with: + context: . + push: true + tags: | + configcat/cli:latest + configcat/cli:${{ env.VERSION }} docker-azure: runs-on: ubuntu-latest needs: [produce-executables, produce-osx-executables] steps: - - uses: actions/checkout@v7 - - - name: Download executables - uses: actions/download-artifact@v8 - with: - pattern: executables-* - merge-multiple: true - - - name: Get version from tag - run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV - - - name: Set permissions - run: chmod +x ./linux-musl-x64/configcat - - - name: Login to DockerHub - uses: docker/login-action@v4 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Build and push - uses: docker/build-push-action@v7 - with: - context: . - file: azure-devops/Dockerfile - push: true - tags: configcat/cli:azure-devops-${{ env.VERSION }} + - uses: actions/checkout@v7 + + - name: Download executables + uses: actions/download-artifact@v8 + with: + pattern: executables-* + merge-multiple: true + + - name: Get version from tag + run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV + + - name: Set permissions + run: chmod +x ./linux-musl-x64/configcat + + - name: Login to DockerHub + uses: docker/login-action@v4 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Build and push + uses: docker/build-push-action@v7 + with: + context: . + file: azure-devops/Dockerfile + push: true + tags: configcat/cli:azure-devops-${{ env.VERSION }} github-release: runs-on: ubuntu-latest needs: [produce-executables, produce-osx-executables] steps: - - name: Download executables - uses: actions/download-artifact@v8 - with: - pattern: executables-* - merge-multiple: true - - - name: Get version from tag - run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV - - - name: Create archives & checksum - run: | - chmod +x linux-x64/configcat linux-musl-x64/configcat linux-arm/configcat linux-arm64/configcat osx-x64/configcat osx-arm64/configcat - cd linux-x64/ && tar --exclude='*.pdb' -czf ../configcat-cli_${{ env.VERSION }}_linux-x64.tar.gz * && cd .. - cd linux-musl-x64/ && tar --exclude='*.pdb' -czf ../configcat-cli_${{ env.VERSION }}_linux-musl-x64.tar.gz * && cd .. - cd linux-musl-arm64/ && tar --exclude='*.pdb' -czf ../configcat-cli_${{ env.VERSION }}_linux-musl-arm64.tar.gz * && cd .. - cd linux-arm/ && tar --exclude='*.pdb' -czf ../configcat-cli_${{ env.VERSION }}_linux-arm.tar.gz * && cd .. - cd linux-arm64/ && tar --exclude='*.pdb' -czf ../configcat-cli_${{ env.VERSION }}_linux-arm64.tar.gz * && cd .. - cd osx-x64/ && tar --exclude='*.pdb' -czf ../configcat-cli_${{ env.VERSION }}_osx-x64.tar.gz * && cd .. - cd osx-arm64/ && tar --exclude='*.pdb' -czf ../configcat-cli_${{ env.VERSION }}_osx-arm64.tar.gz * && cd .. - zip -r -D configcat-cli_${{ env.VERSION }}_win-x64.zip win-x64/* -x '*.pdb' - zip -r -D configcat-cli_${{ env.VERSION }}_win-x86.zip win-x86/* -x '*.pdb' - zip -r -D configcat-cli_${{ env.VERSION }}_win-arm64.zip win-arm64/* -x '*.pdb' - - sha256sum configcat-cli_${{ env.VERSION }}_linux-x64.tar.gz \ - configcat-cli_${{ env.VERSION }}_linux-musl-x64.tar.gz \ - configcat-cli_${{ env.VERSION }}_linux-musl-arm64.tar.gz \ - configcat-cli_${{ env.VERSION }}_linux-arm.tar.gz \ - configcat-cli_${{ env.VERSION }}_linux-arm64.tar.gz \ - configcat-cli_${{ env.VERSION }}_osx-x64.tar.gz \ - configcat-cli_${{ env.VERSION }}_osx-arm64.tar.gz \ - configcat-cli_${{ env.VERSION }}_win-x64.zip \ - configcat-cli_${{ env.VERSION }}_win-x86.zip \ - configcat-cli_${{ env.VERSION }}_win-arm64.zip > configcat-cli_${{ env.VERSION }}_checksums.sha256 - - - name: Archive tars for brew - uses: actions/upload-artifact@v7 - with: - name: brew-pack - path: | - configcat-cli_${{ env.VERSION }}_linux-x64.tar.gz - configcat-cli_${{ env.VERSION }}_osx-x64.tar.gz - configcat-cli_${{ env.VERSION }}_osx-arm64.tar.gz - - - name: Archive zips for scoop - uses: actions/upload-artifact@v7 - with: - name: scoop-pack - path: | - configcat-cli_${{ env.VERSION }}_win-x64.zip - configcat-cli_${{ env.VERSION }}_win-x86.zip - - - name: 🚀Update release - uses: ncipollo/release-action@v1 - with: - artifacts: "configcat-cli_*.tar.gz,configcat-cli_*.zip,configcat-cli_*_checksums.sha256" - allowUpdates: true - omitBodyDuringUpdate: true - omitNameDuringUpdate: true - token: ${{ secrets.GITHUB_TOKEN }} + - name: Download executables + uses: actions/download-artifact@v8 + with: + pattern: executables-* + merge-multiple: true + + - name: Get version from tag + run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV + + - name: Create archives & checksum + run: | + chmod +x linux-x64/configcat linux-musl-x64/configcat linux-arm/configcat linux-arm64/configcat osx-x64/configcat osx-arm64/configcat + cd linux-x64/ && tar --exclude='*.pdb' -czf ../configcat-cli_${{ env.VERSION }}_linux-x64.tar.gz * && cd .. + cd linux-musl-x64/ && tar --exclude='*.pdb' -czf ../configcat-cli_${{ env.VERSION }}_linux-musl-x64.tar.gz * && cd .. + cd linux-musl-arm64/ && tar --exclude='*.pdb' -czf ../configcat-cli_${{ env.VERSION }}_linux-musl-arm64.tar.gz * && cd .. + cd linux-arm/ && tar --exclude='*.pdb' -czf ../configcat-cli_${{ env.VERSION }}_linux-arm.tar.gz * && cd .. + cd linux-arm64/ && tar --exclude='*.pdb' -czf ../configcat-cli_${{ env.VERSION }}_linux-arm64.tar.gz * && cd .. + cd osx-x64/ && tar --exclude='*.pdb' -czf ../configcat-cli_${{ env.VERSION }}_osx-x64.tar.gz * && cd .. + cd osx-arm64/ && tar --exclude='*.pdb' -czf ../configcat-cli_${{ env.VERSION }}_osx-arm64.tar.gz * && cd .. + zip -r -D configcat-cli_${{ env.VERSION }}_win-x64.zip win-x64/* -x '*.pdb' + zip -r -D configcat-cli_${{ env.VERSION }}_win-x86.zip win-x86/* -x '*.pdb' + zip -r -D configcat-cli_${{ env.VERSION }}_win-arm64.zip win-arm64/* -x '*.pdb' + + sha256sum configcat-cli_${{ env.VERSION }}_linux-x64.tar.gz \ + configcat-cli_${{ env.VERSION }}_linux-musl-x64.tar.gz \ + configcat-cli_${{ env.VERSION }}_linux-musl-arm64.tar.gz \ + configcat-cli_${{ env.VERSION }}_linux-arm.tar.gz \ + configcat-cli_${{ env.VERSION }}_linux-arm64.tar.gz \ + configcat-cli_${{ env.VERSION }}_osx-x64.tar.gz \ + configcat-cli_${{ env.VERSION }}_osx-arm64.tar.gz \ + configcat-cli_${{ env.VERSION }}_win-x64.zip \ + configcat-cli_${{ env.VERSION }}_win-x86.zip \ + configcat-cli_${{ env.VERSION }}_win-arm64.zip > configcat-cli_${{ env.VERSION }}_checksums.sha256 + + - name: Archive tars for brew + uses: actions/upload-artifact@v7 + with: + name: brew-pack + path: | + configcat-cli_${{ env.VERSION }}_linux-x64.tar.gz + configcat-cli_${{ env.VERSION }}_osx-x64.tar.gz + configcat-cli_${{ env.VERSION }}_osx-arm64.tar.gz + + - name: Archive zips for scoop + uses: actions/upload-artifact@v7 + with: + name: scoop-pack + path: | + configcat-cli_${{ env.VERSION }}_win-x64.zip + configcat-cli_${{ env.VERSION }}_win-x86.zip + + - name: 🚀Update release + uses: ncipollo/release-action@v1 + with: + artifacts: "configcat-cli_*.tar.gz,configcat-cli_*.zip,configcat-cli_*_checksums.sha256" + allowUpdates: true + omitBodyDuringUpdate: true + omitNameDuringUpdate: true + token: ${{ secrets.GITHUB_TOKEN }} brew: runs-on: ubuntu-latest needs: github-release steps: - - uses: actions/checkout@v7 + - uses: actions/checkout@v7 - - name: Download archives - uses: actions/download-artifact@v8 - with: - name: brew-pack + - name: Download archives + uses: actions/download-artifact@v8 + with: + name: brew-pack - - name: Get version from tag - run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV + - name: Get version from tag + run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV - - name: Execute brew publish script - run: | - chmod +x scripts/brew-publish.sh - ./scripts/brew-publish.sh - env: - GH_USER_EMAIL: ${{ secrets.GH_USER_EMAIL }} - GH_USER_NAME: ${{ secrets.GH_USER_NAME }} - GH_API_TOKEN: ${{ secrets.GH_API_TOKEN }} + - name: Execute brew publish script + run: | + chmod +x scripts/brew-publish.sh + ./scripts/brew-publish.sh + env: + GH_USER_EMAIL: ${{ secrets.GH_USER_EMAIL }} + GH_USER_NAME: ${{ secrets.GH_USER_NAME }} + GH_API_TOKEN: ${{ secrets.GH_API_TOKEN }} scoop: runs-on: ubuntu-latest needs: github-release steps: - - uses: actions/checkout@v7 - - - name: Download archives - uses: actions/download-artifact@v8 - with: - name: scoop-pack - - - name: Get version from tag - run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV - - - name: Execute scoop publish script - run: | - chmod +x scripts/scoop-publish.sh - ./scripts/scoop-publish.sh - env: - GH_USER_EMAIL: ${{ secrets.GH_USER_EMAIL }} - GH_USER_NAME: ${{ secrets.GH_USER_NAME }} - GH_API_TOKEN: ${{ secrets.GH_API_TOKEN }} + - uses: actions/checkout@v7 + + - name: Download archives + uses: actions/download-artifact@v8 + with: + name: scoop-pack + + - name: Get version from tag + run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV + + - name: Execute scoop publish script + run: | + chmod +x scripts/scoop-publish.sh + ./scripts/scoop-publish.sh + env: + GH_USER_EMAIL: ${{ secrets.GH_USER_EMAIL }} + GH_USER_NAME: ${{ secrets.GH_USER_NAME }} + GH_API_TOKEN: ${{ secrets.GH_API_TOKEN }}