Update date in changelog #32
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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 |