From 41ee131e62a39b6aa7c40b08c0d0e80324fe336b Mon Sep 17 00:00:00 2001
From: Jon Seager
Date: Wed, 10 Jan 2024 08:57:22 +0000
Subject: [PATCH 1/5] ci: update to use latest CI patterns
---
.github/dependabot.yml | 7 ++
.github/workflows/build-prs.yml | 27 -------
.github/workflows/promote-to-stable.yml | 25 +++++++
.github/workflows/pull-request.yml | 17 +++++
.github/workflows/release-to-candidate.yaml | 72 +++++++++++++++++++
.../workflows/sync-version-with-upstream.yml | 27 +++++++
6 files changed, 148 insertions(+), 27 deletions(-)
create mode 100644 .github/dependabot.yml
delete mode 100644 .github/workflows/build-prs.yml
create mode 100644 .github/workflows/promote-to-stable.yml
create mode 100644 .github/workflows/pull-request.yml
create mode 100644 .github/workflows/release-to-candidate.yaml
create mode 100644 .github/workflows/sync-version-with-upstream.yml
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 0000000..169e893
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,7 @@
+version: 2
+updates:
+ - package-ecosystem: "github-actions"
+ directory: "/"
+ schedule:
+ # Check for updates to GitHub Actions every month
+ interval: "monthly"
diff --git a/.github/workflows/build-prs.yml b/.github/workflows/build-prs.yml
deleted file mode 100644
index 40ef8fd..0000000
--- a/.github/workflows/build-prs.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-name: Build Pull Requests
-
-on:
-- pull_request
-
-jobs:
- snapcraft-build:
- runs-on: ubuntu-latest
- strategy:
- matrix:
- architecture:
- - amd64
- # - armhf
- - arm64
- steps:
- - uses: actions/checkout@v2
- - uses: docker/setup-qemu-action@v1
- with:
- image: tonistiigi/binfmt@sha256:df15403e06a03c2f461c1f7938b171fda34a5849eb63a70e2a2109ed5a778bde
- - uses: diddlesnaps/snapcraft-multiarch-action@v1
- id: build
- with:
- architecture: ${{ matrix.architecture }}
- - uses: diddlesnaps/snapcraft-review-tools-action@v1
- with:
- snap: ${{ steps.build.outputs.snap }}
- slots: ./snap/local/slots-declaration.json
diff --git a/.github/workflows/promote-to-stable.yml b/.github/workflows/promote-to-stable.yml
new file mode 100644
index 0000000..f38b063
--- /dev/null
+++ b/.github/workflows/promote-to-stable.yml
@@ -0,0 +1,25 @@
+name: Promote
+
+on:
+ issue_comment:
+ types:
+ - created
+
+permissions:
+ issues: write
+
+jobs:
+ promote:
+ name: โฌ๏ธ Promote to stable
+ environment: "Candidate Branch"
+ runs-on: ubuntu-latest
+ if: |
+ ( !github.event.issue.pull_request )
+ && contains(github.event.comment.body, '/promote ')
+ && contains(github.event.*.labels.*.name, 'testing')
+ steps:
+ - name: โฌ๏ธ Promote to stable
+ uses: snapcrafters/ci/promote-to-stable@main
+ with:
+ github-token: ${{ secrets.GITHUB_TOKEN }}
+ store-token: ${{ secrets.SNAP_STORE_STABLE }}
diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml
new file mode 100644
index 0000000..48d1faf
--- /dev/null
+++ b/.github/workflows/pull-request.yml
@@ -0,0 +1,17 @@
+name: Pull Request
+
+on:
+ pull_request:
+ branches: [ "**" ]
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+jobs:
+ build:
+ name: ๐งช Build snap on amd64
+ runs-on: ubuntu-latest
+ steps:
+ - name: ๐งช Build snap on amd64
+ uses: snapcrafters/ci/test-snap-build@main
diff --git a/.github/workflows/release-to-candidate.yaml b/.github/workflows/release-to-candidate.yaml
new file mode 100644
index 0000000..6409492
--- /dev/null
+++ b/.github/workflows/release-to-candidate.yaml
@@ -0,0 +1,72 @@
+name: Release
+
+on:
+ # Run the workflow each time new commits are pushed to the candidate branch.
+ push:
+ branches: [ "candidate" ]
+ workflow_dispatch:
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+ issues: write
+
+jobs:
+ get-architectures:
+ name: ๐ฅ Get snap architectures
+ runs-on: ubuntu-latest
+ outputs:
+ architectures: ${{ steps.get-architectures.outputs.architectures }}
+ architectures-list: ${{ steps.get-architectures.outputs.architectures-list }}
+ steps:
+ - name: ๐ฅ Get snap architectures
+ id: get-architectures
+ uses: snapcrafters/ci/get-architectures@main
+
+ release:
+ name: ๐ข Release to latest/candidate
+ needs: get-architectures
+ runs-on: ubuntu-latest
+ environment: "Candidate Branch"
+ strategy:
+ matrix:
+ architecture: ${{ fromJSON(needs.get-architectures.outputs.architectures-list) }}
+ steps:
+ - name: ๐ข Release to latest/candidate
+ uses: snapcrafters/ci/release-to-candidate@main
+ with:
+ architecture: ${{ matrix.architecture }}
+ launchpad-token: ${{ secrets.LP_BUILD_SECRET }}
+ repo-token: ${{ secrets.SNAPCRAFTERS_BOT_COMMIT }}
+ store-token: ${{ secrets.SNAP_STORE_CANDIDATE }}
+
+ call-for-testing:
+ name: ๐ฃ Create call for testing
+ needs: [release, get-architectures]
+ environment: "Candidate Branch"
+ runs-on: ubuntu-latest
+ outputs:
+ issue-number: ${{ steps.issue.outputs.issue-number }}
+ steps:
+ - name: ๐ฃ Create call for testing
+ id: issue
+ uses: snapcrafters/ci/call-for-testing@main
+ with:
+ architectures: ${{ needs.get-architectures.outputs.architectures }}
+ github-token: ${{ secrets.GITHUB_TOKEN }}
+
+ screenshots:
+ name: ๐ธ Gather screenshots
+ needs: call-for-testing
+ environment: "Candidate Branch"
+ runs-on: ubuntu-latest
+ steps:
+ - name: ๐ธ Gather screenshots
+ uses: snapcrafters/ci/get-screenshots@main
+ with:
+ issue-number: ${{ needs.call-for-testing.outputs.issue-number }}
+ github-token: ${{ secrets.GITHUB_TOKEN }}
+ screenshots-token: ${{ secrets.SNAPCRAFTERS_BOT_COMMIT }}
diff --git a/.github/workflows/sync-version-with-upstream.yml b/.github/workflows/sync-version-with-upstream.yml
new file mode 100644
index 0000000..a692c98
--- /dev/null
+++ b/.github/workflows/sync-version-with-upstream.yml
@@ -0,0 +1,27 @@
+name: Update
+
+on:
+ # Runs at 10:00 UTC every day
+ schedule:
+ - cron: '0 10 * * *'
+ # Allows you to run this workflow manually from the Actions tab
+ workflow_dispatch:
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+jobs:
+ sync:
+ name: ๐ Sync version with upstream
+ environment: "Candidate Branch"
+ runs-on: ubuntu-latest
+ steps:
+ - name: ๐ Sync version with upstream
+ uses: snapcrafters/ci/sync-version@main
+ with:
+ token: ${{ secrets.SNAPCRAFTERS_BOT_COMMIT }}
+ update-script: |
+ VERSION=$(curl -s https://www.gimp.org/ | grep -Po "span id='ver'>\K[^<]+")
+ sed -i 's/^\(version: \).*$/\1'"$VERSION"'/' snap/snapcraft.yaml
+
From 7aceb0521d10876e99eeab9b33e1e361fee203df Mon Sep 17 00:00:00 2001
From: Jon Seager
Date: Wed, 10 Jan 2024 08:57:35 +0000
Subject: [PATCH 2/5] docs: update README to follow latest template, add badges
---
README.md | 121 ++++++++++++++++++++++++++++++------------------------
1 file changed, 68 insertions(+), 53 deletions(-)
diff --git a/README.md b/README.md
index 144e3ad..fcc239b 100644
--- a/README.md
+++ b/README.md
@@ -8,65 +8,80 @@
distributions.
-
+
+
+
+
## Install
- sudo snap install gimp
+```shell
+snap install gimp
+```
([Don't have snapd installed?](https://snapcraft.io/docs/core/install))
-
-
Published for
with :gift_heart: by Snapcrafters
-## Remaining tasks
-
-Snapcrafters ([join us](https://forum.snapcraft.io/t/join-snapcrafters/1325))
-are working to land snap install documentation and
-the [snapcraft.yaml](https://github.com/snapcrafters/fork-and-rename-me/blob/master/snap/snapcraft.yaml)
-upstream so GIMP can authoritatively publish future releases.
-
- - [x] Fork the [Snapcrafters template](https://github.com/snapcrafters/fork-and-rename-me) repository to your own GitHub account.
- - If you have already forked the Snapcrafter template to your account and want to create another snap, you'll need to use GitHub's [Import repository](https://github.com/new/import) feature because you can only fork a repository once.
- - [x] Rename the forked Snapcrafters template repository
- - [x] Update logos and references to `[Project]` and `[my-snap-name]`
- - [x] Create a snap that runs in `devmode`
- - [x] Register the snap in the store, **using the preferred upstream name**
- - [x] Add a screenshot to this `README.md`
- - [x] Publish the `devmode` snap in the Snap store edge channel
- - [x] Add install instructions to this `README.md`
- - [x] Update snap store metadata, icons and screenshots
- - [x] Convert the snap to `strict` confinement, or `classic` confinement if it qualifies
- - [x] Publish the confined snap in the Snap store beta channel
- - [x] Update the install instructions in this `README.md`
- - [x] Post a call for testing on the [Snapcraft Forum](https://forum.snapcraft.io) - [link](https://forum.snapcraft.io/t/call-for-testing-gimp/1281)
- - [x] Ask a [Snapcrafters admin](https://github.com/orgs/snapcrafters/people?query=%20role%3Aowner) to fork your repo into github.com/snapcrafters, transfer the snap name from you to snapcrafters, and configure the repo for automatic publishing into edge on commit
- - [x] Add the provided Snapcraft build badge to this `README.md`
- - [x] Publish the snap in the Snap store stable channel
- - [x] Update the install instructions in this `README.md`
- - [x] Post an announcement in the [Snapcraft Forum](https://forum.snapcraft.io) - [link](https://forum.snapcraft.io/t/gimp-snap-pushed-to-stable-channel/1619)
- - [ ] Submit a pull request or patch upstream that adds snap install documentation - [link]()
- - [ ] Submit a pull request or patch upstream that adds the `snapcraft.yaml` and any required assets/launchers - [link]()
- - [ ] Add upstream contact information to the `README.md`
- - If upstream accept the PR:
- - [ ] Request upstream create a Snap store account
- - [ ] Contact the Snap Advocacy team to request the snap be transferred to upstream
- - [ ] Ask the Snap Advocacy team to celebrate the snap - [link]()
-
-If you have any questions, [post in the Snapcraft forum](https://forum.snapcraft.io).
-
-## The Snapcrafters
-
-| [](https://github.com/diddledani/) |
-| :---: |
-| [Dani Llewellyn](https://github.com/diddledani/) |
-
-
+## How to contribute to this snap
+
+Thanks for your interest! Below you find instructions to help you contribute to this snap.
+
+The general workflow is to submit pull requests that merges your changes into the `candidate` branch here on GitHub. Once the pull request has been merged, a GitHub action will automatically build the snap and publish it to the `candidate` channel in the Snap Store. Once the snap has been tested thoroughly, we promote it to the `stable` channel so all our users get it!
+
+### Initial setup
+
+If this is your first time contributing to this snap, you first need to set up your own fork of this repository.
+
+1. [Fork the repository](https://docs.github.com/en/github/getting-started-with-github/fork-a-repo) into your own GitHub namespace.
+2. [Clone your fork](https://git-scm.com/book/en/v2/Git-Basics-Getting-a-Git-Repository), so that you have it on your local computer.
+3. Configure your local repo. To make things a bit more intuitive, we will rename your fork's remote to `myfork`, and add the snapcrafters repo as `snapcrafters`.
+
+ ```shell
+ git remote rename origin myfork
+ git remote add snapcrafters https://github.com/snapcrafters/gimp.git
+ git fetch --all
+ ```
+
+### Submitting changes in a pull request
+
+Once you're all setup for contributing, keep in mind that you want the git information to be all up-to-date. So if you haven't "fetched" all changes in a while, start with that:
+
+```shell
+git fetch --all -p
+```
+
+Now that your git metadata has been updated you are ready to create a bugfix branch, make your changes, and open a pull request.
+
+1. All pull requests should go to the stable branch so create your branch as a copy of the stable branch:
+
+ ```shell
+ git checkout -b my-bugfix-branch snapcrafters/candidate
+ ```
+
+2. Make your desired changes and build a snap locally for testing:
+
+ ```shell
+ snapcraft --use-lxd
+ ```
+
+3. After you are happy with your changes, commit them and push them to your fork so they are available on GitHub:
+
+ ```shell
+ git commit -a
+ git push -u myfork my-bugfix-branch
+ ```
+
+4. Then, [open up a pull request](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/about-pull-requests) from your `my-bugfix-branch` to the `snapcrafters/candidate` branch.
+5. Once you've opened the pull request, it will automatically trigger the build-test action that will launch a build of the snap. You can watch the progress of the snap build from your pull request (Show all checks -> Details). Once the snap build has completed, you can find the built snap (to test with) under "Artifacts".
+6. Someone from the team will review the open pull request and either merge it or start a discussion with you with additional changes or clarification needed.
+7. Once the pull request has been merged into the stable branch, a GitHub action will rebuild the snap using your changes and publish it to the [Snap Store](https://snapcraft.io/gimp) into the `candidate` channel. After sufficient testing of the snap from the candidate channel, one of the maintainers or administrators will promote the snap to the stable branch in the Snap Store.
+
+## Maintainers
+
+- [@lucyllewy](https://github.com/lucyllewy/)
+
+## License
+
+- The license of both the build files in this repository is [MIT](https://github.com/snapcrafters/gimp/blob/main/LICENSE)
From ef3de91ff9ae3c2c6c525b6e6e14ae1ae0ff8c15 Mon Sep 17 00:00:00 2001
From: Jon Seager
Date: Wed, 10 Jan 2024 09:43:46 +0000
Subject: [PATCH 3/5] chore: cleanup old build trigger file
---
.build-trigger.txt | 20 --------------------
1 file changed, 20 deletions(-)
delete mode 100644 .build-trigger.txt
diff --git a/.build-trigger.txt b/.build-trigger.txt
deleted file mode 100644
index 7ec0e34..0000000
--- a/.build-trigger.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-2018-07-16-09:48:50
-2018-08-07-09:01:15
-2018-08-16-11:10:44
-2018-08-31-08:12:32
-2018-09-17-08:07:57
-2018-09-20-06:37:41
-2018-09-20-10:23:19
-2018-09-21-06:44:42
-2018-10-09-07:40:53
-2018-11-01-09:49:25
-2018-12-07-10:44:12
-2019-02-02-10:09:08
-2019-05-23-08:14:29
-2019-06-20-08:37:04
-2020-08-28-09:47:14
-2020-09-03-09:51:36
-2020-09-18-09:50:36
-2020-12-04-09:35:58
-2020-12-09-10:24:33
-2021-02-26-08:47:58
From c2204b1c5e988be9533559220966aa6528da312b Mon Sep 17 00:00:00 2001
From: Jon Seager
Date: Wed, 10 Jan 2024 09:44:01 +0000
Subject: [PATCH 4/5] ci: move slot declaration file to a standard location
---
.../local/slots-declaration.json => .github/slot-declaration.json | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename snap/local/slots-declaration.json => .github/slot-declaration.json (100%)
diff --git a/snap/local/slots-declaration.json b/.github/slot-declaration.json
similarity index 100%
rename from snap/local/slots-declaration.json
rename to .github/slot-declaration.json
From 037bd489457b122b7d8e13e64d449d6b911977e4 Mon Sep 17 00:00:00 2001
From: Jon Seager
Date: Wed, 10 Jan 2024 10:24:17 +0000
Subject: [PATCH 5/5] chore: git ignore remote-build logs
[skip ci]
---
.gitignore | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/.gitignore b/.gitignore
index bf52e32..7c78cb5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,4 +7,7 @@ prime
__pycache__
*.pyc
-.bzr
\ No newline at end of file
+.bzr
+
+# Snapcraft remote-build logs
+gimp_*.txt
\ No newline at end of file