Skip to content

Commit

Permalink
update actions
Browse files Browse the repository at this point in the history
  • Loading branch information
rcannood committed Jul 17, 2024
1 parent f009444 commit 6d50842
Show file tree
Hide file tree
Showing 4 changed files with 210 additions and 190 deletions.
120 changes: 120 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
name: Build

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

on:
push:
branches: [ main ]
workflow_dispatch:
inputs:
version:
description: |
The version of the project to build. Example: `1.0.3`.
If not provided, a development build with a version name
based on the branch name will be built. Otherwise, a release
build with the provided version will be built.
required: false

jobs:
# phase 1
target:
name: Build target branch
runs-on: ubuntu-latest
permissions:
contents: write

outputs:
target_branch: ${{ steps.build-target.outputs.target_branch }}
version: ${{ steps.build-target.outputs.version }}
docker_matrix: ${{ steps.build-target.outputs.docker_matrix }}

steps:
- name: Check out repository
uses: actions/checkout@v4
with:
submodules: 'recursive'
fetch-depth: 0

- name: Install Viash
uses: viash-io/viash-actions/setup@v6

- name: Determine variables
id: variables
run: |
VERSION="${{ github.event.inputs.version }}"
SOURCE_BRANCH=$(echo "$GITHUB_REF" | sed 's/refs\/heads\///')
if [[ -z $VERSION ]]; then
TARGET_BRANCH="build/$SOURCE_BRANCH"
VERSION=$(echo "$TARGET_BRANCH" | sed 's/[^a-zA-Z0-9_]/_/g')
else
if [[ ! "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+.*$ ]]; then
echo "Version '$VERSION' does not match PEP440"
exit 1
fi
TARGET_BRANCH="release/${VERSION%.*}.x"
fi
echo "Set version of Viash package to '$VERSION'"
echo "version=$VERSION" >> $GITHUB_OUTPUT
echo "Set target branch to '$TARGET_BRANCH'"
echo "target_branch=$TARGET_BRANCH" >> $GITHUB_OUTPUT
- uses: viash-io/viash-actions/project/build-target@v6
id: build-target
with:
target_branch: ${{ steps.variables.outputs.target_branch }}
version: ${{ steps.variables.outputs.version }}

- name: Deploy to target branch
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_branch: ${{ steps.variables.outputs.target_branch }}
publish_dir: .

# phase 2
docker:
name: Build and push Docker images
needs: target

runs-on: ubuntu-latest
permissions:
contents: read
packages: write

strategy:
fail-fast: false
matrix:
component: ${{ fromJson(needs.target.outputs.docker_matrix) }}

steps:
# Remove unnecessary files to free up space. Otherwise, we get 'no space left on device.'
- uses: data-intuitive/reclaim-the-bytes@v2

- uses: actions/checkout@v4
with:
submodules: 'recursive'
ref: ${{ needs.target.outputs.target_branch }}

- uses: viash-io/viash-actions/setup@v6

- name: Login to container registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build image
run: |
${{matrix.component.executable}} ---engine docker ---setup build ---verbose
- name: Push image
run: |
${{matrix.component.executable}} ---engine docker ---setup push ---verbose
93 changes: 0 additions & 93 deletions .github/workflows/main-build.yml

This file was deleted.

90 changes: 90 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
name: Test

on:
push:
branches: [ main ]
pull_request:

jobs:
# phase 1
list:
name: List components to test
runs-on: ubuntu-latest

outputs:
matrix: ${{ steps.ns_list_filter_nextflow.outputs.output_matrix }}
cache_key: ${{ steps.cache.outputs.cache_key }}
dest_paths: ${{ steps.cache.outputs.dest_paths }}

steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: 'recursive'

- uses: viash-io/viash-actions/setup@v6

- uses: viash-io/viash-actions/project/sync-and-cache@v6
id: cache

- id: ns_list
uses: viash-io/viash-actions/ns-list@v6
with:
format: json
runner: executable

- id: ns_list_filter_changed
uses: viash-io/viash-actions/project/detect-changed-components@v6
with:
input_file: "${{ steps.ns_list.outputs.output_file }}"

- name: Filter out Nextflow scripts (testing currently not supported)
id: ns_list_filter_nextflow
run: |
OUTPUT_MATRIX=$(echo '${{ steps.ns_list_filter_changed.outputs.output_matrix }}' | jq -c 'map(select(.main_script_type != "nextflow_script"))')
echo "output_matrix=$OUTPUT_MATRIX" >> $GITHUB_OUTPUT
# phase 2
test:
name: Test component
needs: list
if: ${{ needs.list.outputs.matrix != '[]' && needs.list.outputs.matrix != '' }}
runs-on: ubuntu-latest

strategy:
fail-fast: false
matrix:
component: ${{ fromJson(needs.list.outputs.matrix) }}

steps:
# Remove unnecessary files to free up space. Otherwise, we get 'no space left on device.'
- name: Clear space
uses: data-intuitive/reclaim-the-bytes@v2

- name: Check out repository
uses: actions/checkout@v4
with:
submodules: 'recursive'
fetch-depth: 0

- name: Install Viash
uses: viash-io/viash-actions/setup@v6

# use cache
- name: Cache resources data
if: ${{ needs.list.outputs.cache_key != '' }}
uses: actions/cache/restore@v4
timeout-minutes: 10
with:
path: ${{ needs.list.outputs.dest_paths }}
key: ${{ needs.list.outputs.cache_key }}

- name: Run test
timeout-minutes: 30
env:
VIASH_TEMP: "${{ runner.temp }}/viash_test_temp"
run: |
viash test \
"${{ matrix.component.config }}" \
--cpus 2 \
--memory "16gb"
Loading

0 comments on commit 6d50842

Please sign in to comment.