Skip to content

added macos-latest to ci #249

added macos-latest to ci

added macos-latest to ci #249

Workflow file for this run

name: Main
defaults:
run:
shell: bash
permissions:
contents: write
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "*" ]
paths:
- "**"
- "!**.md"
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- name: Check out Git repository
uses: actions/checkout@v3
- name: Set up .NET
uses: actions/setup-dotnet@v1
with:
dotnet-version: "8.0.x"
- name: .NET Lint
uses: zyactions/dotnet-lint@v1
with:
implicit-restore: true
workspace: sqlc-gen-csharp.sln
exclude: |
GeneratedProtobuf
MySqlConnectorExample
NpgsqlExample
ci:
name: CI
runs-on: ${{ matrix.os }}
if: ${{ always() }}
strategy:
matrix:
os: [ ubuntu-latest, macos-13 ]
architecture: [ "x64" ] # , "arm64"
dotnet-version: [ '8.0.x' ]
steps:
- uses: actions/checkout@v4
- name: Load .env file
uses: xom9ikk/[email protected]
with:
load-mode: strict
- name: Setup Dotnet ${{ matrix.dotnet-version }}
uses: actions/setup-dotnet@v3
with:
dotnet-version: ${{ matrix.dotnet-version }}
- name: Install Wasi workload
run: dotnet workload install wasi-experimental
- name: Download Wasi SDK on Ubuntu
if: runner.os == 'Linux'
run: |
wget https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-22/wasi-sdk-22.0-linux.tar.gz
tar xf wasi-sdk-22.0-linux.tar.gz
chmod -R 755 wasi-sdk-22.0
- name: Download Wasi SDK on MacOS
if: runner.os == 'macOS'
run: |
wget https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-22/wasi-sdk-22.0-macos.tar.gz
tar xf wasi-sdk-22.0-macos.tar.gz
chmod -R 755 wasi-sdk-22.0
# name: Download WASI SDK on Windows
# run: |
# curl -LO https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-22/wasi-sdk-22.0.m-mingw.tar.gz
# tar xf wasi-sdk-22.0.m-mingw.tar.gz -C wasi-sdk-22.0
# chmod -R 755 wasi-sdk-22.0
- name: Dotnet Wasm Publish
run: |
WASI_SDK_PATH="$(pwd)/wasi-sdk-22.0" dotnet publish WasmRunner -c release
./scripts/wasm/copy_to_dist.sh
./scripts/wasm/update_sha.sh
- uses: sqlc-dev/setup-sqlc@v4
with:
sqlc-version: '1.25.0'
- name: Verify pushed generated code is synced
run: sqlc -f sqlc.wasm.yaml diff
- name: Verify pushed Dockerfile is synced
run: |
./scripts/generate_dockerfile.sh /tmp/Dockerfile
diff /tmp/Dockerfile Dockerfile
- name: Sqlc generate using Wasm plugin
run: sqlc -f sqlc.wasm.yaml generate
# - name: Setup Docker support via Colima on MacOS
# if: runner.os == 'macOS'
# run: |
# set -x
# brew install docker docker-compose
# open -a $(which docker)
# sleep 4
- name: Test generated code
run: |
docker-compose up -d
./scripts/run_tests.sh
- name: upload wasm plugin as artifact
uses: actions/upload-artifact@v2
if: github.ref == 'refs/heads/main' && contains(github.event.head_commit.message, '[release]')
with:
name: wasm-file
path: dist/plugin.wasm
release:
name: Release test
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main' && contains(github.event.head_commit.message, '[release]')
needs: [ci]
steps:
- name: Check out Git repository
uses: actions/checkout@v4
with:
fetch-depth: 0 # fetches all history for all tags and branches
- uses: actions/download-artifact@v2
with:
name: wasm-file
- name: Bump version and create new tag
id: bump_version
run: |
set -ex
echo "Extract the latest tag version"
LATEST_TAG=$(git describe --tags $(git rev-list --tags --max-count=1))
echo "LATEST_TAG=$LATEST_TAG" >> $GITHUB_ENV
echo "latest tag version: $LATEST_TAG"
LATEST_COMMIT_MSG=$(git log -1 --pretty=%B)
BUMP_TYPE="patch" # Initialize the default version bump type to patch
if [[ $LATEST_COMMIT_MSG == *"[major]"* ]]; then
BUMP_TYPE="major"
elif [[ $LATEST_COMMIT_MSG == *"[minor]"* ]]; then
BUMP_TYPE="minor"
fi
# Bump the version based on the type
case $BUMP_TYPE in
"major")
NEW_TAG=$(echo $LATEST_TAG | awk -F. '{OFS="."; $1="v" substr($1,2)+1; $2="0"; $3="0"; print}')
;;
"minor")
NEW_TAG=$(echo $LATEST_TAG | awk -F. '{OFS="."; $2=$2+1; $3="0"; print}')
;;
"patch")
NEW_TAG=$(echo $LATEST_TAG | awk -F. '{OFS="."; $3=$3+1; print}')
;;
esac
echo "New tag version: $NEW_TAG"
echo "NEW_TAG=$NEW_TAG" >> $GITHUB_ENV
# Create a new tag
git tag $NEW_TAG
git push origin $NEW_TAG
- name: Calculate sha256
run: |
SHA256_HASH=$(sha256sum plugin.wasm | awk '{ print $1 }')
echo "SHA256_HASH=$SHA256_HASH" >> $GITHUB_ENV
echo "The calculated sha256 is $SHA256_HASH"
- name: Create release draft
run: |
LATEST_TAG=${{ env.LATEST_TAG }}
NEW_TAG=${{ env.NEW_TAG }}
SHA256_HASH=${{ env.SHA256_HASH }}
PREVIOUS_TAG=$(git rev-list -n 1 $LATEST_TAG)
CHANGE_LOG=$(git --no-pager log $PREVIOUS_TAG..HEAD --pretty=format:'%h - %an, %ar : %s')
# Define the release notes template
RELEASE_NOTES=$(cat <<EOF
## Release version $NEW_TAG
Release sha256 is \`$SHA256_HASH\`
## Configuration example
\`\`\`yaml
version: '2'
plugins:
- name: csharp
wasm:
url: https://github.com/DaredevilOSS/sqlc-gen-csharp/releases/download/$NEW_TAG/sqlc-gen-csharp.wasm
sha256: $SHA256_HASH
\`\`\`
## Changelog
$CHANGE_LOG
## Contributors
* @doron050 @SockworkOrange
Anyone who wishes to contribute to the next releases is invited :)
EOF
)
# change file name to convention
mv plugin.wasm sqlc-gen-csharp.wasm
# Create a draft release
gh release create $NEW_TAG sqlc-gen-csharp.wasm \
--draft \
--title "$NEW_TAG" \
--notes "$RELEASE_NOTES"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}