Skip to content

Add support for predefined variations (#54) #68

Add support for predefined variations (#54)

Add support for predefined variations (#54) #68

Workflow file for this run

name: ConfigCat CLI Publish
on:
push:
tags: ['v[0-9]+.[0-9]+.[0-9]+']
workflow_dispatch:
jobs:
produce-executables:
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]
steps:
- uses: actions/checkout@v6
- 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@v6
with:
name: executables-${{ strategy.job-index }}
path: publish
produce-osx-executables:
runs-on: macos-latest
strategy:
matrix:
arch: [osx-x64, osx-arm64]
steps:
- uses: actions/checkout@v6
- 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@v6
with:
name: executables-osx-${{ strategy.job-index }}
path: publish
snap:
runs-on: ubuntu-latest
needs: [produce-executables, produce-osx-executables]
steps:
- uses: actions/checkout@v6
- name: Download executables
uses: actions/download-artifact@v7
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@v6
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@v6
- name: Download executables
uses: actions/download-artifact@v7
with:
pattern: executables-*
merge-multiple: true
- 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 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: Pack
run: choco pack choco\configcat.nuspec
- name: Archive choco package
uses: actions/upload-artifact@v6
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/
docker:
runs-on: ubuntu-latest
needs: [produce-executables, produce-osx-executables]
steps:
- uses: actions/checkout@v6
- name: Download executables
uses: actions/download-artifact@v7
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@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v6
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@v6
- name: Download executables
uses: actions/download-artifact@v7
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@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v6
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@v7
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@v6
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@v6
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@v6
- name: Download archives
uses: actions/download-artifact@v7
with:
name: brew-pack
- 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 }}
scoop:
runs-on: ubuntu-latest
needs: github-release
steps:
- uses: actions/checkout@v6
- name: Download archives
uses: actions/download-artifact@v7
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 }}