Skip to content

Commit

Permalink
CI Artifacts (#1)
Browse files Browse the repository at this point in the history
  • Loading branch information
koliyo authored Sep 29, 2023
1 parent 6610f08 commit e30143f
Show file tree
Hide file tree
Showing 8 changed files with 268 additions and 24 deletions.
218 changes: 218 additions & 0 deletions .github/workflows/build-and-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,218 @@
name: Build and test

# README:
#
# The semantics for running shell commands in GitHub actions is non-obvious. Please read
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsshell
# before modifying this file. Our strategy is to rely on the built-in (unspecified) shell, and
# explicitly set the shell settings we want (with `set -eo pipefail`) at the beginning of any
# bash script. For more information on these settings, see `man bash`.
#
# GitHub Actions files can be difficult to modify with confidence, because testing changes often
# requires pushing to a branch and running CI remotely. To make this process easier, consider
# the following:
#
# 1) Use Visual Studio Code with the GitHub Actions Extension (github.vscode-github-actions).
# This allows you to check the validity of your action schema and syntax without pushing to a
# branch.
# 2) Use https://github.com/nektos/act to run your CI steps locally. Note this will only work with
# steps run on Linux platforms, as `act` is implemented with Docker containers.

on:
push:
branches: [ main ]
paths-ignore:
- "Docs/**"
- "**.md"
- "README.md"
- "LICENSE"
- ".gitignore"
pull_request:
branches: [ "**" ]
paths-ignore:
- "Docs/**"
- "**.md"
- "README.md"
- "LICENSE"
- ".gitignore"

jobs:
# build-devcontainer-linux:
# name: "Devcontainer: ${{ matrix.host.os }}/${{ matrix.configuration }}"
# strategy:
# fail-fast: false
# matrix:
# host: [
# { type: linux, os: ubuntu-latest,
# build-options: "-v --build-tests -Xswiftc -enable-testing",
# test-options: "-v --enable-code-coverage"
# }
# ]
# configuration: [ "debug", "release" ]

# runs-on: ${{ matrix.host.os }}
# steps:
# - uses: actions/checkout@v3

# - uses: actions/cache@v3
# with:
# path: .build
# key: ${{ runner.os }}-spm-${{ hashFiles('**/Package.resolved') }}
# restore-keys: |
# ${{ runner.os }}-spm-

# - name: Build and Test
# uses: devcontainers/[email protected]
# with:
# runCmd: |
# set -eo pipefail
# swift package resolve
# .build/checkouts/Swifty-LLVM/Tools/make-pkgconfig.sh llvm.pc
# export PKG_CONFIG_PATH=$PWD
# swift build -c ${{ matrix.configuration }} ${{ matrix.host.build-options }}
# swift test -c ${{ matrix.configuration }} ${{ matrix.host.test-options }} |
# tee testoutput.txt && (
# (grep -q "[.']EndToEndTests[/. ]test_" testoutput.txt && grep -q "[.']HyloTests[/. ]test_" testoutput.txt) ||
# (echo "error: generated tests failed to run; see
# https://github.com/apple/swift-package-manager/issues/6595" && false) )

# - name: Check code coverage
# uses: mattpolzin/[email protected]
# with:
# SORT_ORDER: +cov
# MINIMUM_COVERAGE: 84
# CODECOV_JSON: .build/${{ matrix.configuration }}/codecov/*.json

build-native-macos:
name: "Native: ${{ matrix.host.os }}/${{ matrix.configuration }}"
strategy:
fail-fast: false
matrix:
host: [
{
type: macos, os: macos-13,
build-options: "-v --build-tests -Xswiftc -enable-testing",
# No coverage support on MacOS
test-options: "-v"
}
]
swift: [
{ version: "5.9" }
]
configuration: [ "debug" ]
# configuration: [ "debug", "release" ]

runs-on: ${{ matrix.host.os }}
steps:
- name: Checkout
uses: actions/checkout@v3
with:
submodules: 'true'

- name: Setup swift
uses: swift-actions/setup-swift@v1
with:
swift-version: ${{ matrix.swift.version }}

- run: swift --version

- name: Setup LLVM
uses: KyleMayes/install-llvm-action@v1
with:
version: "15.0"

- run: llvm-config --version

- name: Generate LLVM pkgconfig file
run: |
set -eo pipefail
cd hylo
swift package resolve
.build/checkouts/Swifty-LLVM/Tools/make-pkgconfig.sh llvm.pc
cat llvm.pc
- name: Build (${{ matrix.configuration }})
run: |
set -eo pipefail
export PKG_CONFIG_PATH=$PWD/hylo
swift build -c ${{ matrix.configuration }} ${{ matrix.host.build-options }}
# - name: Test (${{ matrix.configuration }})
# run: |
# set -eo pipefail
# export PKG_CONFIG_PATH=$PWD/hylo
# swift test -c ${{ matrix.configuration }} ${{ matrix.host.test-options }} |
# tee testoutput.txt && (
# (grep -q "[.']EndToEndTests[/. ]test_" testoutput.txt && grep -q "[.']HyloTests[/. ]test_" testoutput.txt) ||
# (echo "error: generated tests failed to run; see
# https://github.com/apple/swift-package-manager/issues/6595" && false) )

- uses: actions/setup-node@v3
with:
node-version: 20

- name: Package VSCode extension (${{ matrix.configuration }})
run: |
set -eo pipefail
BUILD_DIR=$(swift build -c ${{ matrix.configuration }} --show-bin-path)
mkdir -p hylo-vscode-extension/bin/mac/arm64
cp -fv $BUILD_DIR/hylo-lsp-server hylo-vscode-extension/bin/mac/arm64
cd hylo-vscode-extension
npm install
npm run vscode:package
- name: Upload VSCode extension artifacts (${{ matrix.configuration }})
uses: actions/upload-artifact@v3
with:
name: vscode-extension-artifacts
path: |
hylo-vscode-extension/hylo-lang-*.vsix
dist
!dist/**/*.md
# build-native-windows:
# name: "Native, no testing: windows-latest/release"
# strategy:
# fail-fast: false
# runs-on: windows-latest
# steps:
# - name: Setup swift
# uses: compnerd/gha-setup-swift@main
# with:
# branch: swift-5.8.1-release
# tag: 5.8.1-RELEASE

# - uses: actions/checkout@v3

# - name: Swift version
# run: swift --version

# - name: Set up LLVM 15.0.6
# run: |
# curl.exe -L -O -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}"https://github.com/c3lang/win-llvm/releases/download/llvm_15_0_6/llvm-15.0.6-windows-x86-msvc17-msvcrt.7z
# 7z x llvm-15.0.6-windows-x86-msvc17-msvcrt.7z -oC:\
# Add-Content $env:GITHUB_PATH 'C:\llvm-15.0.6-windows-x86-msvc17-msvcrt\bin'

# - name: Copy LLVM's include and lib to include and lib folder of MSVC
# run: |
# xcopy c:\llvm-15.0.6-windows-x86-msvc17-msvcrt\include\*.* c:\program" "files\microsoft" "visual" "studio\2022\enterprise\vc\tools\msvc\${{ env.VCToolsVersion }}\include\ /s /h
# xcopy c:\llvm-15.0.6-windows-x86-msvc17-msvcrt\lib\*.* c:\program" "files\microsoft" "visual" "studio\2022\enterprise\vc\tools\msvc\${{ env.VCToolsVersion }}\lib\x64\ /s /h

# - run: llvm-config --version

# - name: Build support library
# run: clang -c ./Library/Hylo/LibC.c -o HyloLibC.lib

# - name: Copy support library
# run: xcopy HyloLibC.lib c:\program" "files\microsoft" "visual" "studio\2022\enterprise\vc\tools\msvc\${{ env.VCToolsVersion }}\lib\x64\

# - name: Build (Release)
# id: build
# continue-on-error: true
# run: swift build -v -c release

# - name: Retry on failure
# continue-on-error: false
# if: steps.build.outcome != 'success'
# run: swift build -v -c release

32 changes: 32 additions & 0 deletions .github/workflows/publish-release-version.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: Publish release version

on:
workflow_run:
workflows: ["Build and test"]
tags: ["v*.*.*"]
types: [completed]

jobs:
publish-release:
strategy:
fail-fast: false

matrix:
host: [
{
type: macos, os: macos-13,
build-options: "-v --build-tests -Xswiftc -enable-testing",
# No coverage support on MacOS
test-options: "-v"
}
]

runs-on: ${{ matrix.host.os }}
steps:
# - uses: actions/checkout@v3
- uses: actions/download-artifact@v3
with:
name: vscode-extension-artifacts

- name: Display structure of downloaded files
run: ls -R
12 changes: 3 additions & 9 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,9 @@
[submodule "hylo"]
path = hylo
url = https://github.com/koliyo/hylo.git
[submodule "BlueSocket"]
path = BlueSocket
url = https://github.com/Kitura/BlueSocket.git
[submodule "swift-unisocket"]
path = swift-unisocket
url = https://github.com/seznam/swift-unisocket.git
[submodule "Swifty-LLVM"]
path = Swifty-LLVM
url = https://github.com/hylo-lang/Swifty-LLVM.git
[submodule "hylo-lsp-vs-code"]
path = hylo-lsp-vs-code
url = [email protected]:koliyo/hylo-lsp-vs-code.git
[submodule "JSONRPC-DataChannel-UniSocket"]
path = JSONRPC-DataChannel-UniSocket
url = https://github.com/koliyo/JSONRPC-DataChannel-UniSocket.git
Expand All @@ -31,3 +22,6 @@
[submodule "JSONRPC"]
path = JSONRPC
url = https://github.com/ChimeHQ/JSONRPC.git
[submodule "hylo-vscode-extension"]
path = hylo-vscode-extension
url = https://github.com/koliyo/hylo-vscode-extension.git
1 change: 0 additions & 1 deletion Swifty-LLVM
Submodule Swifty-LLVM deleted from 8e00ab
14 changes: 14 additions & 0 deletions build-and-install-vscode-extension.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#!/bin/bash

set -ex

# . ./setup-env.sh
swift build -c release
BUILD_DIR=$(swift build -c release --show-bin-path)
mkdir -p hylo-vscode-extension/bin/mac/arm64
cp -fv $BUILD_DIR/hylo-lsp-server hylo-vscode-extension/bin/mac/arm64
cd hylo-vscode-extension
npm install
npm run vscode:package
VERSION=$(cat package.json | jq -r ".version")
code --install-extension hylo-lang-$VERSION.vsix
13 changes: 0 additions & 13 deletions build-vs-code-extension.sh

This file was deleted.

1 change: 0 additions & 1 deletion hylo-lsp-vs-code
Submodule hylo-lsp-vs-code deleted from 2166ee
1 change: 1 addition & 0 deletions hylo-vscode-extension
Submodule hylo-vscode-extension added at 2d9d8d

0 comments on commit e30143f

Please sign in to comment.