mirror of
https://github.com/reecetech/version-increment.git
synced 2025-12-21 06:25:44 +00:00
155 lines
4.5 KiB
YAML
155 lines
4.5 KiB
YAML
---
|
|
name: Test and Release
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- '**'
|
|
tags-ignore:
|
|
- '**'
|
|
|
|
jobs:
|
|
lint:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Run ShellCheck
|
|
uses: ludeeus/action-shellcheck@2.0.0
|
|
with:
|
|
check_together: 'yes'
|
|
|
|
test:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup bats
|
|
uses: bats-core/bats-action@2.0.0
|
|
with:
|
|
bats-version: 1.11.0
|
|
|
|
- name: Test
|
|
run: bats tests/*.bats
|
|
|
|
test-api-mode: # requires github API, didn't want to mock it
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
github_token: ${{ github.token }}
|
|
steps:
|
|
- name: Checkout code # have to checkout to have the source code available
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Remove .git directory # remove the git directory to make the testing valid
|
|
run: rm -rf .git/
|
|
|
|
- name: Test lookup version (with API)
|
|
id: version-lookup
|
|
env:
|
|
use_api: 'true'
|
|
run: ./version-lookup.sh
|
|
|
|
- name: Check lookup result
|
|
shell: bash
|
|
run: '[[ -n "${{ steps.version-lookup.outputs.CURRENT_VERSION }}" ]]'
|
|
|
|
- name: Test increment version (with API)
|
|
id: version-increment
|
|
run: ./version-increment.sh
|
|
env:
|
|
current_version: ${{ steps.version-lookup.outputs.CURRENT_VERSION }}
|
|
scheme: calver
|
|
use_api: 'true'
|
|
|
|
- name: Check increment result
|
|
shell: bash
|
|
run: '[[ "$(date +%Y.%-m)" == "$(echo "${{ steps.version-increment.outputs.VERSION }}" | cut -d "." -f 1-2)" ]]'
|
|
|
|
test-action-yml: # integration testing
|
|
needs:
|
|
- lint
|
|
- test
|
|
- test-api-mode
|
|
strategy:
|
|
matrix:
|
|
os:
|
|
- macos-latest
|
|
- ubuntu-latest
|
|
- windows-latest
|
|
fail-fast: false
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- name: Checkout code # have to checkout to have the source code available
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Remove .git directory # remove the git directory to make the testing valid
|
|
shell: bash
|
|
run: rm -rf .git/
|
|
|
|
- name: Get next version via API
|
|
uses: ./
|
|
id: version-via-api
|
|
with:
|
|
scheme: 'calver'
|
|
use_api: true
|
|
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Get next version via Git
|
|
uses: ./
|
|
id: version-via-git
|
|
with:
|
|
scheme: 'calver'
|
|
use_api: false
|
|
|
|
- name: Check results agree
|
|
shell: bash
|
|
run: |
|
|
[[ "${{ steps.version-via-api.outputs.current-version }}" == "${{ steps.version-via-git.outputs.current-version }}" ]]
|
|
[[ "${{ steps.version-via-api.outputs.major-version }}" == "${{ steps.version-via-git.outputs.major-version }}" ]]
|
|
[[ "${{ steps.version-via-api.outputs.minor-version }}" == "${{ steps.version-via-git.outputs.minor-version }}" ]]
|
|
[[ "${{ steps.version-via-api.outputs.patch-version }}" == "${{ steps.version-via-git.outputs.patch-version }}" ]]
|
|
# Don't test the full version or pre-version, since the number of digits is likely to be different (9 via api vs. 7 via git)
|
|
|
|
- name: Get next version via Git with tag-prefix
|
|
uses: ./
|
|
id: version-prefix
|
|
with:
|
|
scheme: 'semver'
|
|
use_api: false
|
|
tag_prefix: 'foo/bar@'
|
|
|
|
- name: Check that it starts from 0.0.1 (since prefix doesn't exist)
|
|
shell: bash
|
|
run: |
|
|
[[ "${{ steps.version-prefix.outputs.current-version }}" == "0.0.0" ]]
|
|
[[ "${{ steps.version-prefix.outputs.major-version }}" == "0" ]]
|
|
[[ "${{ steps.version-prefix.outputs.minor-version }}" == "0" ]]
|
|
[[ "${{ steps.version-prefix.outputs.patch-version }}" == "1" ]]
|
|
[[ "${{ steps.version-prefix.outputs.prefixed-version }}" = "foo/bar@0.0.1"* ]]
|
|
|
|
release:
|
|
needs:
|
|
- test-action-yml
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Get next version
|
|
uses: ./
|
|
id: version
|
|
with:
|
|
scheme: 'calver'
|
|
|
|
- name: Release version
|
|
uses: softprops/action-gh-release@v2
|
|
if: ${{ github.ref_name == github.event.repository.default_branch }}
|
|
with:
|
|
draft: false
|
|
prerelease: false
|
|
tag_name: "${{ steps.version.outputs.version }}"
|