Skip to content

Commit

Permalink
Merge pull request #2 from PagoPlus/feat/ci-cd-for-numscript#86b37qfxt
Browse files Browse the repository at this point in the history
[FEAT] CI/CD for numscript release #86b37qfxt
  • Loading branch information
fermuch authored Jan 23, 2025
2 parents ce67167 + 9abb84f commit 51d6a43
Show file tree
Hide file tree
Showing 44 changed files with 252 additions and 99 deletions.
1 change: 1 addition & 0 deletions .envrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
use flake
40 changes: 40 additions & 0 deletions .github/workflows/nix.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Nix CI

on:
push:
branches: [ main ]
pull_request:
branches: [ main ]

jobs:
configure:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- uses: actions/checkout@v4
- id: set-matrix
run: echo "matrix=$(nixci gh-matrix --systems=x86_64-linux,aarch64-darwin | jq -c .)" >> $GITHUB_OUTPUT

nix:
runs-on: ${{ matrix.system }}
permissions:
contents: read
needs: configure
strategy:
matrix: ${{ fromJson(needs.configure.outputs.matrix) }}
fail-fast: false
steps:
- uses: actions/checkout@v4
- run: |
nixci \
--extra-access-tokens "github.com=${{ secrets.GITHUB_TOKEN }}" \
build \
--systems "${{ matrix.system }}" \
.#default.${{ matrix.subflake}}
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: numscript-wasm-${{ matrix.system }}
path: build/numscript.wasm
47 changes: 32 additions & 15 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,31 +1,48 @@
name: release
name: Release

on:
release:
types: [created]

permissions:
contents: write

jobs:
build:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/setup-go@v2
- uses: actions/checkout@v4
with:
go-version: "1.22"
- uses: actions/checkout@v2
- uses: actions/cache@v2
fetch-depth: 0

- uses: actions/cache@v3
with:
path: |
~/.cache/go-build
~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
path: /tmp/.cache
key: ${{ runner.os }}-build-${{ github.sha }}
restore-keys: |
${{ runner.os }}-go-
- name: get deps
run: go mod download
${{ runner.os }}-build-
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: "1.22"
cache: true

- name: Install TinyGo
run: |
wget -P tmp/ https://github.com/tinygo-org/tinygo/releases/download/v0.34.0/tinygo_0.34.0_amd64.deb
sudo dpkg -i tmp/tinygo_0.34.0_amd64.deb
- name: Get dependencies
run: |
go mod download
go mod verify
- name: Run GoReleaser
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
uses: goreleaser/goreleaser-action@v6
with:
distribution: goreleaser
version: latest
args: release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
11 changes: 11 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,14 @@ coverage.*

numscript
numscript.wasm


# WASM builds
build/
*.wasm

# Go specific
/vendor/
/bin/
*.test
/coverage.txt
34 changes: 13 additions & 21 deletions .goreleaser.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,35 +18,27 @@ builds:
- CGO_ENABLED=0
main: ./internal/numscript/numscript.go
goos:
- linux
- windows
- darwin
- wasip1
goarch:
- amd64
- arm64
- wasm
tool: "tinygo"
hooks:
pre:
pre:
- mkdir -p {{ dir .Path }}
binary: numscript
binary: ../numscript
ldflags:
- -X main.Version=v{{ .Version }}
flags:
- -scheduler=none
- -no-debug
- -target=wasi

checksum:
name_template: "numscript_checksums.txt"

archives:
- format: tar.gz
# this name template makes the OS and Arch compatible with the results of `uname`.
name_template: >-
{{ .ProjectName }}_
{{ .Version }}_
{{- title .Os }}_
{{- if eq .Arch "amd64" }}x86_64
{{- else if eq .Arch "386" }}i386
{{- else }}{{ .Arch }}{{ end }}
{{- if .Arm }}v{{ .Arm }}{{ end }}
# use zip for windows archives
format_overrides:
- goos: windows
format: zip
- format: binary
name_template: "numscript"

changelog:
sort: asc
Expand Down
61 changes: 61 additions & 0 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

36 changes: 36 additions & 0 deletions flake.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
{
description = "A Nix flake for NumScript WASM compilation";

inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
};

outputs = { self, nixpkgs, flake-utils }:
flake-utils.lib.eachDefaultSystem (system:
let
inherit (pkgs.lib) optional optionals;
pkgs = import nixpkgs { inherit system; };

inputs = with pkgs; [
go
tinygo
git
just
] ++ optional stdenv.isLinux inotify-tools
++ optionals stdenv.isDarwin
(with darwin.apple_sdk.frameworks; [ CoreFoundation CoreServices ]);

in with pkgs; {
devShells.default = mkShell {
name = "numscript-wasm";
packages = inputs;

shellHook = ''
echo "NumScript WASM development environment"
echo "TinyGo version: $(tinygo version)"
echo "Go version: $(go version)"
'';
};
});
}
4 changes: 1 addition & 3 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
module github.com/PagoPlus/numscriptex
module github.com/PagoPlus/numscript-wasm

