diff options
author | Harel Ben-Attia <harelba@gmail.com> | 2022-01-22 16:09:23 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-22 16:09:23 +0200 |
commit | 01622020909676ca2aa68ed7d9ea24f798031e9b (patch) | |
tree | 780ab10e5a763611013e8843dc371a7a87dfbfe7 | |
parent | ce8733e74b35eb560b9f6ec8ce0c5fab94560f39 (diff) |
Generalize Versioning (#288)
Still need to test on master whether release by tag actually works
-rw-r--r-- | .github/workflows/build-and-package.yaml | 96 | ||||
-rw-r--r-- | .github/workflows/q.rb.brew-formula-template | 31 | ||||
-rw-r--r-- | pyoxidizer.bzl | 3 |
3 files changed, 68 insertions, 62 deletions
diff --git a/.github/workflows/build-and-package.yaml b/.github/workflows/build-and-package.yaml index 1873227..f4de766 100644 --- a/.github/workflows/build-and-package.yaml +++ b/.github/workflows/build-and-package.yaml @@ -10,8 +10,44 @@ on: - "*.md" - "*.markdown" - "mkdocs/**/*" + tags-ignore: + - "*" jobs: + version_info: + runs-on: ubuntu-18.04 + steps: + - name: Checkout + uses: actions/checkout@v2 + - id: vars + run: | + set -e -x + + echo "github event ref is ${{ github.ref }}" + + if [ "x${{ startsWith(github.ref, 'refs/tags/v') }}" == "xtrue" ] + then + echo "Trigger was a version tag - ${{ github.ref }}" + echo ::set-output name=q_version::${GITHUB_REF#refs/tags/v} + else + # For testing version propagation inside the PR + echo "Either branch of a non-version tag - setting version to 0.0.0" + echo ::set-output name=q_version::0.0.0 + fi + + outputs: + q_version: ${{ steps.vars.outputs.q_version }} + + check_version_info: + runs-on: ubuntu-18.04 + needs: version_info + steps: + - name: test q_version + run: | + set -e -x + + echo q_version is ${{ needs.version_info.outputs.q_version }} + create-man: runs-on: ubuntu-18.04 steps: @@ -106,7 +142,7 @@ jobs: Q_EXECUTABLE=`pwd`/linux-q Q_SKIP_EXECUTABLE_VALIDATION=true ./run-tests.sh -v package-linux-deb: - needs: [test-linux, create-man] + needs: [test-linux, create-man, version_info] runs-on: ubuntu-18.04 steps: - name: Checkout @@ -133,25 +169,27 @@ jobs: chmod 755 ./linux-q + export q_version=${{ needs.version_info.outputs.q_version }} + gem install fpm cp dist/fpm-config ~/.fpm - fpm -s dir -t deb --deb-use-file-permissions -p packages/linux/q-text-as-data-3.1.6-1.x86_64.deb --version 3.1.6 ./linux-q=/usr/bin/q USAGE.gz=/usr/share/man/man1/q.1.gz + fpm -s dir -t deb --deb-use-file-permissions -p packages/linux/q-text-as-data-${q_version}-1.x86_64.deb --version ${q_version} ./linux-q=/usr/bin/q USAGE.gz=/usr/share/man/man1/q.1.gz - name: Upload DEB Package uses: actions/upload-artifact@v1.0.0 with: - name: q-text-as-data-3.1.6-1.x86_64.deb - path: packages/linux/q-text-as-data-3.1.6-1.x86_64.deb + name: q-text-as-data-${{ needs.version_info.outputs.q_version }}-1.x86_64.deb + path: packages/linux/q-text-as-data-${{ needs.version_info.outputs.q_version }}-1.x86_64.deb test-deb-packaging: runs-on: ubuntu-18.04 - needs: package-linux-deb + needs: [package-linux-deb, version_info] steps: - name: Checkout uses: actions/checkout@v2 - name: Download DEB uses: actions/download-artifact@v2 with: - name: q-text-as-data-3.1.6-1.x86_64.deb + name: q-text-as-data-${{ needs.version_info.outputs.q_version }}-1.x86_64.deb - name: Install Python for Testing uses: actions/setup-python@v2 with: @@ -163,10 +201,10 @@ jobs: pip3 install -r test-requirements.txt - name: Test DEB Package Installation - run: ./dist/test-using-deb.sh ./q-text-as-data-3.1.6-1.x86_64.deb + run: ./dist/test-using-deb.sh ./q-text-as-data-${{ needs.version_info.outputs.q_version }}-1.x86_64.deb package-linux-rpm: - needs: [test-linux, create-man] + needs: [test-linux, create-man, version_info] runs-on: ubuntu-18.04 steps: - name: Checkout @@ -189,31 +227,32 @@ jobs: mkdir -p packages/linux - find ./ -ls chmod 755 ./linux-q + export q_version=${{ needs.version_info.outputs.q_version }} + gem install fpm cp dist/fpm-config ~/.fpm - fpm -s dir -t rpm --rpm-use-file-permissions -p packages/linux/q-text-as-data-3.1.6.x86_64.rpm --version 3.1.6 ./linux-q=/usr/bin/q USAGE.gz=/usr/share/man/man1/q.1.gz + fpm -s dir -t rpm --rpm-use-file-permissions -p packages/linux/q-text-as-data-${q_version}.x86_64.rpm --version ${q_version} ./linux-q=/usr/bin/q USAGE.gz=/usr/share/man/man1/q.1.gz - name: Upload RPM Package uses: actions/upload-artifact@v1.0.0 with: - name: q-text-as-data-3.1.6.x86_64.rpm - path: packages/linux/q-text-as-data-3.1.6.x86_64.rpm + name: q-text-as-data-${{ needs.version_info.outputs.q_version }}.x86_64.rpm + path: packages/linux/q-text-as-data-${{ needs.version_info.outputs.q_version }}.x86_64.rpm test-rpm-packaging: runs-on: ubuntu-18.04 - needs: package-linux-rpm + needs: [package-linux-rpm, version_info] steps: - name: Checkout uses: actions/checkout@v2 - name: Download RPM uses: actions/download-artifact@v2 with: - name: q-text-as-data-3.1.6.x86_64.rpm + name: q-text-as-data-${{ needs.version_info.outputs.q_version }}.x86_64.rpm - name: Retest using RPM - run: ./dist/test-using-rpm.sh ./q-text-as-data-3.1.6.x86_64.rpm + run: ./dist/test-using-rpm.sh ./q-text-as-data-${{ needs.version_info.outputs.q_version }}.x86_64.rpm build-mac: runs-on: macos-11 @@ -307,6 +346,7 @@ jobs: build-windows: runs-on: windows-latest + needs: version_info steps: - name: Checkout uses: actions/checkout@v2 @@ -331,7 +371,7 @@ jobs: run: | set -e -x - pyoxidizer build --release + pyoxidizer build --release --var Q_VERSION ${{ needs.version_info.outputs.q_version }} export Q_EXECUTABLE=./build/x86_64-pc-windows-msvc/release/install/q chmod 755 $Q_EXECUTABLE @@ -374,7 +414,7 @@ jobs: seq 1 10000 | ./win-q.exe -c 1 "select sum(c1),count(*) from -" -S some-db.sqlite package-windows: - needs: [create-man, not-really-test-windows] + needs: [create-man, not-really-test-windows, version_info] runs-on: windows-latest steps: - name: Checkout @@ -400,26 +440,22 @@ jobs: run: | set -e -x - pyoxidizer build --release msi_installer - - find ./ -ls - - # TODO Windows versions do not support the -beta postfix + pyoxidizer build --release msi_installer --var Q_VERSION ${{ needs.version_info.outputs.q_version }} - export Q_MSI=./build/x86_64-pc-windows-msvc/release/msi_installer/q-text-as-data-3.1.6.msi + export Q_MSI=./build/x86_64-pc-windows-msvc/release/msi_installer/q-text-as-data-${{ needs.version_info.outputs.q_version }}.msi chmod 755 $Q_MSI mkdir -p packages/windows/ - cp $Q_MSI packages/windows/q-text-as-data-3.1.6.msi + cp $Q_MSI packages/windows/q-text-as-data-${{ needs.version_info.outputs.q_version }}.msi - name: Upload Windows MSI uses: actions/upload-artifact@v1.0.0 with: - name: q-text-as-data-3.1.6.msi - path: packages/windows/q-text-as-data-3.1.6.msi + name: q-text-as-data-${{ needs.version_info.outputs.q_version }}.msi + path: packages/windows/q-text-as-data-${{ needs.version_info.outputs.q_version }}.msi test-windows-packaging: - needs: package-windows + needs: [package-windows, version_info] runs-on: windows-latest steps: - name: Checkout @@ -427,12 +463,12 @@ jobs: - name: Download Windows Package uses: actions/download-artifact@v2 with: - name: q-text-as-data-3.1.6.msi + name: q-text-as-data-${{ needs.version_info.outputs.q_version }}.msi - name: Test Install of MSI continue-on-error: true shell: powershell run: | - $process = Start-Process msiexec.exe -ArgumentList "/i q-text-as-data-3.1.6.msi -l* msi-install.log /norestart /quiet" -PassThru -Wait + $process = Start-Process msiexec.exe -ArgumentList "/i q-text-as-data-${{ needs.version_info.outputs.q_version }}.msi -l* msi-install.log /norestart /quiet" -PassThru -Wait $process.ExitCode gc msi-install.log @@ -441,7 +477,7 @@ jobs: continue-on-error: true shell: powershell run: | - $process = Start-Process msiexec.exe -ArgumentList "/u q-text-as-data-3.1.6.msi /norestart /quiet" -PassThru -Wait + $process = Start-Process msiexec.exe -ArgumentList "/u q-text-as-data-${{ needs.version_info.outputs.q_version }}.msi /norestart /quiet" -PassThru -Wait $process.ExitCode exit $process.ExitCode diff --git a/.github/workflows/q.rb.brew-formula-template b/.github/workflows/q.rb.brew-formula-template deleted file mode 100644 index dc10c78..0000000 --- a/.github/workflows/q.rb.brew-formula-template +++ /dev/null @@ -1,31 +0,0 @@ -# frozen_string_literal: true - -# Formula for q -class Q < Formula - desc "Run SQL directly on CSV or TSV files" - homepage "https://harelba.github.io/q/" - url "https://github.com/harelba/q/archive/v3.1.6.tar.gz" - - sha256 "0f4656b19087332d5113dd38907b50d70c55a57b3e97f810b8090132412dc9fb" - - license "GPL-3.0-or-later" - - depends_on "pyoxidizer" => :build - depends_on "python@3.8" => :build - depends_on "ronn" => :build - depends_on xcode: ["12.4", :build] - - def install - system "pyoxidizer", "build", "--release", "--var", "PYTHON_VERSION", "3.9" - bin.install "./build/x86_64-apple-darwin/release/install/q" - - system "ronn", "--roff", "--section=1", "doc/USAGE.markdown" - man1.install "doc/USAGE.1" => "q.1" - end - - test do - seq = (1..100).map(&:to_s).join("\n") - output = pipe_output("#{bin}/q -c 1 'select sum(c1) from -'", seq) - assert_equal "5050\n", output - end -end diff --git a/pyoxidizer.bzl b/pyoxidizer.bzl index 8a27c4b..1f7fb13 100644 --- a/pyoxidizer.bzl +++ b/pyoxidizer.bzl @@ -4,6 +4,7 @@ # configuration file format. PYTHON_VERSION = VARS.get("PYTHON_VERSION","3.8") +Q_VERSION = VARS.get("Q_VERSION","0.0.1") # Configuration files consist of functions which define build "targets." # This function creates a Python executable and installs it in a destination @@ -63,7 +64,7 @@ def make_msi(exe): # The name of your application. "q-text-as-data", # The version of your application. - "3.1.6", + Q_VERSION, # The author/manufacturer of your application. "Harel Ben-Attia" ) |