{"id":16882878,"url":"https://github.com/alhadis/atom-ci","last_synced_at":"2026-05-22T05:02:40.755Z","repository":{"id":78377283,"uuid":"195512157","full_name":"Alhadis/Atom-CI","owner":"Alhadis","description":"Script for setting up Atom projects on continuous integration servers.","archived":false,"fork":false,"pushed_at":"2021-08-20T03:20:00.000Z","size":436,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-25T06:43:32.165Z","etag":null,"topics":["appveyor","atom","continuous-integration","travis-ci"],"latest_commit_sha":null,"homepage":null,"language":"PowerShell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Alhadis.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-07-06T07:40:00.000Z","updated_at":"2021-08-20T03:20:03.000Z","dependencies_parsed_at":"2023-04-09T19:47:33.588Z","dependency_job_id":null,"html_url":"https://github.com/Alhadis/Atom-CI","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alhadis%2FAtom-CI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alhadis%2FAtom-CI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alhadis%2FAtom-CI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alhadis%2FAtom-CI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Alhadis","download_url":"https://codeload.github.com/Alhadis/Atom-CI/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244554520,"owners_count":20471235,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["appveyor","atom","continuous-integration","travis-ci"],"created_at":"2024-10-13T16:08:59.819Z","updated_at":"2026-05-22T05:02:40.735Z","avatar_url":"https://github.com/Alhadis.png","language":"PowerShell","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- -*- tab-width: 4; -*- vim: set ts=4 noet: --\u003e\n\nAtom CI\n=======\n[![Build status: AppVeyor][AppVeyor-badge]][AppVeyor-link]\n[![Build status: GitHub Actions][Actions-badge]][Actions-link]\n[![Build status: Travis CI][TravisCI-badge]][TravisCI-link]\n\nThis is a script for setting up continuous integration with an Atom project.\n\n[![They're collapsible, baby.](preview.png)][Live-example]\n\n\nUsage\n-----\n\n#### [Travis CI][] ####\nAdd the following line to your project's [`.travis.yml`][] file:\n\n~~~yaml\nscript: curl -sL https://git.io/fji1w | sh\n~~~\n\n\n#### [AppVeyor][] ####\nAdd the following lines to your project's [`appveyor.yml`][] file:\n\n~~~yaml\ninstall:\n  - ps: Install-Product node $env:nodejs_version\n\ntest_script:\n  - ps: (New-Object net.WebClient).DownloadString(\"https://git.io/JWdh6\") | iex\n~~~\n\n\n#### [GitHub Actions][] ####\nAdd one or both of the following steps to your project's workflow:\n\n~~~yaml\nsteps:\n  - name:  Run package tests (macOS, Linux)\n    if:    ${{ startsWith(matrix.os, 'macOS') || startsWith(matrix.os, 'Ubuntu') }}\n    run:   curl -sL https://git.io/fji1w | sh\n    shell: sh\n\n  - name:  Run package tests (Windows)\n    if:    ${{ startsWith(matrix.os, 'Windows') }}\n    run:   (New-Object net.WebClient).DownloadString(\"https://git.io/JWdh6\") | iex\n    shell: powershell\n~~~\n\nA more complete workflow example can be found [here](`.github/workflows/ci.yml`).\n\n\nFeatures\n--------\nIt's fundamentally the same as [`atom/ci`][], with the following differences:\n\n1.\t__GitHub's release pages are consulted directly for downloads.__  \n\tThis is a tad bit slower than downloading from [`atom.io`][],\n\tbut it means sudden changes to their infrastructure won't break your build.\n\n2.\t__Arbitrary release channels (`dev`, `nightly`) are unsupported.__  \n\tOnly `stable` and `beta` releases of Atom can be tested against. However, users\n\tcan set `$ATOM_RELEASE` in their environment to build against an arbitrary Atom\n\tversion:\n\t~~~yaml\n\tenv:\n\t  - ATOM_CHANNEL=stable   # Latest stable release (default)\n\t  - ATOM_RELEASE=v1.34.0  # Override ATOM_CHANNEL and test specific version\n\t~~~\n\n3.\t__`lint` or `test` scripts defined in `package.json` are used, if possible.__  \n\tIf your package manifest defines a `lint` or `test` script, the POSIX version\n\tof the CI script will call those instead. For example:\n\t~~~json\n\t{\n\t\t\"scripts\": {\n\t\t\t\"lint\": \"npx eslint --ext mjs,js ./lib/ ./tools\",\n\t\t\t\"test\": \"atom -t ./specs\"\n\t\t}\n\t}\n\t~~~\n\tIf you don't specify a script, the usual defaults assumed by [`atom/ci`][] are\n\tattempted instead:\n\t~~~shell\n\t# Linting\n\tDIRS=\"./lib ./src ./spec ./test\"\n\tnpx coffeelint $DIRS\n\tnpx eslint $DIRS\n\tnpx tslint $DIRS\n\n\t# Testing\n\tDIRS=\"./spec ./specs ./test ./tests\"\n\tatom --test $DIRS\n\t~~~\n\tNote that only linters listed in `devDependencies` will be run, and missing\n\tdirectories will be skipped. However, at least one test directory *must* be\n\tincluded, or else the build will fail.\n\n\nTesting on Ubuntu\n-----------------\nIf you're running builds on Ubuntu, be forewarned that Atom's beta channel may\ngive `dpkg` an archive [it can't unpack](https://github.com/atom/ci/issues/94)\ndue to [a bug](https://askubuntu.com/q/1065231/) with older versions of `dpkg`.\nThe solution is to run builds on Xenial instead of Trusty, which requires that\nyou include `libgconf2-4` as a dependency:\n\n~~~diff\n@@ .travis.yml @@\n addons:\n   apt:\n     packages:\n     - build-essential\n     - fakeroot\n     - git\n+    - libgconf2-4\n     - libsecret-1-dev\n~~~\n\n\nTo-do list\n----------\n* [ ] **Support the `atom-mocha` executable, once it can be run globally**\n* [x] **Support an environment variable for specifying package's root directory**\n* [x] **Test PowerShell version on Linux**\n* [x] **Use GitHub's `[command]` syntax for echoing external commands**\n* [x] **Make POSIX version's `$PATH` tampering consistent with PowerShell's**\n* [x] **Document and dogfood AppVeyor usage**\n\n\nBackground\n--------------------------------------------------------------------------------\nOn July 6th 2019 AEST, Atom's CI script suddenly broke. The culprit was botched\nhandling of a [`curl(1)`](https://curl.haxx.se/docs/manpage.html) request which\nincluded an `Accept` header:\n\n~~~console\n$ curl -L \"https://atom.io/download/mac?channel=${ATOM_CHANNEL}\" \\\n\t-H 'Accept: application/octet-stream' \\\n\t-o \"atom.zip\"\n######################################################################## 100.0%\ncurl: (22) The requested URL returned error: 406 Not Acceptable\n~~~\n\nFollowing the URL simply lead to\nAtom's [releases page](https://github.com/atom/atom/releases/latest) on GitHub.\nI was unsure what the link usually pointed to, but having this break the builds\nof each of my projects was certainly *not* the intended outcome.\n\nSince I'm blocked from the [**@atom**](https://github.com/atom) org on GitHub,\nI was unable to report this or submit a pull-request. So I took things into my\nown hands, as usual.\n\n\n\n\u003c!-- Referenced links --\u003e\n[APIs]: https://developer.github.com/v3/repos/releases/\n[Live-example]:   https://app.travis-ci.com/github/Alhadis/Atom-FormFeeds/jobs/523013011#L80\n[Actions-badge]:  https://img.shields.io/github/workflow/status/Alhadis/Atom-CI/Atom%20CI?label=GitHub%20Actions\u0026logo=github\n[Actions-link]:   https://github.com/Alhadis/Atom-CI/actions\n[AppVeyor-badge]: https://img.shields.io/appveyor/build/Alhadis/Atom-CI?label=AppVeyor\u0026logo=appveyor\u0026logoColor=%23ccc\n[AppVeyor-link]:  https://ci.appveyor.com/project/Alhadis/Atom-CI\n[TravisCI-badge]: https://img.shields.io/travis/com/Alhadis/Atom-CI?label=Travis%20CI\u0026logo=travis\n[TravisCI-link]:  https://travis-ci.com/Alhadis/Atom-CI\n[`appveyor.yml`]: https://www.appveyor.com/docs/appveyor-yml/\n[`.travis.yml`]: https://docs.travis-ci.com/user/tutorial\n[`atom/ci`]: https://github.com/atom/ci\n[`atom.io`]: https://atom.io/\n[Travis CI]: https://travis-ci.com/\n[AppVeyor]: https://appveyor.com/\n[GitHub Actions]: https://docs.github.com/en/actions/reference\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falhadis%2Fatom-ci","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falhadis%2Fatom-ci","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falhadis%2Fatom-ci/lists"}