go 1.22.1

replace github.com/PagoPlus/numscriptex => github.com/PagoPlus/numscriptex v0.0.0-20241202132127-f10ae2504bbc

require (
github.com/Jeffail/gabs/v2 v2.7.0
github.com/antlr4-go/antlr/v4 v4.13.1
Expand Down
4 changes: 2 additions & 2 deletions internal/analysis/check.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ import (
"math/big"
"slices"

"github.com/PagoPlus/numscriptex/internal/parser"
"github.com/PagoPlus/numscriptex/internal/utils"
"github.com/PagoPlus/numscript-wasm/internal/parser"
"github.com/PagoPlus/numscript-wasm/internal/utils"
)

const TypeMonetary = "monetary"
Expand Down
4 changes: 2 additions & 2 deletions internal/analysis/check_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ import (
"math/big"
"testing"

"github.com/PagoPlus/numscriptex/internal/analysis"
"github.com/PagoPlus/numscriptex/internal/parser"
"github.com/PagoPlus/numscript-wasm/internal/analysis"
"github.com/PagoPlus/numscript-wasm/internal/parser"

"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
Expand Down
4 changes: 2 additions & 2 deletions internal/analysis/diagnostic_kind.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ import (
"fmt"
"math/big"

"github.com/PagoPlus/numscriptex/internal/ansi"
"github.com/PagoPlus/numscriptex/internal/utils"
"github.com/PagoPlus/numscript-wasm/internal/ansi"
"github.com/PagoPlus/numscript-wasm/internal/utils"
)

type Severity = byte
Expand Down
2 changes: 1 addition & 1 deletion internal/analysis/document_symbols.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package analysis

import (
"github.com/PagoPlus/numscriptex/internal/parser"
"github.com/PagoPlus/numscript-wasm/internal/parser"
)

type DocumentSymbolKind = float64
Expand Down
4 changes: 2 additions & 2 deletions internal/analysis/document_symbols_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ import (
"slices"
"testing"

"github.com/PagoPlus/numscriptex/internal/analysis"
"github.com/PagoPlus/numscriptex/internal/parser"
"github.com/PagoPlus/numscript-wasm/internal/analysis"
"github.com/PagoPlus/numscript-wasm/internal/parser"

"github.com/stretchr/testify/assert"
)
Expand Down
2 changes: 1 addition & 1 deletion internal/analysis/goto_definition.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package analysis

import "github.com/PagoPlus/numscriptex/internal/parser"
import "github.com/PagoPlus/numscript-wasm/internal/parser"

type GotoDefinitionResult struct {
Range parser.Range
Expand Down
4 changes: 2 additions & 2 deletions internal/analysis/goto_definition_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ package analysis_test
import (
"testing"

"github.com/PagoPlus/numscriptex/internal/analysis"
"github.com/PagoPlus/numscriptex/internal/parser"
"github.com/PagoPlus/numscript-wasm/internal/analysis"
"github.com/PagoPlus/numscript-wasm/internal/parser"

"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
Expand Down
4 changes: 2 additions & 2 deletions internal/analysis/hover.go
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package analysis

import (
"github.com/PagoPlus/numscriptex/internal/parser"
"github.com/PagoPlus/numscriptex/internal/utils"
"github.com/PagoPlus/numscript-wasm/internal/parser"
"github.com/PagoPlus/numscript-wasm/internal/utils"
)

type Hover interface{ hover() }
Expand Down
4 changes: 2 additions & 2 deletions internal/analysis/hover_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ package analysis_test
import (
"testing"

"github.com/PagoPlus/numscriptex/internal/analysis"
"github.com/PagoPlus/numscriptex/internal/parser"
"github.com/PagoPlus/numscript-wasm/internal/analysis"
"github.com/PagoPlus/numscript-wasm/internal/parser"

"github.com/stretchr/testify/require"
)
Expand Down
2 changes: 1 addition & 1 deletion internal/cmd/check.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import (
"os"
"sort"

"github.com/PagoPlus/numscriptex/internal/analysis"
"github.com/PagoPlus/numscript-wasm/internal/analysis"

"github.com/spf13/cobra"
)
Expand Down
2 changes: 1 addition & 1 deletion internal/cmd/lsp.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package cmd

import (
"github.com/PagoPlus/numscriptex/internal/lsp"
"github.com/PagoPlus/numscript-wasm/internal/lsp"

"github.com/spf13/cobra"
)
Expand Down
Loading

0 comments on commit 51d6a43

Please sign in to comment.