summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarel Ben-Attia <harelba@gmail.com>2022-01-22 16:09:23 +0200
committerGitHub <noreply@github.com>2022-01-22 16:09:23 +0200
commit01622020909676ca2aa68ed7d9ea24f798031e9b (patch)
tree780ab10e5a763611013e8843dc371a7a87dfbfe7
parentce8733e74b35eb560b9f6ec8ce0c5fab94560f39 (diff)
Generalize Versioning (#288)
Still need to test on master whether release by tag actually works
-rw-r--r--.github/workflows/build-and-package.yaml96
-rw-r--r--.github/workflows/q.rb.brew-formula-template31
-rw-r--r--pyoxidizer.bzl3
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"
)