CI #48
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: build | |
on: | |
push: | |
branches: | |
- master | |
- main | |
- bids23 | |
paths: | |
# Only rebuild website when apps have changed | |
- 'water-bodies/**' | |
- .github/** | |
- docs/** | |
jobs: | |
validate: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions/setup-python@v2 | |
with: | |
python-version: 3.x | |
- run: pip install cwltool | |
- run: cwltool --validate cwl-workflow/app-water-bodies-cloud-native.cwl | |
- run: cwltool --validate cwl-workflow/app-water-body-cloud-native.cwl | |
- run: cwltool --validate cwl-workflow/app-water-body.cwl | |
version: | |
needs: validate | |
runs-on: ubuntu-latest | |
outputs: | |
app-version: ${{ steps.set-version.outputs.version }} | |
steps: | |
- uses: actions/checkout@v2 | |
- run: echo "APP_VERSION=$(cat codemeta.json | jy -r .version )" >> $GITHUB_ENV | |
- run: echo app version is $APP_VERSION | |
- id: set-version | |
run: echo "::set-output name=version::$APP_VERSION" | |
container-crop: | |
needs: version | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- run: echo version ${{needs.version.outputs.app-version}} | |
- run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin | |
- name: build & push crop image | |
run: | | |
IMAGE_ID=ghcr.io/terradue/app-package-training-bids23/crop | |
docker build water-bodies/command-line-tools/crop --file water-bodies/command-line-tools/crop/Dockerfile --tag crop | |
docker tag crop $IMAGE_ID:${{needs.version.outputs.app-version}} | |
docker push $IMAGE_ID:${{needs.version.outputs.app-version}} | |
container-normalized-difference: | |
needs: version | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- run: echo version ${{needs.version.outputs.app-version}} | |
- run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin | |
- name: build & push norm_diff image | |
run: | | |
IMAGE_ID=ghcr.io/terradue/app-package-training-bids23/norm_diff | |
docker build water-bodies/command-line-tools/norm_diff --file water-bodies/command-line-tools/norm_diff/Dockerfile --tag norm_diff | |
docker tag norm_diff $IMAGE_ID:${{needs.version.outputs.app-version}} | |
docker push $IMAGE_ID:${{needs.version.outputs.app-version}} | |
container-otsu: | |
needs: version | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- run: echo version ${{needs.version.outputs.app-version}} | |
- run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin | |
- name: build & push otsu image | |
run: | | |
IMAGE_ID=ghcr.io/terradue/app-package-training-bids23/otsu | |
docker build water-bodies/command-line-tools/otsu --file water-bodies/command-line-tools/otsu/Dockerfile --tag otsu | |
docker tag otsu $IMAGE_ID:${{needs.version.outputs.app-version}} | |
docker push $IMAGE_ID:${{needs.version.outputs.app-version}} | |
container-stac: | |
needs: version | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- run: echo version ${{needs.version.outputs.app-version}} | |
- run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin | |
- name: build & push stac image | |
run: | | |
IMAGE_ID=ghcr.io/terradue/app-package-training-bids23/stac | |
docker build water-bodies/command-line-tools/stac --file water-bodies/command-line-tools/stac/Dockerfile --tag stac | |
docker tag stac $IMAGE_ID:${{needs.version.outputs.app-version}} | |
docker push $IMAGE_ID:${{needs.version.outputs.app-version}} | |
container-stage: | |
needs: version | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- run: echo version ${{needs.version.outputs.app-version}} | |
- run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin | |
- name: build & push stage image | |
run: | | |
IMAGE_ID=ghcr.io/terradue/app-package-training-bids23/stage | |
docker build . --file water-bodies/command-line-tools/stage/Dockerfile --tag stage | |
docker tag stage $IMAGE_ID:${{needs.version.outputs.app-version}} | |
docker push $IMAGE_ID:${{needs.version.outputs.app-version}} | |
publish-artifacts: | |
needs: | |
- container-crop | |
- container-normalized-difference | |
- container-otsu | |
- container-stac | |
- version | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- run: | | |
code_repository=$( cat codemeta.json | jq -r ".codeRepository" ) | |
for step in crop norm_diff otsu stac | |
do | |
tag="ghcr.io/terradue/app-package-training-bids23/${step}:${{needs.version.outputs.app-version}}" | |
docker pull ${tag} | |
shatag=$( docker inspect ${tag} | yq -r '.[0]["RepoDigests"][0]' ) | |
s="${step}" t="${shatag}" yq -i eval '(.$graph[] | select (.id == env(s)) ).hints.DockerRequirement.dockerPull = env(t)' cwl-workflow/app-water-bodies-cloud-native.cwl | |
s="${step}" t="${shatag}" yq -i eval '(.$graph[] | select (.id == env(s)) ).hints.DockerRequirement.dockerPull = env(t)' cwl-workflow/app-water-body-cloud-native.cwl | |
s="${step}" t="${shatag}" yq -i eval '(.$graph[] | select (.id == env(s)) ).hints.DockerRequirement.dockerPull = env(t)' cwl-workflow/app-water-body.cwl | |
r="${code_repository}" yq -i eval '."s:codeRepository" = {"URL" : env(r)}' cwl-workflow/app-water-bodies-cloud-native.cwl | |
r="${code_repository}" yq -i eval '."s:codeRepository" = {"URL" : env(r)}' cwl-workflow/app-water-body-cloud-native.cwl | |
r="${code_repository}" yq -i eval '."s:codeRepository" = {"URL" : env(r)}' cwl-workflow/app-water-body.cwl | |
done | |
- run: mkdir downloads | |
- run: | | |
cp cwl-workflow/app-water-bodies-cloud-native.cwl downloads/app-water-bodies-cloud-native.${{needs.version.outputs.app-version}}.cwl | |
cp cwl-workflow/app-water-body-cloud-native.cwl downloads/app-water-body-cloud-native.${{needs.version.outputs.app-version}}.cwl | |
cp cwl-workflow/app-water-body.cwl downloads/app-water-body.${{needs.version.outputs.app-version}}.cwl | |
- uses: actions/upload-artifact@v2 | |
with: | |
name: application-package | |
path: downloads | |
- name: release | |
uses: actions/create-release@v1 | |
id: create_release | |
with: | |
draft: false | |
prerelease: false | |
release_name: ${{needs.version.outputs.app-version}} | |
tag_name: ${{needs.version.outputs.app-version}} | |
#body_path: CHANGELOG.md | |
env: | |
GITHUB_TOKEN: ${{ github.token }} | |
- name: upload linux artifact 1 | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ github.token }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: downloads/app-water-bodies-cloud-native.${{needs.version.outputs.app-version}}.cwl | |
asset_name: app-water-bodies-cloud-native.${{needs.version.outputs.app-version}}.cwl | |
asset_content_type: text/yaml | |
- name: upload linux artifact 2 | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ github.token }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: downloads/app-water-body-cloud-native.${{needs.version.outputs.app-version}}.cwl | |
asset_name: app-water-body-cloud-native.${{needs.version.outputs.app-version}}.cwl | |
asset_content_type: text/yaml | |
- name: upload linux artifact 3 | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ github.token }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: downloads/app-water-body.${{needs.version.outputs.app-version}}.cwl | |
asset_name: app-water-body.${{needs.version.outputs.app-version}}.cwl | |
asset_content_type: text/yaml |