diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 0000000000..db6565135b
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,21 @@
+name: Build
+
+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:
+ build:
+ uses: viash-io/viash-actions/.github/workflows/build.yaml@v6
+ with:
+ version: ${{ github.event.inputs.version }}
\ No newline at end of file
diff --git a/.github/workflows/main-build.yml b/.github/workflows/main-build.yml
deleted file mode 100644
index b017ecd001..0000000000
--- a/.github/workflows/main-build.yml
+++ /dev/null
@@ -1,97 +0,0 @@
-name: main build
-
-on:
- push:
- branches: [ 'main' ]
-
-jobs:
- # phase 1
- list:
- runs-on: ubuntu-latest
-
- outputs:
- component_matrix: ${{ steps.set_matrix.outputs.matrix }}
-
- steps:
- - uses: actions/checkout@v4
-
- - uses: viash-io/viash-actions/setup@v6
-
- - name: Remove target folder from .gitignore
- run: |
- # allow publishing the target folder
- sed -i 's#^/target/$##g' .gitignore
-
- - uses: viash-io/viash-actions/ns-build@v6
- with:
- config_mod: .functionality.version := 'main_build'
- parallel: true
-
- - name: Deploy to target branch
- uses: peaceiris/actions-gh-pages@v4
- with:
- github_token: ${{ secrets.GITHUB_TOKEN }}
- publish_dir: .
- publish_branch: main_build
-
- - id: ns_list
- uses: viash-io/viash-actions/ns-list@v6
- with:
- platform: docker
- src: src
- format: json
-
- - id: set_matrix
- run: |
- echo "matrix=$(jq -c '[ .[] |
- {
- "name": (.functionality.namespace + "/" + .functionality.name),
- "dir": .info.config | capture("^(?
.*\/)").dir
- }
- ]' ${{ steps.ns_list.outputs.output_file }} )" >> $GITHUB_OUTPUT
-
- # phase 2
- build:
- needs: list
-
- runs-on: ubuntu-latest
-
- permissions:
- contents: read
- packages: write
-
- strategy:
- fail-fast: false
- matrix:
- component: ${{ fromJson(needs.list.outputs.component_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
-
- - uses: viash-io/viash-actions/setup@v6
-
- - name: Build container
- uses: viash-io/viash-actions/ns-build@v6
- with:
- config_mod: .functionality.version := 'main_build'
- platform: docker
- src: ${{ matrix.component.dir }}
- setup: build
-
- - name: Login to container registry
- uses: docker/login-action@v3
- with:
- registry: ghcr.io
- username: ${{ github.actor }}
- password: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Push container
- uses: viash-io/viash-actions/ns-build@v6
- with:
- config_mod: .functionality.version := 'main_build'
- platform: docker
- src: ${{ matrix.component.dir }}
- setup: push
\ No newline at end of file
diff --git a/.github/workflows/release-build.yml b/.github/workflows/release-build.yml
deleted file mode 100644
index 6db5b094a8..0000000000
--- a/.github/workflows/release-build.yml
+++ /dev/null
@@ -1,146 +0,0 @@
-name: release build
-
-on:
- workflow_dispatch:
- inputs:
- version_tag:
- description: Version tag
- required: true
-
-jobs:
- # phase 1
- list:
- env:
- s3_bucket: s3://openproblems-data/resources_test/
- runs-on: ubuntu-latest
-
- outputs:
- component_matrix: ${{ steps.set_matrix.outputs.matrix }}
- cache_key: ${{ steps.cache.outputs.cache_key }}
-
- steps:
- - uses: actions/checkout@v4
-
- - uses: viash-io/viash-actions/setup@v6
-
- - uses: viash-io/viash-actions/project/sync-and-cache-s3@v6
- id: cache
- with:
- s3_bucket: $s3_bucket
- dest_path: resources_test
- cache_key_prefix: resources_test__
-
- - name: Remove target folder from .gitignore
- run: |
- # allow publishing the target folder
- sed -i 's#^/target/$##g' .gitignore
-
- - uses: viash-io/viash-actions/ns-build@v6
- with:
- config_mod: ".functionality.version := '${{ github.event.inputs.version_tag }}'"
- parallel: true
-
- - name: Deploy to target branch
- uses: peaceiris/actions-gh-pages@v4
- with:
- github_token: ${{ secrets.GITHUB_TOKEN }}
- publish_dir: .
- publish_branch: release
- full_commit_message: "Deploy for release ${{ github.event.inputs.version_tag }} from ${{ github.sha }}"
-
- - id: ns_list
- uses: viash-io/viash-actions/ns-list@v6
- with:
- platform: docker
- src: src
- format: json
-
- - id: set_matrix
- run: |
- echo "matrix=$(jq -c '[ .[] |
- {
- "name": (.functionality.namespace + "/" + .functionality.name),
- "config": .info.config,
- "dir": .info.config | capture("^(?.*\/)").dir
- }
- ]' ${{ steps.ns_list.outputs.output_file }} )" >> $GITHUB_OUTPUT
-
- # phase 2
- build:
- needs: list
-
- runs-on: ubuntu-latest
-
- permissions:
- contents: read
- packages: write
-
- strategy:
- fail-fast: false
- matrix:
- component: ${{ fromJson(needs.list.outputs.component_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
-
- - uses: viash-io/viash-actions/setup@v6
-
- - name: Build container
- uses: viash-io/viash-actions/ns-build@v6
- with:
- config_mod: .functionality.version := 'main_build'
- platform: docker
- src: ${{ matrix.component.dir }}
- setup: build
-
- - name: Login to container registry
- uses: docker/login-action@v3
- with:
- registry: ghcr.io
- username: ${{ github.actor }}
- password: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Push container
- uses: viash-io/viash-actions/ns-build@v6
- with:
- config_mod: .functionality.version := '${{ github.event.inputs.version_tag }}'
- platform: docker
- src: ${{ matrix.component.dir }}
- setup: push
-
- ###################################
- # phase 3
- component_test:
- needs: [ build, list ]
- if: ${{ needs.list.outputs.component_matrix != '[]' && needs.list.outputs.component_matrix != '' }}
- runs-on: ubuntu-latest
-
- strategy:
- fail-fast: false
- matrix:
- component: ${{ fromJson(needs.list.outputs.component_matrix) }}
-
- steps:
- - uses: actions/checkout@v4
-
- - uses: viash-io/viash-actions/setup@v6
-
- # use cache
- - name: Cache resources data
- uses: actions/cache@v4
- timeout-minutes: 5
- with:
- path: resources_test
- key: ${{ needs.list.outputs.cache_key }}
-
- - name: Test component
- timeout-minutes: 30
- run: |
- viash test \
- --config_mod ".functionality.version := '${{ github.event.inputs.version_tag }}'" \
- "${{ matrix.component.config }}" \
- --cpus 2 \
- --memory "5gb"
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
new file mode 100644
index 0000000000..1cc1e061b1
--- /dev/null
+++ b/.github/workflows/test.yml
@@ -0,0 +1,11 @@
+name: Test
+
+on:
+ push:
+ branches:
+ - main
+ pull_request:
+
+jobs:
+ test:
+ uses: viash-io/viash-actions/.github/workflows/test.yaml@v6
\ No newline at end of file
diff --git a/.github/workflows/viash-test.yml b/.github/workflows/viash-test.yml
deleted file mode 100644
index 540f18cae4..0000000000
--- a/.github/workflows/viash-test.yml
+++ /dev/null
@@ -1,88 +0,0 @@
-name: viash test
-
-on:
- pull_request:
- push:
- branches: [ main ]
-
-jobs:
-
- # phase 1
- list:
- env:
- s3_bucket: s3://openproblems-data/resources_test/
- runs-on: ubuntu-latest
-
- outputs:
- matrix: ${{ steps.set_matrix.outputs.matrix }}
- cache_key: ${{ steps.cache.outputs.cache_key }}
-
- steps:
- - uses: actions/checkout@v4
- with:
- fetch-depth: 0
-
- - uses: viash-io/viash-actions/setup@v6
-
- - uses: viash-io/viash-actions/project/sync-and-cache-s3@v6
- id: cache
- with:
- s3_bucket: $s3_bucket
- dest_path: resources_test
- cache_key_prefix: resources_test__
-
- - id: ns_list
- uses: viash-io/viash-actions/ns-list@v6
- with:
- platform: docker
- format: json
-
- - id: ns_list_filtered
- uses: viash-io/viash-actions/project/detect-changed-components@v6
- with:
- input_file: "${{ steps.ns_list.outputs.output_file }}"
-
- - id: set_matrix
- run: |
- echo "matrix=$(jq -c '[ .[] |
- {
- "name": (.functionality.namespace + "/" + .functionality.name),
- "config": .info.config
- }
- ]' ${{ steps.ns_list_filtered.outputs.output_file }} )" >> $GITHUB_OUTPUT
-
- # phase 2
- viash_test:
- 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.'
- - uses: data-intuitive/reclaim-the-bytes@v2
-
- - uses: actions/checkout@v4
-
- - uses: viash-io/viash-actions/setup@v6
-
- # use cache
- - name: Cache resources data
- uses: actions/cache@v4
- timeout-minutes: 10
- with:
- path: resources_test
- key: ${{ needs.list.outputs.cache_key }}
-
- - name: Run test
- timeout-minutes: 30
- run: |
- VIASH_TEMP=$RUNNER_TEMP/viash viash test \
- "${{ matrix.component.config }}" \
- --cpus 2 \
- --memory "5gb"
-