Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 21 additions & 3 deletions .github/workflows/build_snap.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ on:
snapcraft-snap-revisions:
description: |
JSON string with type dict[str, str] of architecture to snapcraft snap revision

Example: `{"amd64": "16585", "arm64": "16587"}`
required: false
type: string
Expand Down Expand Up @@ -54,6 +54,17 @@ on:
Timeout in minutes for the build job
default: 30
type: number
sd-build:
description: |
Install the tools for SD build.
default: false
type: boolean
craft_sd_env:
description: |
the env to use to pull artifacts from
This is only used if `sd-build` is true.
default: production
type: string
Comment on lines +62 to +67

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would use the type choice here to limit the available environments.
There are only 3 possible values so let's enforce it.

Suggested change
craft_sd_env:
description: |
the env to use to pull artifacts from
This is only used if `sd-build` is true.
default: production
type: string
craft_sd_env:
description: |
the env to use to pull artifacts from
This is only used if `sd-build` is true.
default: production
type: choice
options:
- prod
- production
- staging

outputs:
artifact-prefix:
description: Snap packages are uploaded to GitHub artifacts beginning with this prefix
Expand Down Expand Up @@ -87,7 +98,7 @@ jobs:
strategy:
matrix:
platform: ${{ fromJSON(needs.collect-platforms.outputs.platforms) }}
name: 'Build snap | ${{ matrix.platform.name }}'
name: "Build snap | ${{ matrix.platform.name }}"
needs:
- collect-platforms
runs-on: ${{ matrix.platform.runner }}
Expand Down Expand Up @@ -140,6 +151,11 @@ jobs:
env:
VAR_LXD_FLAG: ${{ steps.lxd-snap-version.outputs.install_flag }}
VAR_SNAPCRAFT_FLAG: ${{ steps.snapcraft-snap-version.outputs.install_flag }}
- name: Set up SD build environment
if: ${{ inputs.sd-build }}
run: |
sudo snap install craft-sd --channel=latest/beta
sudo snap install bld --edge
- run: snap list
- name: Pack snap
id: pack
Expand All @@ -148,6 +164,8 @@ jobs:
env:
SNAPCRAFT_BUILD_INFO: 1
VAR_PLATFORM: ${{ matrix.platform.name }}
CI: ${{ inputs.sd-build && 1 || '' }}
CRAFT_SD_ENV: ${{ inputs.sd-build && inputs.craft_sd_env || '' }}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit / Non blocking: Although this works, I think this is not easy to understand that it does.
Any idea to make it more understandable ?

- name: Snapcraft logs
if: ${{ success() || (failure() && steps.pack.outcome == 'failure') }}
run: cat ~/.local/state/snapcraft/log/*
Expand All @@ -169,7 +187,7 @@ jobs:
path: |
${{ inputs.path-to-snap-project-directory }}/*.snap
.empty
include-hidden-files: true # For `.empty`
include-hidden-files: true # For `.empty`
if-no-files-found: error
permissions:
contents: read