Skip to content

Update date in changelog #32

Update date in changelog

Update date in changelog #32

Workflow file for this run

# Inspired by https://github.com/kowainik/stan/blob/30ae41dccde49feefe19913039014f3612e5d44c/.github/workflows/release.yml
name: Release
permissions:
contents: write
on:
push:
tags:
- "v*"
jobs:
create_release:
name: Create Github Release
runs-on: ubuntu-latest
steps:
- name: Create Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ github.ref_name }}
run: |
gh release create "$tag" \
--repo="$GITHUB_REPOSITORY" \
--title="$tag" \
--generate-notes \
--draft
build_artifact:
needs: [create_release]
name: ${{ matrix.os }}/${{ matrix.arch }}/${{ github.ref }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
arch: x86_64
- os: macOS-13 # macOS-latest does something weird I don't understand
arch: aarch64
- os: windows-latest
arch: x86_64
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Set tag name
uses: olegtarasov/get-tag@2.1.3
id: tag
with:
tagRegex: "v(.*)"
tagRegexGroup: 1
- name: Setup Haskell
uses: haskell-actions/setup@v2.7.5
with:
ghc-version: 9.6.5
enable-stack: true
stack-version: 2.15.7
- name: Cache ~/.stack
uses: actions/cache@v4
with:
path: ~/.stack
key: ${{ runner.os }}-9.6.5-${{ matrix.arch }}-${{ hashFiles('**/stack.yaml.lock','**/gitlab-helper.cabal') }}-v2
restore-keys: |
${{ runner.os }}-${{ matrix.arch }}-9.6.5-
- name: Build binary
run: |
mkdir bin
stack build --copy-bins --local-bin-path bin
- if: matrix.os == 'windows-latest'
name: Set binary path name on Windows
run: |
echo "BINARY_PATH=./bin/gitlab-helper.exe" >> $env:GITHUB_ENV
- if: matrix.os != 'windows-latest'
name: Set binary path name not on Windows
run: |
echo "BINARY_PATH=./bin/gitlab-helper" >> "$GITHUB_ENV"
- if: matrix.os != 'macOS-13'
name: Compress binary
uses: svenstaro/upx-action@2.4.1
with:
files: ${{ env.BINARY_PATH }}
- if: matrix.os == 'windows-latest'
name: Set zip file path name on Windows
run: |
echo "ZIP_PATH=./bin/gitlab-helper-${{ steps.tag.outputs.tag }}-${{ runner.os }}.zip" >> $env:GITHUB_ENV
- if: matrix.os != 'windows-latest'
name: Set zip file path name not on Windows
run: |
echo "ZIP_PATH=./bin/gitlab-helper-${{ steps.tag.outputs.tag }}-${{ runner.os }}.zip" >> "$GITHUB_ENV"
- if: matrix.os != 'windows-latest'
name: Create zip file not on windows
run: |
7z a -l ${{ env.ZIP_PATH }} ${{ env.BINARY_PATH }}
- if: matrix.os == 'windows-latest'
name: Create zip file on windows
run: |
7z a ${{ env.ZIP_PATH }} ${{ env.BINARY_PATH }}
- name: Upload Release Asset
id: upload-release-asset
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release upload "${{ github.ref_name }}" "${{ env.ZIP_PATH }}#${{ runner.os }}.zip" --repo="$GITHUB_REPOSITORY"
test:
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
# - os: macOS-13
- os: windows-latest
name: Test built binaries
runs-on: ${{ matrix.os }}
needs: build_artifact
steps:
- # Apparently, gh requires to live in a git repo in order to work on windows
if: matrix.os == 'windows-latest'
name: Check out code
uses: actions/checkout@v4
- name: Set tag name
uses: olegtarasov/get-tag@2.1.3
id: tag
with:
tagRegex: "v(.*)"
tagRegexGroup: 1
- name: download and extract executable
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release download "${{ github.ref_name }}" --pattern '*${{ runner.os }}.zip' --repo="$GITHUB_REPOSITORY" --output artifact.zip
7z e artifact.zip
- name: smoke test
run: |
./gitlab-helper --api-token "dummy" --group-id 123 --base-url "https://gitlab.example.com" version